X-Git-Url: https://git.ucc.asn.au/?p=uccvend-vendserver.git;a=blobdiff_plain;f=sql-edition%2Fservers%2FVendingMachine.py;h=d7e7a8f8e1b430e3d984460da5596b10edc654bf;hp=89dd09ef119866bdc770fea96dc591fb365d3e9d;hb=9d8efc1cb0e6feb12340dd9c50dedf32d98c3c1a;hpb=f2651fa924fc99c0304e187cb1adc1ed8b638214 diff --git a/sql-edition/servers/VendingMachine.py b/sql-edition/servers/VendingMachine.py index 89dd09e..d7e7a8f 100644 --- a/sql-edition/servers/VendingMachine.py +++ b/sql-edition/servers/VendingMachine.py @@ -2,6 +2,7 @@ import re from CRC import do_crc from select import select +import socket, logging asynchronous_responses = [ '400', '401', # door open/closed '610', # switches changed @@ -41,9 +42,9 @@ class VendingMachine: try: s = self.rfh.read(1) except socket.error: - print "Blah, seems DEC server has fallen over" raise VendingException('failed to read input from vending machine') if s == '': raise VendingException('nothing read!') + if (s != '#' and s != '%') and state == 1: prefix += s if s == '\n' or s == '\r': state = 1 prefix = '' @@ -63,7 +64,7 @@ class VendingMachine: while s == '': s = self.rfh.readline() if s == '': - raise VendingException('Input socket has closed!') + raise VendingException('Input socket has closed!') s = s.strip('\r\n') code = s[0:3] text = s[4:] @@ -96,7 +97,7 @@ class VendingMachine: elif code[0] == '2': self.events.append((KEY, int(code[1:3]))) else: - sys.stderr.write('WARNING: Unhandled event! (%s %s)\n'%(code,text)) + logging.warning('Unhandled event! (%s %s)\n'%(code,text)) def authed_message(self, message): if self.challenge == None: @@ -114,7 +115,7 @@ class VendingMachine: def vend(self, item): if not re.search('^[0-9][0-9]$', item): return (False, 'Invalid item requested (%s)'%item) - self.wfh.write(self.authed_message(('V%s\n'%item)+'\n')) + self.wfh.write(self.authed_message(('V%s'%item))+'\n') (code, string) = self.get_response() return (code == '100', code, string)