src/proto2/NetworkObject.cc
changeset 185 25becd2cb026
parent 184 561892e2a30e
child 186 0738f2949a2b
--- a/src/proto2/NetworkObject.cc	Wed Dec 03 18:59:10 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,148 +0,0 @@
-
-#include <cassert>
-
-#include "NetworkObject.hh"
-
-/* 
- * NetworkObject_Controller 
- */
-NetworkObjectController::NetworkObjectController (NetworkSession &session, NetworkChannelID channel_id) :
-    session(session), channel_id(channel_id) {
-    
-    // setup signals
-    slot_message = session.sig_chan_message(channel_id).connect(this, &NetworkObjectController::on_message);
-}
-
-void NetworkObjectController::on_message (NetworkPacket &pkt, NetworkNode *node) {
-    uint32_t obj_id = pkt.read_uint32();
-    uint16_t msg_id = pkt.read_uint16();
-    
-    // lookup object
-    NetworkObject *obj = objects[obj_id];
-
-    if (obj) {
-        obj->handle_packet(node, msg_id, pkt);
-
-    } else {
-        handle_create(obj_id, msg_id, pkt, node);
-    }
-}
-
-/* 
- * NetworkObject_ServerController 
- */
-NetworkObject_ServerController::NetworkObject_ServerController (NetworkSession &session, NetworkChannelID channel_id) :
-    NetworkObjectController(session, channel_id), id_pool(0) {
-
-}
-
-NetworkObjectID NetworkObject_ServerController::getObjectID (void) {
-    return ++id_pool;
-}
-        
-void NetworkObject_ServerController::handle_create (NetworkObjectID obj_id, NetworkMessageID msg_id, NetworkPacket &pkt, NetworkNode *node) {
-    (void) obj_id;
-    (void) msg_id;
-    (void) pkt;
-    (void) node;
-
-    // XXX: fail
-    throw CL_Error("clients cannot create objects");
-}
-        
-/* 
- * NetworkObject_ClientController *
- */
-NetworkObject_ClientController::NetworkObject_ClientController (NetworkSession &session, NetworkChannelID channel_id, NetworkNode *server) :
-    NetworkObjectController(session, channel_id), server(server) {
-
-
-}
-        
-void NetworkObject_ClientController::handle_create (NetworkObjectID obj_id, NetworkMessageID msg_id, NetworkPacket &pkt, NetworkNode *node) {
-    // we only communicate with the server
-    assert(node == server);
-    
-    // create new object
-    NetworkObject_Client *obj = new NetworkObject_Client(*this, obj_id);
-    
-    // signal
-   _sig_create(obj, msg_id, pkt); 
-}
-
-/* 
- * NetworkObject 
- */
-NetworkObject::NetworkObject (NetworkObjectController &controller, NetworkObjectID obj_id) :
-    obj_id(obj_id) {
-    
-    assert(obj_id);
-
-    controller.objects[obj_id] = this;
-}
-        
-void NetworkObject::buildPacket (NetworkPacket &pkt, NetworkMessageID msg_id, const NetworkPacket &payload) {
-    pkt.write_uint32(obj_id);
-    pkt.write_uint16(msg_id);
-    pkt.write_packet(payload);
-}
-
-std::ostream& operator<< (std::ostream &s, const NetworkObject &obj) {
-    return s << "<NetworkObject #" << obj.obj_id << ">";
-}
-
-/* 
- * NetworkObject_Server 
- */
-NetworkObject_Server::NetworkObject_Server (NetworkObject_ServerController &controller) :
-    NetworkObject(controller, controller.getObjectID()), controller(controller) {
-    
-}
-
-void NetworkObject_Server::handle_packet (NetworkNode *node, NetworkMessageID msg_id, NetworkPacket &pkt) {
-    _map_sig_message[msg_id](node, pkt);
-}
-
-void NetworkObject_Server::send_to (NetworkNode *dst, NetworkMessageID msg_id, const NetworkPacket &pkt, bool reliable) {
-    NetworkPacket pkt_out;
-
-    buildPacket(pkt_out, msg_id, pkt);
-
-    dst->send(controller.channel_id, pkt_out, reliable);
-}
-
-void NetworkObject_Server::send_all (NetworkMessageID msg_id, const NetworkPacket &pkt, bool reliable) {
-    send_all_except(msg_id, pkt, NULL, reliable);
-}
-
-void NetworkObject_Server::send_all_except (NetworkMessageID msg_id, const NetworkPacket &pkt, NetworkNode *black_sheep, bool reliable) {
-    NetworkPacket pkt_out;
-
-    buildPacket(pkt_out, msg_id, pkt);
-    
-    controller.session.send_all_except(controller.channel_id, pkt_out, black_sheep, reliable);
-}
- 
-/* 
- * NetworkObject_Client 
- */
-NetworkObject_Client::NetworkObject_Client (NetworkObject_ClientController &controller, NetworkObjectID id) :
-    NetworkObject(controller, id), controller(controller) { 
-    
-    // nothing
-}
-
-void NetworkObject_Client::handle_packet (NetworkNode *node, NetworkMessageID msg_id, NetworkPacket &pkt) {
-    assert(node == controller.server);
-
-    _map_sig_message[msg_id](pkt);
-}
-       
-void NetworkObject_Client::send (NetworkMessageID msg_id, const NetworkPacket &pkt, bool reliable) {
-    NetworkPacket pkt_out;
-
-    buildPacket(pkt_out, msg_id, pkt);
-
-    controller.server->send(controller.channel_id, pkt_out, reliable);
-}
-