#include "NetworkServer.hh"
#include <iostream>
NetworkServer::NetworkServer (GameState &state, const CL_IPAddress &listen_ip) : NetworkBase(), state(state) {
socket.bind(listen_ip);
socket.listen(NETWORK_SERVER_BACKLOG);
// add socket to listener
listener.add_trigger(socket.get_read_trigger());
// bind slot for recv
slot_on_recv = socket.sig_read_triggered.connect(this, &NetworkServer::_onRecv);
}
static NetworkServer *NetworkServer::newServer (void) {
GameState *state = new GameState(/* XXX */);
CL_IPAddress listen_ip(NETWORK_PORT_STR);
return new NetworkServer(state, listen_ip);
}
void run (void) {
bool isRunning = true;
while (isRunning) {
/* XXX: all I need to do? */
listener.wait();
listener.reset_all();
}
}
void NetworkServer::_onRecv (void) {
char buf[NETWORK_PACKET_MAX];
CL_Socket src;
int ret;
ret = socket.recv(buf, NETWORK_PACKET_MAX, src);
std::cout << src.get_address() << ":" << src.get_port() << " <- " << std::string(buf, NETWORK_PACKET_MAX) << std::endl;
}
NetworkServerClient::NetworkServerClient (NetworkServer &server) : server(server) {
}
void NetworkServerClient::_onRecv (void) {
}
void runNetworkServer (void) {
NetworkServer *server = NULL;
server = NetworkServer::newServer();
server->run();
}
int main (int argc, char **argv) {
runNetworkServer();
return 0;
}