Change add_server behaviour, fix IRC parameters parsing, can use with Python statement for managing server scope

This commit is contained in:
nemunaire 2014-10-09 07:37:52 +02:00
commit 4dd837cf4b
8 changed files with 248 additions and 67 deletions

View file

@ -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()