From 48792a076a2483e65b5c41339659b2363a97c81f Mon Sep 17 00:00:00 2001 From: Per Cederqvist <ceder@lysator.liu.se> Date: Tue, 7 Oct 2003 14:02:50 +0000 Subject: [PATCH] (expectable._read): New method, extracted from fill_buffer. (expectable.fill_buffer): Extract the reading to the _read method, so that it can be overridden. (telnet): New class. (telnet.__init__): New method. (telnet._read): New method. (telnet.send): New method. (telnet.fileno): New method. --- pcl_expect.py | 45 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/pcl_expect.py b/pcl_expect.py index d1f3b7c..8c8e90f 100644 --- a/pcl_expect.py +++ b/pcl_expect.py @@ -6,6 +6,7 @@ import re import select import sets import sys +import telnetlib import types # @@ -55,18 +56,25 @@ class expectable: def fileno(self): return self.__fileno + def _read(self): + try: + s = os.read(self.fileno(), 8192) + except OSError, e: + if e.errno == errno.EIO: + debug("got EIO from fd %d" % self.fileno()) + s = "" + else: + raise + if s == "": + debug("got eof from fd %d" % self.fileno()) + return "", True + else: + return s, False + def fill_buffer(self): if not self.__eof_seen: - try: - s = os.read(self.fileno(), 8192) - except OSError, e: - if e.errno == errno.EIO: - debug("got EIO from fd %d" % self.fileno()) - s = "" - else: - raise - if s == "": - debug("got eof from fd %d" % self.fileno()) + s, eof = self._read() + if eof: self.__eof_seen = True else: debug("got %d bytes from fd %d" % (len(s), self.fileno())) @@ -143,6 +151,23 @@ class spawn(expectable): os.close(self.__pty) return os.waitpid(self.__child, 0) +class telnet(expectable): + def __init__(self, host, port): + self.telnet = telnetlib.Telnet(host, port) + + def _read(self): + try: + s = self.telnet.read_eager() + except EOFError: + return "", True + return s, False + + def send(self, s): + self.telnet.write(s) + + def fileno(self): + return self.telnet.fileno() + class impl: def __init__(self, timeout = None): self.__first = True -- GitLab