8 import socketserver
as SocketServer
12 TCP Socket server for rosbridge.
13 An instance of this class is created for each request.
20 client_count_pub =
None
23 incoming_buffer = 65536
27 fragment_timeout = 600
29 delay_between_messages = 0
30 max_message_size =
None
31 unregister_timeout = 10.0
32 bson_only_mode =
False
36 Called before the handle() method to perform any initialization
37 actions required. The default implementation does nothing.
56 except Exception
as exc:
57 rospy.logerr(
"Unable to accept incoming connection. Reason: %s", str(exc))
64 packet = self.request.recv(n - len(data))
72 BSON_LENGTH_IN_BYTES = 4
73 raw_msglen = self.
recvall(BSON_LENGTH_IN_BYTES)
76 msglen = struct.unpack(
'i', raw_msglen)[0]
79 data = self.
recvall(msglen - BSON_LENGTH_IN_BYTES)
82 data = raw_msglen + data
94 Listen for TCP messages and do all the work to service a request.
112 string_encoded = bytes.decode().strip()
113 if len(string_encoded) > 0:
114 self.
protocol.incoming(string_encoded)
116 except Exception
as e:
118 self.
protocol.log(
"debug",
"socket connection timed out! (ignore warning if client is only listening..)")
122 Called when TCP connection finishes.
123 Called after the handle() method to perform any clean-up actions required.
124 If setup() raises an exception, this function will not be called.
135 Callback from rosbridge
138 self.request.sendall(message)
139 elif message
is not None:
140 self.request.sendall(message.encode())
142 rospy.logerr(
"send_message called with no message or message is None, not sending")