src/proto2/NetworkNode.cc
branchno-netsession
changeset 37 ed2957490bbf
parent 36 785d220fc6b7
child 38 4189b8bf3a5b
equal deleted inserted replaced
36:785d220fc6b7 37:ed2957490bbf
       
     1 
       
     2 #include <cassert>
     1 
     3 
     2 #include "NetworkNode.hh"
     4 #include "NetworkNode.hh"
     3 
     5 
     4 NetworkNode::NetworkNode (NetworkSession &session, NetworkTCPTransport *tcp, NetworkUDP &udp, const NetworkAddress &address) :
     6 NetworkNode::NetworkNode (NetworkSession &session, NetworkTCPTransport *tcp, NetworkUDP *udp, const NetworkAddress &address) :
     5     session(session), tcp(tcp), udp(udp), address(address) {
     7     session(session), tcp(tcp), udp(udp), address(address) {
     6     
     8     
     7     // connect signals
     9     // connect signals
     8     slots.connect(tcp->sig_disconnect(), this, &NetworkNode::on_disconnect);
    10     slots.connect(tcp->sig_disconnect(), this, &NetworkNode::on_disconnect);
     9     
    11     
    11 
    13 
    12 NetworkNode::~NetworkNode (void) {
    14 NetworkNode::~NetworkNode (void) {
    13     delete tcp;
    15     delete tcp;
    14 }
    16 }
    15 
    17 
    16 void on_disconnect (void) {
    18 void NetworkNode::on_disconnect (void) {
    17     // tell session
    19     // tell session
    18     session.handle_disconnect(this);
    20     session.handle_disconnect(this);
    19 
    21 
    20     // fire signal
    22     // fire signal
    21     _sig_disconnected();
    23     _sig_disconnected();
    22     
    24     
    23     // delete
    25     // delete
    24     delete this;
    26     delete this;
    25 }
    27 }
    26 
    28 
    27 void NetworkNode::send (NetworkChannelID channel_id, const NetworkPacket &pkt, bool reliable = true) {
    29 void NetworkNode::send (NetworkChannelID channel_id, const NetworkPacket &pkt, bool reliable) {
    28     assert(channel_id > 0);
    30     assert(channel_id > 0);
    29     
    31     
    30     // add our header
    32     // add our header
    31     NetworkPacket pkt2;
    33     NetworkPacket pkt2;
    32     pkt2.write_uint16(channel_id);
    34     pkt2.write_uint16(channel_id);
    37         assert(tcp);
    39         assert(tcp);
    38 
    40 
    39         tcp->write_packet(pkt2);
    41         tcp->write_packet(pkt2);
    40 
    42 
    41     } else {
    43     } else {
    42         udp.sendto(pkt2, address);
    44         udp->sendto(pkt2, address);
    43     }
    45     }
    44 }
    46 }
    45         
    47         
    46 const NetworkAddress& NetworkNode::getRemoteAddress (void) {
    48 const NetworkAddress& NetworkNode::getRemoteAddress (void) {
    47     return address;
    49     return address;