#include "socket.h"
#include "socket_stream.h"
#include "async.h"
#include <iostream>

using namespace std;

int main(int argc, char **argv)
{
	string	buf;
	cout << "Elmo Manager"  << endl;

	try {
		tcp_client_socket	winch(endpoint("localhost",4711));
		tcpstream 			winch_stream(winch);

		tcp_client_socket 	level_wind(endpoint("localhost",4712));
		tcpstream 			level_wind_stream(level_wind);

		cout << "CONNECTED " << winch.my_endpoint() << " to " << winch.peer() << endl;
		cout << "CONNECTED " << level_wind.my_endpoint() << " to " << level_wind.peer() << endl;

		winch_stream << "Hello 1 from Elmo Manager" << endl;
		winch_stream << "Hello 2 from Elmo Manager" << endl;
		winch_stream << "Hello 3 from Elmo Manager" << endl;
		winch_stream << ".";

		level_wind_stream << "Hello 1 from Elmo Manager" << endl;
		level_wind_stream << "Hello 2 from Elmo Manager" << endl;
		level_wind_stream << "Hello 3 from Elmo Manager" << endl;
		level_wind_stream << ".";

		while (winch.recv(buf)>0)
			cout << "Received: >" << buf << endl;

		while (level_wind.recv(buf)>0)
			cout << "Received: >" << buf << endl;
	}
	catch (socket_error_ex& e) {
		cout << "Exception: " << e.what() << endl;
		cout << "Err=" << e.whaterr() << endl;
		cout << "Txt=" << e.whatsystext() << endl;
	}
	catch (socket_error& e) {
		cout << "Exception: " << e.what() << endl;
	}
}
