def echo(self, name, obj): "clear current line, print obj from peer" prefix = "[%s] %s:" % (time.strftime("%H:%m"), name) for idx, line in enumerate(("%s" % obj).splitlines()): if not idx: print strfmt.gray("\033[2K\033[1G%s %s") % (prefix, line) else: print " " * len(prefix), strfmt.gray(line) if threading.current_thread() == self.t: buffer = readline.get_line_buffer() if buffer and not buffer.endswith("\n"): sys.stdout.write("%s%s" % (self.prompt(), buffer)) sys.stdout.flush() else: sys.stdout.write(self.prompt()) sys.stdout.flush()
def shell(self): print strfmt.gray("Hi %s, Press ^C or type /quit to quit.") % self.name try: while True: line = raw_input(self.prompt()).strip() try: if line.startswith("@"): self._handle_msg(line) elif line.startswith("/"): self._handle_cmd(line) elif line: self.broadcast(obj=line) except Exception as e: self.echo("<!> error", e) except SystemExit: pass except KeyboardInterrupt: print print strfmt.gray("bye!")
def _handle_cmd(self, line): data = line.split() cmd = data[0][1:] if cmd == "help": print strfmt.gray("list: list peers") print strfmt.gray("add <name> <hostname> <port>: add peer") print strfmt.gray("del <name>: delete peer") print strfmt.gray("quit: terminate session") elif cmd == "list": for name in self.peers: print strfmt.gray("%s") % self.peers[name]() elif cmd == "add": name, host, port = data[1:] peer = RestPeer(name=name, host=host, port=port) self.add(name=name, peer=peer) elif cmd == "del": name, = data[1:] self.remove(name=name) elif cmd == "quit": quit() else: raise Exception("%s: unknown command, type /help for help" % cmd)