src/proto2/NetworkNode.cc
author nireco
Tue, 02 Dec 2008 00:23:16 +0000
changeset 174 073f25a84f60
parent 89 825c4613e087
permissions -rw-r--r--
removed bad comment
89
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
     1
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
     2
#include <cassert>
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
     3
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
     4
#include "NetworkNode.hh"
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
     5
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
     6
NetworkNode::NetworkNode (NetworkSession &session, NetworkTCPTransport *tcp, NetworkUDP *udp, const NetworkAddress &address) :
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
     7
    session(session), tcp(tcp), udp(udp), address(address) {
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
     8
    
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
     9
    // connect signals
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    10
    slots.connect(tcp->sig_disconnect(), this, &NetworkNode::on_disconnect);
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    11
    slots.connect(tcp->sig_packet(), &session, &NetworkSession::handle_message, this);
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    12
    
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    13
}
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    14
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    15
NetworkNode::~NetworkNode (void) {
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    16
    delete tcp;
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    17
}
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    18
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    19
void NetworkNode::on_disconnect (void) {
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    20
    // tell session
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    21
    session.handle_disconnect(this);
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    22
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    23
    // fire signal
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    24
    _sig_disconnected();
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    25
    
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    26
    // delete
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    27
//    delete this;
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    28
}
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    29
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    30
void NetworkNode::send (NetworkChannelID channel_id, const NetworkPacket &pkt, bool reliable) {
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    31
    assert(channel_id > 0);
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    32
    
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    33
    // add our header
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    34
    NetworkPacket pkt2;
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    35
    pkt2.write_uint16(channel_id);
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    36
    pkt2.write_packet(pkt);
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    37
    
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    38
    // either tcp or udp
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    39
    if (reliable) {
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    40
        assert(tcp);
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    41
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    42
        tcp->write_packet(pkt2);
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    43
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    44
    } else {
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    45
        udp->sendto(pkt2, address);
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    46
    }
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    47
}
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    48
        
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    49
const NetworkAddress& NetworkNode::getRemoteAddress (void) {
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    50
    return address;
825c4613e087 merge branches/no-netsession@89 into trunk
terom
parents:
diff changeset
    51
}