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; |