MCPcopy Index your code
hub / github.com/catchpoint/WebPageTest.tsproxy / TCPConnection

Class TCPConnection

tsproxy.py:225–376  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

223# TCP Client
224########################################################################################################################
225class TCPConnection(asyncore.dispatcher):
226 STATE_ERROR = -1
227 STATE_IDLE = 0
228 STATE_RESOLVING = 1
229 STATE_CONNECTING = 2
230 STATE_CONNECTED = 3
231
232 def __init__(self, client_id):
233 global options
234 asyncore.dispatcher.__init__(self)
235 self.client_id = client_id
236 self.state = self.STATE_IDLE
237 self.buffer = ''
238 self.addr = None
239 self.dns_thread = None
240 self.hostname = None
241 self.port = None
242 self.needs_config = True
243 self.needs_close = False
244 self.did_resolve = False
245
246 def SendMessage(self, type, message):
247 message['message'] = type
248 message['connection'] = self.client_id
249 in_pipe.SendMessage(message)
250
251 def handle_message(self, message):
252 if message['message'] == 'data' and 'data' in message and len(message['data']):
253 self.buffer += message['data']
254 if self.state == self.STATE_CONNECTED:
255 self.handle_write()
256 elif message['message'] == 'resolve':
257 self.HandleResolve(message)
258 elif message['message'] == 'connect':
259 self.HandleConnect(message)
260 elif message['message'] == 'closed':
261 if len(self.buffer) == 0:
262 self.handle_close()
263 else:
264 self.needs_close = True
265
266 def handle_error(self):
267 logging.warning('[{0:d}] Error'.format(self.client_id))
268 if self.state == self.STATE_CONNECTING:
269 self.SendMessage('connected', {'success': False, 'address': self.addr})
270
271 def handle_close(self):
272 global last_client_disconnected
273 logging.info('[{0:d}] Server Connection Closed'.format(self.client_id))
274 self.state = self.STATE_ERROR
275 self.close()
276 try:
277 if self.client_id in connections:
278 if 'server' in connections[self.client_id]:
279 del connections[self.client_id]['server']
280 if 'client' in connections[self.client_id]:
281 self.SendMessage('closed', {})
282 else:

Callers 1

handle_readMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected