class FakeSocket(object): def __init__(self, a=None, b=None): if a == None: self.a = Channel(buffsize) else: self.a = a if b == None: self.b = Channel(buffsize) else: self.b = b self.inBuff = b"" self.outBuff = b"" def invert(self): return FakeSocket(a=self.b, b=self.a) @_o def read(self, x): while len(self.inBuff) < x: data = yield self.a.recv() if data: self.inBuff = self.inBuff + data else: yield ConnectionLost() data = self.inBuff[:x] self.inBuff = self.inBuff[x:] yield Return(data) @_o def read_some(self): if len(self.inBuff) > 0: data = self.inBuff self.inBuff = b"" yield Return(data) else: data = b"" while len(data) == 0: data = yield self.a.recv() if data: yield Return(data) else: yield ConnectionLost() @_o def write(self, bs): yield self.b.send(bs) def close(self): yield self.b.send(None)
class FakeSocket(object): def __init__(self, a=None, b=None): if a == None: self.a = Channel(buffsize) else: self.a = a if b == None: self.b = Channel(buffsize) else: self.b = b self.inBuff = b'' self.outBuff = b'' def invert(self): return FakeSocket(a=self.b, b=self.a) @_o def read(self, x): while len(self.inBuff) < x: data = yield self.a.recv() if data: self.inBuff = self.inBuff + data else: yield ConnectionLost() data = self.inBuff[:x] self.inBuff = self.inBuff[x:] yield Return(data) @_o def read_some(self): if len(self.inBuff) > 0: data = self.inBuff self.inBuff = b'' yield Return(data) else: data = b'' while len(data) == 0: data = yield self.a.recv() if data: yield Return(data) else: yield ConnectionLost() @_o def write(self, bs): yield self.b.send(bs) def close(self): yield self.b.send(None)
def try_pattern(pattern): # s = start send, r = start recv, R = wait for a recv, S = wait for a send print "in try_pattern" assert (pattern.count("s") == pattern.count("S") == pattern.count("r") == pattern.count("R")) print "assert passed" cs = 0 cr = 0 scbs = deque() rcbs = deque() ch = Channel() for c in pattern: if c == "s": print "starting send" scbs.append(ch.send(cs)) cs += 1 print "started send" elif c == "S": print "waiting for send" yield scbs.popleft() print "done waiting for send" elif c == "r": print "starting recv" rcbs.append(ch.recv()) print "started recv" elif c == "R": print "waiting for recv" x = yield rcbs.popleft() print "done waiting for recv" assert x == cr, "%s != %s" % (x, cr) print "post-recv assert passed" cr += 1 print "leaving try_pattern"
def test_send_recv(): ch = Channel(bufsize=2) for x in range(2): yield ch.send('ok%s' % x) for x in range(2): r = yield ch.recv() assert r == 'ok%s' % x
def main(): s = 2 ch = Channel(s) for i in xrange(s): print(i) yield ch.send(i) print(ch.bufsize, len(ch._msgs)) for i in xrange(s): print((yield ch.recv())) print("done")
def main(): s = 2 ch = Channel(s) for i in xrange(s): print i yield ch.send(i) print ch.bufsize, len(ch._msgs) for i in xrange(s): print(yield ch.recv()) print "done"
def main(): s = 2 ch = Channel(s) for i in range(s): print(i) yield ch.send(i) print(ch.bufsize, len(ch._msgs)) for i in range(s): print((yield ch.recv())) print("done")
def main(): s = 2 ch = Channel(s) for i in xrange(s): print i yield ch.send(i) print ch.bufsize, len(ch._msgs) for i in xrange(s): print (yield ch.recv()) print "done" sys.exit(0)