terom@185: terom@185: #include terom@185: terom@186: #include "Node.hh" terom@185: terom@185: NetworkNode::NetworkNode (NetworkSession &session, NetworkTCPTransport *tcp, NetworkUDP *udp, const NetworkAddress &address) : terom@185: session(session), tcp(tcp), udp(udp), address(address) { terom@185: terom@185: // connect signals terom@185: slots.connect(tcp->sig_disconnect(), this, &NetworkNode::on_disconnect); terom@185: slots.connect(tcp->sig_packet(), &session, &NetworkSession::handle_message, this); terom@185: terom@185: } terom@185: terom@185: NetworkNode::~NetworkNode (void) { terom@185: delete tcp; terom@185: } terom@185: terom@185: void NetworkNode::on_disconnect (void) { terom@185: // tell session terom@185: session.handle_disconnect(this); terom@185: terom@185: // fire signal terom@185: _sig_disconnected(); terom@185: terom@185: // delete terom@185: // delete this; terom@185: } terom@185: terom@431: void NetworkNode::send_pkt (const NetworkPacketBuffer &pkt, bool reliable) { terom@202: // either tcp or udp terom@202: if (reliable) { terom@202: assert(tcp); terom@202: terom@202: tcp->write_packet(pkt); terom@202: terom@202: } else { terom@202: udp->sendto(pkt, address); terom@202: } terom@202: terom@202: } terom@185: terom@185: const NetworkAddress& NetworkNode::getRemoteAddress (void) { terom@185: return address; terom@185: }