Skip to content
Snippets Groups Projects
Commit 48792a07 authored by Per Cederqvist's avatar Per Cederqvist
Browse files

(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.
parent 56b7b02a
No related branches found
No related tags found
No related merge requests found
...@@ -6,6 +6,7 @@ import re ...@@ -6,6 +6,7 @@ import re
import select import select
import sets import sets
import sys import sys
import telnetlib
import types import types
# #
...@@ -55,18 +56,25 @@ class expectable: ...@@ -55,18 +56,25 @@ class expectable:
def fileno(self): def fileno(self):
return self.__fileno 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): def fill_buffer(self):
if not self.__eof_seen: if not self.__eof_seen:
try: s, eof = self._read()
s = os.read(self.fileno(), 8192) if eof:
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())
self.__eof_seen = True self.__eof_seen = True
else: else:
debug("got %d bytes from fd %d" % (len(s), self.fileno())) debug("got %d bytes from fd %d" % (len(s), self.fileno()))
...@@ -143,6 +151,23 @@ class spawn(expectable): ...@@ -143,6 +151,23 @@ class spawn(expectable):
os.close(self.__pty) os.close(self.__pty)
return os.waitpid(self.__child, 0) 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: class impl:
def __init__(self, timeout = None): def __init__(self, timeout = None):
self.__first = True self.__first = True
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment