src/proto2/NetworkObject.cc
branchno-netsession
changeset 36 785d220fc6b7
parent 34 1ea6554d703e
child 37 ed2957490bbf
equal deleted inserted replaced
35:e21cfda0edde 36:785d220fc6b7
     6     
     6     
     7     // setup signals
     7     // setup signals
     8     slot_message = session.sig_chan_message(channel_id).connect(this, &NetworkObjectController::on_message);
     8     slot_message = session.sig_chan_message(channel_id).connect(this, &NetworkObjectController::on_message);
     9 }
     9 }
    10 
    10 
    11 
    11 void NetworkObjectController::on_message (NetworkPacket &pkt, NetworkNode *node) {
    12 void NetworkObjectController::on_message (const NetworkPacket &pkt, NetworkNode *node) {
       
    13     uint32_t obj_id = pkt.read_uint32();
    12     uint32_t obj_id = pkt.read_uint32();
    14     uint16_t msg_id = pkt.read_uint16();
    13     uint16_t msg_id = pkt.read_uint16();
    15     
    14     
    16     // lookup object
    15     // lookup object
    17     NetworkObject *obj = objects[obj_id];
    16     NetworkObject *obj = objects[obj_id];
    31 
    30 
    32 NetworkObjectID NetworkObject_ServerController::getObjectID (void) {
    31 NetworkObjectID NetworkObject_ServerController::getObjectID (void) {
    33     return ++id_pool;
    32     return ++id_pool;
    34 }
    33 }
    35         
    34         
    36 void NetworkObject_ServerController::handle_create (NetworkObjectID obj_id, NetworkMessageID msg_id, const NetworkPacket &pkt, NetworkNode *node) {
    35 void NetworkObject_ServerController::handle_create (NetworkObjectID obj_id, NetworkMessageID msg_id, NetworkPacket &pkt, NetworkNode *node) {
    37     // XXX: fail
    36     // XXX: fail
    38     throw CL_Error("clients cannot create objects");
    37     throw CL_Error("clients cannot create objects");
    39 }
    38 }
    40         
    39         
    41 NetworkObject_ClientController::NetworkObject_ClientController (NetworkSession &session, NetworkChannelID channel_id, NetworkNode *server) :
    40 NetworkObject_ClientController::NetworkObject_ClientController (NetworkSession &session, NetworkChannelID channel_id, NetworkNode *server) :
    42     NetworkObjectController(session, channel_id), server(server) {
    41     NetworkObjectController(session, channel_id), server(server) {
    43 
    42 
    44 
    43 
    45 }
    44 }
    46         
    45         
    47 void NetworkObject_ClientController::handle_create (NetworkObjectID obj_id, NetworkMessageID msg_id, const NetworkPacket &pkt, NetworkNode *node) {
    46 void NetworkObject_ClientController::handle_create (NetworkObjectID obj_id, NetworkMessageID msg_id, NetworkPacket &pkt, NetworkNode *node) {
       
    47     // we only communicate with the server
    48     assert(node == server);
    48     assert(node == server);
    49     
    49     
    50     // create new object
    50     // create new object
    51     NetworkObject_Client *obj = new NetworkObject_Client(*this, node, obj_id);
    51     NetworkObject_Client *obj = new NetworkObject_Client(*this, node, obj_id);
    52     
    52     
    96 void NetworkObject_Client::send (NetworkMessageID msg_id, const NetworkPacket &pkt, bool reliable) {
    96 void NetworkObject_Client::send (NetworkMessageID msg_id, const NetworkPacket &pkt, bool reliable) {
    97     NetworkPacket pkt;
    97     NetworkPacket pkt;
    98 
    98 
    99     buildPacket(pkt, msg_id, pkt);
    99     buildPacket(pkt, msg_id, pkt);
   100 
   100 
   101     node->send(controller.channel_id, pkt, reliable);
   101     controller.server->send(controller.channel_id, pkt, reliable);
   102 }
   102 }
   103 
   103