You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
1.9 KiB

#!/usr/bin/env python3.7
import threading
from ChatConnection import ChatConnection
class ChatInterface(object):
def __init__(self,
connection: ChatConnection,
name: str = '<anonymous>'):
# set connection to use
self.connection = connection
self.name = name
def send(self, msg) -> None:
"""
Send message to connection
"""
self.connection.send(msg)
# check if input is quit command
if self.connection.isOpen:
if msg[0] == '/':
cmd = msg[1:5]
if cmd == 'quit':
self.connection.close()
elif cmd == 'name':
tmp = msg.split()
if len(tmp) == 2:
self.name = tmp[1]
def listener(self) -> None:
"""
Listener method to keep receiving new message from
connection
"""
while self.connection.isOpen:
# receive messages from connection
msg = self.connection.recv()
if len(msg) > 0:
# add recevied message to message list
print('\r' +
msg +
'\n' +
'[ME({})]: '.format(self.name), end='')
else:
self.connection.close()
def start(self) -> None:
# initialise background listener as daemon thread
backgroundListener = threading.Thread(target=self.listener)
backgroundListener.daemon = True
backgroundListener.start()
self.send('/name {}'.format(self.name))
while self.connection.isOpen:
try:
msg = input('[ME({})]: '.format(self.name))
except (EOFError, KeyboardInterrupt):
msg = '/quit'
finally:
self.send(msg)