src/proto2/NetworkSession.cc
branchno-netsession
changeset 34 1ea6554d703e
parent 33 e53f09b378f4
child 36 785d220fc6b7
equal deleted inserted replaced
33:e53f09b378f4 34:1ea6554d703e
    13     // create TCP/UDP servers
    13     // create TCP/UDP servers
    14     tcp_srv = new NetworkTCPServer(addr);
    14     tcp_srv = new NetworkTCPServer(addr);
    15     udp_srv = new NetworkUDP(addr);
    15     udp_srv = new NetworkUDP(addr);
    16     
    16     
    17     // connect signals
    17     // connect signals
    18     slots.connect(tcp->sig_client, this, &NetworkSession::on_tcp_client);
    18     slots.connect(tcp->sig_client(), this, &NetworkSession::on_tcp_client);
    19 }
    19 }
    20         
    20         
    21 NetworkNode* NetworkSession::connect (const NetworkAddress &addr) {
    21 NetworkNode* NetworkSession::connect (const NetworkAddress &addr) {
    22     // create new UDP client if needed
    22     // create new UDP client if needed
    23     if (udp_client == NULL)
    23     if (udp_client == NULL)
    31 
    31 
    32     // add to nodes
    32     // add to nodes
    33     nodes[addr] = client_node;
    33     nodes[addr] = client_node;
    34 
    34 
    35     // bind signals
    35     // bind signals
    36     slots.connect(tcp_client->sig_disconnected, this, &NetworkSession::on_disconnect, client_node);
    36     slots.connect(tcp_client->sig_disconnect(), this, &NetworkSession::on_disconnect, client_node);
    37 }
    37 }
    38         
    38         
    39 void NetworkSession::on_tcp_client (const NetworkTCPTransport *tcp_client) {
    39 void NetworkSession::on_tcp_client (const NetworkTCPTransport *tcp_client) {
    40     // get remote address manually, because NetworkTCPServer doesn't pass it in to us
    40     // get remote address manually, because NetworkTCPServer doesn't pass it in to us
    41     NetworkAddress addr = tcp_client->getRemoteAddress();
    41     NetworkAddress addr = tcp_client->getRemoteAddress();
    45 
    45 
    46     // add to nodes
    46     // add to nodes
    47     nodes[addr] = client_node;
    47     nodes[addr] = client_node;
    48 
    48 
    49     // bind signals
    49     // bind signals
    50     slots.connect(tcp_client->sig_disconnected, this, &NetworkSession::on_disconnect, client_node);
    50     slots.connect(tcp_client->sig_disconnect(), this, &NetworkSession::on_disconnect, client_node);
    51 
    51 
    52     // fire signals
    52     // fire signals
    53     sig_node_connected(node);
    53     _sig_node_connected(node);
    54 }
    54 }
    55         
    55         
    56 void NetworkSession::on_disconnect (NetworkNode *node) {
    56 void NetworkSession::on_disconnect (NetworkNode *node) {
    57     // remove from nodes
    57     // remove from nodes
    58     nodes.erase(node->getRemoteAddress());
    58     nodes.erase(node->getRemoteAddress());
    59 
    59 
    60     // fire signal
    60     // fire signal
    61     sig_node_disconnected(node);
    61     _sig_node_disconnected(node);
    62     
    62     
    63     // delete
    63     // delete
    64     delete node;
    64     delete node;
    65 }
    65 }
    66         
    66