src/proto2/NetworkServer.cc
changeset 14 22e3bfb6720d
parent 13 3fbb927c6a27
child 15 7710cce889b2
equal deleted inserted replaced
13:3fbb927c6a27 14:22e3bfb6720d
     1 #include "NetworkServer.hh"
     1 #include "NetworkServer.hh"
     2 
     2 
     3 #include <iostream>
     3 #include <iostream>
       
     4 #include <cassert>
     4 
     5 
     5 NetworkServer::NetworkServer (GameState *state, const CL_IPAddress &listen_ip) : NetworkBase(), state(state) {
     6 NetworkServer::NetworkServer (GameState *state, const CL_IPAddress &listen_ip) : NetworkBase(), state(state) {
     6 	socket.bind(listen_ip);
     7 	socket.bind(listen_ip);
     7 	socket.listen(NETWORK_SERVER_BACKLOG);
       
     8 	
     8 	
     9 	// add socket to listener
     9 	// add socket to listener
    10 	listener.add_trigger(socket.get_read_trigger());
    10 	listener.add_trigger(socket.get_read_trigger());
    11 
    11 
    12 	// bind slot for recv
    12 	// bind slot for recv
    24 	bool isRunning = true;
    24 	bool isRunning = true;
    25 
    25 
    26 	while (isRunning) {
    26 	while (isRunning) {
    27 		/* XXX: all I need to do? */
    27 		/* XXX: all I need to do? */
    28 		listener.wait();
    28 		listener.wait();
       
    29 		CL_System::keep_alive();
    29 		listener.reset_all();
    30 		listener.reset_all();
    30 	}
    31 	}
    31 }
    32 }
    32 
    33 
    33 void NetworkServer::_onRecv (void) {
    34 void NetworkServer::_onRecv (void) {
    34 	char buf[NETWORK_PACKET_MAX];
    35 	char buf[NETWORK_PACKET_MAX];
    35 	CL_IPAddress src;
    36 	CL_IPAddress src;
    36 	int ret;
    37 	int ret;
    37 
    38 
       
    39 	std::cout << "NetworkServer::_onRecv: recv" << std::endl;
       
    40 
    38 	ret = socket.recv((void*) buf, NETWORK_PACKET_MAX, src);
    41 	ret = socket.recv((void*) buf, NETWORK_PACKET_MAX, src);
    39 	
    42 
    40 	std::cout << src.get_address() << ":" << src.get_port() << " <- " << std::string(buf, NETWORK_PACKET_MAX) << std::endl;
    43 	assert(ret > 0);
       
    44 
       
    45 	std::cout << src.get_address() << ":" << src.get_port() << " <- " << std::string(buf, ret) << std::endl;
    41 }
    46 }
    42 		
    47 		
    43 NetworkServerClient::NetworkServerClient (NetworkServer &server) : server(server) {
    48 NetworkServerClient::NetworkServerClient (NetworkServer &server) : server(server) {
    44 	
    49 	
    45 }
    50 }
    46 		
    51 		
    47 void runNetworkServer (void) {
    52 void runNetworkServer (void) {
    48 	NetworkServer *server = NULL;
    53 	NetworkServer *server = NULL;
    49 
    54 	
    50 	server = NetworkServer::newServer();
    55 	try {
    51 	server->run();
    56 		server = NetworkServer::newServer();
       
    57 		server->run();
       
    58 	} catch (CL_Error &e) {
       
    59 		std::cerr << "runNetworkServer: CL_Error: " << e.message << std::endl;
       
    60 	}
    52 }
    61 }
    53 
    62 
    54 int main (int argc, char **argv) {
    63 int main (int argc, char **argv) {
    55 	// setup ClanLib components
    64 	// setup ClanLib components
    56 	CL_SetupCore setup_core;
    65 	CL_SetupCore setup_core;