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 } |