Skip to content
Snippets Groups Projects
Commit fddf6573 authored by gpotter2's avatar gpotter2
Browse files

Fix automaton tests

parent 75aa97f1
No related branches found
No related tags found
No related merge requests found
...@@ -26,14 +26,14 @@ class ObjectPipe: ...@@ -26,14 +26,14 @@ class ObjectPipe:
def fileno(self): def fileno(self):
return self.rd return self.rd
def checkRecv(self): def checkRecv(self):
return len(self.queue) != 0 return len(self.queue) > 0
def send(self, obj): def send(self, obj):
self.queue.append(obj) self.queue.append(obj)
os.write(self.wr,"X") os.write(self.wr,"X")
def write(self, obj): def write(self, obj):
self.send(obj) self.send(obj)
def recv(self, n=0): def recv(self, n=0):
os.read(self.rd,1) os.read(self.rd, 1)
return self.queue.popleft() return self.queue.popleft()
def read(self, n=0): def read(self, n=0):
return self.recv(n) return self.recv(n)
...@@ -53,7 +53,6 @@ class _instance_state: ...@@ -53,7 +53,6 @@ class _instance_state:
self.im_class = instance.im_class self.im_class = instance.im_class
def __getattr__(self, attr): def __getattr__(self, attr):
return getattr(self.im_func, attr) return getattr(self.im_func, attr)
def __call__(self, *args, **kargs): def __call__(self, *args, **kargs):
return self.im_func(self.im_self, *args, **kargs) return self.im_func(self.im_self, *args, **kargs)
def breaks(self): def breaks(self):
...@@ -328,15 +327,20 @@ class Automaton_metaclass(type): ...@@ -328,15 +327,20 @@ class Automaton_metaclass(type):
def select_objects(inputs, remain): def select_objects(inputs, remain):
if WINDOWS: if WINDOWS:
r = [] r = []
def look_for_select():
for fd in inputs:
if isinstance(fd, ObjectPipe) or isinstance(fd, Automaton._IO_fdwrapper):
if fd.checkRecv():
r.append(fd)
else:
raise OSError("Not supported type of socket:" + str(type(fd)))
break
def search_select(): def search_select():
while len(r) == 0: while len(r) == 0:
for fd in inputs: look_for_select()
if isinstance(fd, ObjectPipe) or isinstance(fd, Automaton._IO_fdwrapper): if remain == 0:
if fd.checkRecv(): look_for_select()
r.append(fd) return r
else:
raise OSError("Not supported type of socket:" + str(type(fd)))
break
t_select = threading.Thread(target=search_select) t_select = threading.Thread(target=search_select)
t_select.start() t_select.start()
t_select.join(remain) t_select.join(remain)
...@@ -750,7 +754,7 @@ class Automaton: ...@@ -750,7 +754,7 @@ class Automaton:
with self.started: with self.started:
# Flush command pipes # Flush command pipes
while True: while True:
r = select_objects([self.cmdin, self.cmdout],0) r = select_objects([self.cmdin, self.cmdout], 0)
if not r: if not r:
break break
for fd in r: for fd in r:
......
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