예제 #1
0
파일: chat.py 프로젝트: pombredanne/lab-2
 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()
예제 #2
0
파일: chat.py 프로젝트: pombredanne/lab-2
 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!")
예제 #3
0
파일: chat.py 프로젝트: pombredanne/lab-2
 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)