Lines Matching refs:self
199 def __init__(self, host=None, port=0,
207 self.debuglevel = DEBUGLEVEL
208 self.host = host
209 self.port = port
210 self.timeout = timeout
211 self.sock = None
212 self.rawq = b''
213 self.irawq = 0
214 self.cookedq = b''
215 self.eof = 0
216 self.iacseq = b'' # Buffer for IAC sequence.
217 self.sb = 0 # flag for SB and SE sequence.
218 self.sbdataq = b''
219 self.option_callback = None
221 self.open(host, port, timeout)
223 def open(self, host, port=0, timeout=socket._GLOBAL_DEFAULT_TIMEOUT):
231 self.eof = 0
234 self.host = host
235 self.port = port
236 self.timeout = timeout
237 sys.audit("telnetlib.Telnet.open", self, host, port)
238 self.sock = socket.create_connection((host, port), timeout)
240 def __del__(self):
242 self.close()
244 def msg(self, msg, *args):
251 if self.debuglevel > 0:
252 print('Telnet(%s,%s):' % (self.host, self.port), end=' ')
258 def set_debuglevel(self, debuglevel):
264 self.debuglevel = debuglevel
266 def close(self):
268 sock = self.sock
269 self.sock = None
270 self.eof = True
271 self.iacseq = b''
272 self.sb = 0
276 def get_socket(self):
278 return self.sock
280 def fileno(self):
282 return self.sock.fileno()
284 def write(self, buffer):
293 sys.audit("telnetlib.Telnet.write", self, buffer)
294 self.msg("send %r", buffer)
295 self.sock.sendall(buffer)
297 def read_until(self, match, timeout=None):
306 self.process_rawq()
307 i = self.cookedq.find(match)
310 buf = self.cookedq[:i]
311 self.cookedq = self.cookedq[i:]
316 selector.register(self, selectors.EVENT_READ)
317 while not self.eof:
319 i = max(0, len(self.cookedq)-n)
320 self.fill_rawq()
321 self.process_rawq()
322 i = self.cookedq.find(match, i)
325 buf = self.cookedq[:i]
326 self.cookedq = self.cookedq[i:]
332 return self.read_very_lazy()
334 def read_all(self):
336 self.process_rawq()
337 while not self.eof:
338 self.fill_rawq()
339 self.process_rawq()
340 buf = self.cookedq
341 self.cookedq = b''
344 def read_some(self):
351 self.process_rawq()
352 while not self.cookedq and not self.eof:
353 self.fill_rawq()
354 self.process_rawq()
355 buf = self.cookedq
356 self.cookedq = b''
359 def read_very_eager(self):
367 self.process_rawq()
368 while not self.eof and self.sock_avail():
369 self.fill_rawq()
370 self.process_rawq()
371 return self.read_very_lazy()
373 def read_eager(self):
381 self.process_rawq()
382 while not self.cookedq and not self.eof and self.sock_avail():
383 self.fill_rawq()
384 self.process_rawq()
385 return self.read_very_lazy()
387 def read_lazy(self):
395 self.process_rawq()
396 return self.read_very_lazy()
398 def read_very_lazy(self):
405 buf = self.cookedq
406 self.cookedq = b''
407 if not buf and self.eof and not self.rawq:
411 def read_sb_data(self):
419 buf = self.sbdataq
420 self.sbdataq = b''
423 def set_option_negotiation_callback(self, callback):
425 self.option_callback = callback
427 def process_rawq(self):
430 Set self.eof when connection is closed. Don't block unless in
436 while self.rawq:
437 c = self.rawq_getchar()
438 if not self.iacseq:
444 buf[self.sb] = buf[self.sb] + c
447 self.iacseq += c
448 elif len(self.iacseq) == 1:
451 self.iacseq += c
454 self.iacseq = b''
456 buf[self.sb] = buf[self.sb] + c
459 self.sb = 1
460 self.sbdataq = b''
462 self.sb = 0
463 self.sbdataq = self.sbdataq + buf[1]
465 if self.option_callback:
468 self.option_callback(self.sock, c, NOOPT)
473 self.msg('IAC %d not recognized' % ord(c))
474 elif len(self.iacseq) == 2:
475 cmd = self.iacseq[1:2]
476 self.iacseq = b''
479 self.msg('IAC %s %d',
481 if self.option_callback:
482 self.option_callback(self.sock, cmd, opt)
484 self.sock.sendall(IAC + WONT + opt)
486 self.msg('IAC %s %d',
488 if self.option_callback:
489 self.option_callback(self.sock, cmd, opt)
491 self.sock.sendall(IAC + DONT + opt)
492 except EOFError: # raised by self.rawq_getchar()
493 self.iacseq = b'' # Reset on EOF
494 self.sb = 0
495 self.cookedq = self.cookedq + buf[0]
496 self.sbdataq = self.sbdataq + buf[1]
498 def rawq_getchar(self):
505 if not self.rawq:
506 self.fill_rawq()
507 if self.eof:
509 c = self.rawq[self.irawq:self.irawq+1]
510 self.irawq = self.irawq + 1
511 if self.irawq >= len(self.rawq):
512 self.rawq = b''
513 self.irawq = 0
516 def fill_rawq(self):
519 Block if no data is immediately available. Set self.eof when
523 if self.irawq >= len(self.rawq):
524 self.rawq = b''
525 self.irawq = 0
528 buf = self.sock.recv(50)
529 self.msg("recv %r", buf)
530 self.eof = (not buf)
531 self.rawq = self.rawq + buf
533 def sock_avail(self):
536 selector.register(self, selectors.EVENT_READ)
539 def interact(self):
542 self.mt_interact()
545 selector.register(self, selectors.EVENT_READ)
550 if key.fileobj is self:
552 text = self.read_eager()
563 self.write(line)
565 def mt_interact(self):
568 _thread.start_new_thread(self.listener, ())
573 self.write(line.encode('ascii'))
575 def listener(self):
579 data = self.read_eager()
588 def expect(self, list, timeout=None):
620 selector.register(self, selectors.EVENT_READ)
621 while not self.eof:
622 self.process_rawq()
624 m = list[i].search(self.cookedq)
627 text = self.cookedq[:e]
628 self.cookedq = self.cookedq[e:]
638 self.fill_rawq()
639 text = self.read_very_lazy()
640 if not text and self.eof:
644 def __enter__(self):
645 return self
647 def __exit__(self, type, value, traceback):
648 self.close()