Generalized the socket client, moving irc socket client to babili/irc repo
This commit is contained in:
parent
f4fc9d2d01
commit
665469ffff
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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)
|
||||
|
|
|
@ -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!")
|
||||
|
|
Loading…
Reference in New Issue