src/proto2/NetworkServer.cc
changeset 5 617813994ab1
child 6 faa4e777cc6e
--- /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;
+}
+