src/proto2/NetworkTCP.cc
branchno-netsession
changeset 34 1ea6554d703e
parent 33 e53f09b378f4
child 37 ed2957490bbf
equal deleted inserted replaced
33:e53f09b378f4 34:1ea6554d703e
   233     NetworkPacket packet;
   233     NetworkPacket packet;
   234     
   234     
   235     // let the in stream read length-prefixed packets and pass them on to handle_packet
   235     // let the in stream read length-prefixed packets and pass them on to handle_packet
   236     while ((prefix = in.read_prefix(packet.get_buf(), packet.get_buf_size)) > 0) {
   236     while ((prefix = in.read_prefix(packet.get_buf(), packet.get_buf_size)) > 0) {
   237         packet.set_data_size(prefix);
   237         packet.set_data_size(prefix);
   238         sig_packet(packet);
   238         _sig_packet(packet);
   239     }
   239     }
   240 }
   240 }
   241 
   241 
   242 void NetworkTCPTransport::on_write (void) {
   242 void NetworkTCPTransport::on_write (void) {
   243     // just flush the output buffer
   243     // just flush the output buffer
   244     out.flush_write();
   244     out.flush_write();
   245 }
   245 }
   246 
   246 
   247 void NetworkTCPTransport::on_disconnected (void) {
   247 void NetworkTCPTransport::on_disconnected (void) {
   248     // pass right through
   248     // pass right through
   249     sig_disconnect();
   249     _sig_disconnect();
   250 }
   250 }
   251         
   251         
   252 NetworkAddress NetworkTCPTransport::getRemoteAddress (void) {
       
   253     return socket.get_dest_address();
       
   254 }
       
   255 
       
   256 void NetworkTCPTransport::write_packet (const NetworkPacket &packet) {
   252 void NetworkTCPTransport::write_packet (const NetworkPacket &packet) {
   257     uint16_t prefix = packet.get_data_size();
   253     uint16_t prefix = packet.get_data_size();
   258     
   254     
   259     if (prefix != packet.get_data_size())
   255     if (prefix != packet.get_data_size())
   260         throw CL_Error("send prefix overflow");
   256         throw CL_Error("send prefix overflow");
   283 
   279 
   284     // create a new NetworkTCPTransport
   280     // create a new NetworkTCPTransport
   285     NetworkTCPTransport *client = buildTransport(client_sock);
   281     NetworkTCPTransport *client = buildTransport(client_sock);
   286         
   282         
   287     // let our user handle it
   283     // let our user handle it
   288     sig_client(client);
   284     _sig_client(client);
   289 }
   285 }
   290         
   286         
   291 virtual NetworkTCPTransport NetworkTCPServer::buildTransport (CL_Socket &socket) {
   287 virtual NetworkTCPTransport NetworkTCPServer::buildTransport (CL_Socket &socket) {
   292     return new NetworkTCPTransport(client_sock);
   288     return new NetworkTCPTransport(client_sock);
   293 }
   289 }