Change add_server behaviour, fix IRC parameters parsing, can use with Python statement for managing server scope
This commit is contained in:
parent
f9ee1fe898
commit
4dd837cf4b
8 changed files with 248 additions and 67 deletions
|
|
@ -23,23 +23,28 @@ from server import AbstractServer
|
|||
|
||||
class SocketServer(AbstractServer):
|
||||
|
||||
def __init__(self, host, port=6667, password=None, ssl=False):
|
||||
def __init__(self, host, port, ssl=False):
|
||||
AbstractServer.__init__(self)
|
||||
self.host = host
|
||||
self.port = int(port)
|
||||
self.password = password
|
||||
self.ssl = ssl
|
||||
|
||||
self.socket = None
|
||||
self.readbuffer = b''
|
||||
|
||||
|
||||
def fileno(self):
|
||||
return self.socket.fileno() if self.socket else None
|
||||
|
||||
|
||||
@property
|
||||
def connected(self):
|
||||
"""Indicator of the connection aliveness"""
|
||||
return self.socket is not None
|
||||
|
||||
|
||||
# Open/close
|
||||
|
||||
def _open(self):
|
||||
# Create the socket
|
||||
self.socket = socket.socket()
|
||||
|
|
@ -60,6 +65,7 @@ class SocketServer(AbstractServer):
|
|||
|
||||
return True
|
||||
|
||||
|
||||
def _close(self):
|
||||
self._sending_queue.join()
|
||||
if self.connected:
|
||||
|
|
@ -71,18 +77,27 @@ class SocketServer(AbstractServer):
|
|||
self.socket = None
|
||||
return True
|
||||
|
||||
|
||||
# Write
|
||||
|
||||
def _write(self, cnt):
|
||||
if not self.connected: return
|
||||
|
||||
self.socket.send(cnt)
|
||||
|
||||
|
||||
def format(self, txt):
|
||||
if isinstance(txt, bytes):
|
||||
return txt + b'\r\n'
|
||||
else:
|
||||
return txt.encode() + b'\r\n'
|
||||
|
||||
|
||||
# Read
|
||||
|
||||
def read(self):
|
||||
if not self.connected: return
|
||||
|
||||
raw = self.socket.recv(1024)
|
||||
temp = (self.readbuffer + raw).split(b'\r\n')
|
||||
self.readbuffer = temp.pop()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue