home · contact · privacy
Minor refactoring.
authorChristian Heller <c.heller@plomlompom.de>
Thu, 10 Jul 2025 14:14:11 +0000 (16:14 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Thu, 10 Jul 2025 14:14:11 +0000 (16:14 +0200)
ircplom/irc_conn.py
ircplom/tui.py

index bdcb901625220ad23d0e281acf92314e26ec89ca..be7d7b6e9526fa62fc078c6b65d2d6f45d9f71e6 100644 (file)
@@ -75,9 +75,9 @@ class NickSetEvent(ConnEvent):
     'Event to signal nickname having been set server-side.'
 
 
-class SendEvent(ConnEvent, PayloadMixin):
+class _SendEvent(ConnEvent, PayloadMixin):
     'Event to trigger sending of payload to server.'
-    payload: 'IrcMessage'
+    payload: '_IrcMessage'
 
 
 class BroadcastConnMixin(BroadcastMixin, ConnIdxMixin):
@@ -90,6 +90,10 @@ class BroadcastConnMixin(BroadcastMixin, ConnIdxMixin):
         'Broadcast event subclassing ConnEvent, with connection ID.'
         self.broadcast(event_class, conn_idx=self.conn_idx, *args, **kwargs)
 
+    def send(self, verb: str, parameters: tuple[str, ...]) -> None:
+        'Broadcast _SendEvent for _IrcMessage(verb, parameters).'
+        self.broadcast_conn(_SendEvent, _IrcMessage(verb, parameters))
+
 
 class IrcConnection(BroadcastConnMixin):
     'Abstracts socket connection, loop over it, and handling messages from it.'
@@ -187,10 +191,6 @@ class IrcConnection(BroadcastConnMixin):
             return
         self._socket.sendall(line.encode('utf-8') + _IRCSPEC_LINE_SEPARATOR)
 
-    def send(self, verb: str, parameters: tuple[str, ...]) -> None:
-        'Broadcast SendEvent for IrcMessage(verb, parameters).'
-        self.broadcast_conn(SendEvent, IrcMessage(verb, parameters))
-
     def handle(self, event: ConnEvent) -> None:
         'Process connection-directed Event into further steps.'
         if isinstance(event, InitReconnectEvent):
@@ -208,12 +208,12 @@ class IrcConnection(BroadcastConnMixin):
             # self.send('CAP', ('END',))
         elif isinstance(event, _DisconnectedEvent):
             self.close()
-        elif isinstance(event, SendEvent):
+        elif isinstance(event, _SendEvent):
             self.broadcast_conn(LogConnEvent, f'->: {event.payload.raw}')
             self._write_line(event.payload.raw)
 
 
-class IrcMessage:
+class _IrcMessage:
     'Properly structured representation of IRC message as per IRCv3 spec.'
     _raw: Optional[str] = None
 
@@ -230,7 +230,7 @@ class IrcMessage:
 
     @classmethod
     def from_raw(cls, raw_msg: str) -> Self:
-        'Parse raw IRC message line into properly structured IrcMessage.'
+        'Parse raw IRC message line into properly structured _IrcMessage.'
 
         class _Stage(NamedTuple):
             name: str
@@ -321,7 +321,7 @@ class _ConnectionLoop(Loop):
         self._conn = conn
 
     def process_bonus(self, yielded: str) -> None:
-        msg = IrcMessage.from_raw(yielded)
+        msg = _IrcMessage.from_raw(yielded)
         self._conn.broadcast_conn(LogConnEvent, f'<-: {msg.raw}')
         if msg.verb == 'PING':
             self._conn.send('PONG', (msg.parameters[0],))
index fa2fcc7f415566a1f8cf864a5716555f7780c53f..3c1a8021de733ceaa9a33fcc91aa18aa091ef71b 100644 (file)
@@ -14,8 +14,8 @@ from ircplom.events import (BroadcastMixin, Event, EventQueue, Loop,
                             PayloadMixin, QuitEvent)
 from ircplom.irc_conn import (
         BroadcastConnMixin, ConnEvent, InitConnectEvent, InitConnWindowEvent,
-        InitReconnectEvent, IrcMessage, LoginNames, LogConnEvent, NickSetEvent,
-        SendEvent, TIMEOUT_LOOP)
+        InitReconnectEvent, LoginNames, LogConnEvent, NickSetEvent,
+        TIMEOUT_LOOP)
 
 _MIN_HEIGHT = 4
 _MIN_WIDTH = 32
@@ -393,7 +393,7 @@ class _ConnectionWindow(_Window, BroadcastConnMixin):
 
     def cmd__disconnect(self, quit_msg: str = 'ircplom says bye') -> None:
         'Send QUIT command to server.'
-        self.broadcast_conn(SendEvent, IrcMessage('QUIT', (quit_msg, )))
+        self.send('QUIT', (quit_msg, ))
 
     def cmd__reconnect(self) -> None:
         'Attempt reconnection.'
@@ -401,7 +401,7 @@ class _ConnectionWindow(_Window, BroadcastConnMixin):
 
     def cmd__nick(self, new_nick: str) -> None:
         'Attempt nickname change.'
-        self.broadcast_conn(SendEvent, IrcMessage('NICK', (new_nick, )))
+        self.send('NICK', (new_nick, ))
 
 
 class _KeyboardLoop(Loop, BroadcastMixin):