--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/proto2/NetworkServer.cc Mon Nov 03 22:59:50 2008 +0000
@@ -0,0 +1,63 @@
+#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;
+}
+