def __init__(self, cog_h, orb, engine): self.cog_h = cog_h self.orb = orb self.engine = engine # self.track_prime = orb.track(TrackPrime) # self.rail_line_console = RailLineConsole()
def __init__(self, cog_h, orb, engine): self.cog_h = cog_h self.orb = orb self.engine = engine self.track_prime = self.orb.track(TrackPrime) self.rail_line_console = RailLineConsole() self.bulk_send_count = 0
class CogLineConsole: def __init__(self, cog_h, orb, engine): self.cog_h = cog_h self.orb = orb self.engine = engine # self.rail_line_console = RailLineConsole() # def on_init(self): rail_h = '%s/line_console' % (self.cog_h) self.rail_line_console.zero( rail_h=rail_h, cb_line_console_connect=lambda cs_line_console_connect: None, cb_line_console_condrop=lambda cs_line_console_condrop: None, cb_line_console_command=self.cb_line_console_command, engine=self.engine) self.rail_line_console.start(ip=LC_ADDR, port=LC_PORT) def on_note(self, msg): col = cformat(string=msg, fg='yellow', bg='trans') self.rail_line_console.send(msg='%s\n' % (col)) # def cb_line_console_command(self, cs_line_console_command): tokens = cs_line_console_command.tokens # if 0 == len(tokens): return self.nearcast.ex_lc(tokens=tokens)
class CogToLineConsole: def __init__(self, cog_h, orb, engine): self.cog_h = cog_h self.orb = orb self.engine = engine # self.track_prime = orb.track(TrackPrime) # self.rail_line_console = RailLineConsole() def on_init(self): rail_h = '%s/line_console' % (self.cog_h) self.rail_line_console.zero( rail_h=rail_h, cb_line_console_connect=self.cb_line_console_connect, cb_line_console_condrop=self.cb_line_console_condrop, cb_line_console_command=self.cb_line_console_command, engine=self.engine) # ip = self.track_prime.lc_addr port = self.track_prime.lc_port self.rail_line_console.start(ip=ip, port=port) def cb_line_console_connect(self, cs_line_console_connect): rail_h = cs_line_console_connect.rail_h # pass def cb_line_console_condrop(self, cs_line_console_condrop): rail_h = cs_line_console_condrop.rail_h # pass def cb_line_console_command(self, cs_line_console_command): rail_h = cs_line_console_command.rail_h tokens = cs_line_console_command.tokens # cmd = tokens[0] rest = tokens[1:] if cmd == 'q': raise SolentQuitException() else: self.rail_line_console.send(' ??\r\n')
class CogLineConsole: def __init__(self, cog_h, orb, engine): self.cog_h = cog_h self.orb = orb self.engine = engine self.track_prime = self.orb.track(TrackPrime) self.rail_line_console = RailLineConsole() self.bulk_send_count = 0 def on_init(self): rail_h = '%s/line_console' % (self.cog_h) self.rail_line_console.zero( rail_h=rail_h, cb_line_console_connect=self.cb_line_console_connect, cb_line_console_condrop=self.cb_line_console_condrop, cb_line_console_command=self.cb_line_console_command, engine=self.engine) self.rail_line_console.start(ip=self.track_prime.cons_addr, port=self.track_prime.cons_port) def on_please_queue_for_send(self, enqueue_h, filename): self.rail_line_console.send('queued %s (%s)\n' % (enqueue_h, filename)) def on_failed_queue_for_send(self, enqueue_h, msg): self.rail_line_console.send('failed %s (%s)\n' % (enqueue_h, msg)) def on_okdone_queue_for_send(self, enqueue_h, filename): self.rail_line_console.send('okdone %s (%s)\n' % (enqueue_h, filename)) def cb_line_console_connect(self, cs_line_console_connect): addr = cs_line_console_connect.addr port = cs_line_console_connect.port pass def cb_line_console_condrop(self, cs_line_console_condrop): msg = cs_line_console_condrop.msg pass def cb_line_console_command(self, cs_line_console_command): tokens = cs_line_console_command.tokens if 1 != len(tokens): self.rail_line_console.send('error: expected a filename.') return filename = tokens[0] if not os.path.exists(filename): self.rail_line_console.send('error: no file %s' % (filename)) return enqueue_h = self.bulk_send_count self.bulk_send_count += 1 self.nearcast.please_queue_for_send(enqueue_h=enqueue_h, filename=filename)
def should_transfer_of_text(): ip = 'localhost' port = 5000 # engine = Engine(mtu=MTU) receiver = Receiver() # # step: start it rail_line_console = RailLineConsole() rail_h = 'test/line_console' rail_line_console.zero( rail_h=rail_h, cb_line_console_connect=receiver.on_line_console_connect, cb_line_console_condrop=receiver.on_line_console_condrop, cb_line_console_command=receiver.on_line_console_command, engine=engine) rail_line_console.start(ip=ip, port=port) # # verify engine.cycle() assert rail_line_console.is_server_listening() == True assert rail_line_console.is_accept_connected() == False # # step: client connects client = engine.init_spin(construct=SpinBasicTcpClient) client.start(addr=ip, port=port) # # verify engine.cycle() assert rail_line_console.is_server_listening() == False assert rail_line_console.is_accept_connected() == True assert client.is_connected() == True # # step: client sends text that does not have a newline client.send(msg="abc def") # emphasis: no newline # # verify: we should not have received a line engine.cycle() assert 0 == len(receiver.sb) # # step: now send a new line and some overflow client.send(msg="\noverflow") client.send(msg="/second half") # # verify: we should have seen our first line engine.cycle() assert 1 == len(receiver.sb) assert receiver.sb[0] == ['abc', 'def'] # # step: another line ending client.send(msg='\n') # # verify engine.cycle() assert 2 == len(receiver.sb) assert receiver.sb[-1] == ['overflow/second', 'half'] # # step: multiple lines in one pass client.send(msg="three\nfour\n") # # verify engine.cycle() assert 4 == len(receiver.sb) assert receiver.sb[-2] == [ 'three', ] assert receiver.sb[-1] == [ 'four', ] # # step: we write to client s = "here is some text\n" rail_line_console.send(msg=s) # # verify engine.cycle() assert 1 == len(client.sb) assert client.sb[-1] == s # return True
def should_accept_client_and_boot_client_on_stop(): ip = 'localhost' port = 5000 # engine = Engine(mtu=MTU) receiver = Receiver() # # step: start rail_line_console = RailLineConsole() rail_h = 'test/line_console' rail_line_console.zero( rail_h=rail_h, cb_line_console_connect=receiver.on_line_console_connect, cb_line_console_condrop=receiver.on_line_console_condrop, cb_line_console_command=receiver.on_line_console_command, engine=engine) rail_line_console.start(ip=ip, port=port) # # verify engine.cycle() assert rail_line_console.is_server_listening() == True assert rail_line_console.is_accept_connected() == False # # step: client connects client = engine.init_spin(construct=SpinBasicTcpClient) client.start(addr=ip, port=port) # # verify engine.cycle() assert rail_line_console.is_server_listening() == False assert rail_line_console.is_accept_connected() == True assert client.is_connected() == True # # step: server is stopped with client attached rail_line_console.stop() # # confirm effects engine.cycle() assert rail_line_console.is_server_listening() == False assert rail_line_console.is_accept_connected() == False assert client.is_connected() == False # return True
def should_start_and_stop_without_crashing(): receiver = Receiver() # engine = Engine(mtu=MTU) rail_line_console = RailLineConsole() rail_h = 'test/line_console' rail_line_console.zero( rail_h=rail_h, cb_line_console_connect=receiver.on_line_console_connect, cb_line_console_condrop=receiver.on_line_console_condrop, cb_line_console_command=receiver.on_line_console_command, engine=engine) engine.cycle() # # Stage: Start it rail_line_console.start(ip='localhost', port=5000) # # Verify engine.cycle() assert rail_line_console.is_server_listening() == True assert rail_line_console.is_accept_connected() == False # # Stage: Stop it rail_line_console.stop() # # Verify engine.cycle() assert rail_line_console.is_server_listening() == False assert rail_line_console.is_accept_connected() == False # return True
def __init__(self, cog_h, orb, engine): self.cog_h = cog_h self.orb = orb self.engine = engine # self.rail_line_console = RailLineConsole()
class CogToLineConsole: def __init__(self, cog_h, orb, engine): self.cog_h = cog_h self.orb = orb self.engine = engine # self.rail_line_console = RailLineConsole() # def on_init(self): rail_h = '%s/line_console' % (self.cog_h) self.rail_line_console.zero( rail_h=rail_h, cb_line_console_connect=self.cb_line_console_connect, cb_line_console_condrop=self.cb_line_console_condrop, cb_line_console_command=self.cb_line_console_command, engine=self.engine) # self.rail_line_console.start(ip=LC_ADDR, port=LC_PORT) def on_to_line_console(self, s): self.rail_line_console.send(msg='%s\n' % s) # def cb_line_console_connect(self, cs_line_console_connect): addr = cs_line_console_connect.addr port = cs_line_console_connect.port # self.nearcast.line_console_connect(addr=addr, port=port) def cb_line_console_condrop(self, cs_line_console_condrop): msg = cs_line_console_condrop.msg # self.nearcast.line_console_condrop(msg=msg) def cb_line_console_command(self, cs_line_console_command): tokens = cs_line_console_command.tokens # def complain(msg): self.rail_line_console.send(msg='%s\n' % msg) # if 0 == len(tokens): pass elif tokens[0] == 'add': if 3 != len(tokens): complain('Usage: add a b') return (_, a, b) = tokens self.nearcast.cmd_add(a=a, b=b) elif tokens[0] == 'echo': if 2 != len(tokens): complain('Usage: echo s') return (_, s) = tokens self.nearcast.cmd_echo(s=s) elif tokens[0] == 'quit': self.nearcast.cmd_quit() else: complain('??') return