+def read_for_a_bit(rfh):
+ message = ''
+ while 1:
+ r = select([rfh], [], [], 5.0)[0]
+ if r:
+ message = message + rfh.read(1)
+ else:
+ break
+ print "Received message: ", repr(message)
+ return message
+
+def write_expecting_echo(rfh, wfh, message):
+ print "Writing message:", repr(message)
+ while len(message) > 0:
+ wfh.write(message[0])
+ wfh.flush()
+ if message[0] == '\n':
+ echo = rfh.read(2)
+ expected_echo = '\r\n'
+ else:
+ echo = rfh.read(1)
+ expected_echo = message[0]
+ if echo != expected_echo:
+ print "Gah, expected echo when writing", repr(message[0]), "but got", repr(echo)
+ message = message[1:]
+ print " --> Sent and echoed."
+