/[anoncvs]/projects/dispense2/sql-edition/servers/VendingMachine.py


UCC Code Repository

Diff of /projects/dispense2/sql-edition/servers/VendingMachine.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by dagobah, Fri Jun 25 16:40:56 2004 UTC revision 1.3 by dagobah, Sat Jun 26 09:38:39 2004 UTC
# Line 36  class VendingMachine: Line 36  class VendingMachine:
36                  s = ''                  s = ''
37                  while True:                  while True:
38                          s = self.rfh.read(1)                          s = self.rfh.read(1)
39                          if s == '': raise Exception                          if s == '': raise Exception('nothing read!')
40                          if s == '\n' or s == '\r':                          if s == '\n' or s == '\r':
41                                  state = 1                                  state = 1
42                                  prefix = ''                                  prefix = ''
# Line 49  class VendingMachine: Line 49  class VendingMachine:
49                                          self.challenge = int(prefix, 16)                                          self.challenge = int(prefix, 16)
50                                          return                                          return
51    
52          def get_response(self):          def get_response(self, async = False):
53                  self.wfh.flush()                  self.wfh.flush()
54                  while True:                  while True:
55                          s = ''                          s = ''
# Line 61  class VendingMachine: Line 61  class VendingMachine:
61                          text = s[4:]                          text = s[4:]
62                          if code in asynchronous_responses:                          if code in asynchronous_responses:
63                                  self.handle_event(code, text)                                  self.handle_event(code, text)
64                                    if async: return None
65                          else:                          else:
66                                  self.await_prompt()                                  self.await_prompt()
67                                  return (code, text)                                  return (code, text)
# Line 147  class VendingMachine: Line 148  class VendingMachine:
148                  return None                  return None
149    
150          def wait_for_events(self, timeout = None):          def wait_for_events(self, timeout = None):
151                    if self.events: return True
152                  (r, _, _) = select([self.rfh], [], [], timeout)                  (r, _, _) = select([self.rfh], [], [], timeout)
153                  if not r: return False                  if not r: return False
154                  event_added = False                  event_added = False
155                  while True:                  while True:
156                      r.get_response()                      self.get_response(async = True)
157                      (r, _, _) = select([self.rfh], [], [], 0)                      (r, _, _) = select([self.rfh], [], [], 0)
158                      if not r: return event_added                      if not r: return event_added

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

Managed by UCC Webmasters ViewVC Help
Powered by ViewVC 1.1.26