Generalized the socket client, moving irc socket client to babili/irc repo

This commit is contained in:
aewens 2019-05-10 17:45:01 +02:00
parent f4fc9d2d01
commit 665469ffff
4 changed files with 10 additions and 75 deletions

View File

@ -1,4 +1,3 @@
from abots.net.socket_server import SocketServer
from abots.net.socket_client import SocketClient
from abots.net.irc_socket_client import IRCSocketClient
from abots.net.prefix_socket_client import PrefixSocketClient

View File

@ -1,50 +0,0 @@
"""
IRC Socket Client
=================
Formatted to read and write IRC socket data
"""
from abots.net import SocketClient
from socket import timeout as sock_timeout
class IRCSocketClient(SocketClient):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def _format_message(self, message, *args):
if len(args) > 0:
formatted = message.format(*args)
else:
formatted = message
packaged = f"{formatted}\r\n"
return packaged.encode()
def _get_message(self, decode=True):
try:
packet = self.sock.recv(self.buffer_size)
except (BrokenPipeError, OSError) as e:
return None
return packet.decode() if decode else packet
# See rfc2812
#max_message_length = 512
#while True:#len(data) <= max_message_length:
# # Automatically break loop to prevent infinite loop
# # Allow at least twice the needed iterations to occur exiting loop
# # Force bufsize to cap out at buffer_size
# try:
# packet = self.sock.recv()#self.buffer_size)
# # The socket can either be broken or no longer open at all
# except (BrokenPipeError, OSError) as e:
# #if not isinstance(e, sock_timeout):
# # self._attempt_reconnect()
# continue
# #print(packet.decode())
# if len(packet) == 0:
# break
# data = data + packet
##print(data.decode())
#return data.decode() if decode else data

View File

@ -59,9 +59,6 @@ class PrefixSocketClient(SocketClient):
def _get_message(self):
message_size = self._get_message_size()
if message_size is None:
return None
try:
return self._recv_bytes(message_size)
except OSError:
return None
return
result = self._recv_bytes(message_size)
self._outbox.put(result)

View File

@ -84,19 +84,12 @@ class SocketClient(Thread):
self.send_message(message)
def _get_message(self, decode=True):
data = "".encode()
while True:
try:
packet = self.sock.recv(self.buffer_size)
# The socket can either be broken or no longer open at all
except (BrokenPipeError, OSError) as e:
if not isinstance(e, sock_timeout):
self._attempt_reconnect()
return None
if len(packet) == 0:
break
data = data + packet
return data.decode() if decode else data
try:
packet = self.sock.recv(self.buffer_size)
result = packet.decode() if decode else packet
self._outbox.put(result)
except (BrokenPipeError, OSError) as e:
pass
def _format_message(self, message, *args):
if len(args) > 0:
@ -164,11 +157,7 @@ class SocketClient(Thread):
while self.running:
if self.broken.is_set():
self.reconnecting.wait()
message = self._get_message()
#print(message)
if message is None:
continue
self._outbox.put(message)
self._get_message()
def stop(self, done=None):
# print("Stopping client!")