ClientsDb = dict[str, 'Client']
STREAM_ALL = '*'
+STREAM_SAME = '='
STREAM_PREFIX_META = ':'
STREAM_SERVER = f'{STREAM_PREFIX_META}server'
STREAM_RAW = f'{STREAM_PREFIX_META}raw'
def send(self,
msg: IrcMessage,
- stream: str = STREAM_SERVER,
- to_log: str = ''
+ to_log: str = '',
+ stream_for_log: str = STREAM_SERVER
) -> None:
- 'Send line-separator-delimited message over socket.'
+ 'Send msg over socket, on success log .raw, and optionally set to_log.'
if not self.conn:
self._log('cannot send, connection seems closed', alert=True,
- stream=stream)
+ stream=STREAM_SAME)
return
self.conn.send(msg)
if to_log:
- self._log(to_log, prefix='', stream=stream)
+ self._log(to_log, prefix='', stream=stream_for_log)
self._log(msg.raw, prefix=_LOG_PREFIX_SEND_RAW, stream=STREAM_RAW)
def update_login(self, nick_confirmed: bool, nickname: str = '') -> None:
self.close()
def handle_msg(self, msg: IrcMessage) -> None:
- 'Process incoming msg towards appropriate client steps.'
+ 'Log msg.raw, then process incoming msg into appropriate client steps.'
self._log(msg.raw, prefix=_LOG_PREFIX_RECV_RAW, stream=STREAM_RAW)
match msg.verb:
case 'PING':
CMD_SHORTCUTS)
from ircplom.irc_conn import IrcMessage
from ircplom.client import (
- STREAM_ALL, STREAM_PREFIX_META, STREAM_RAW, STREAM_SERVER,
+ STREAM_ALL, STREAM_SAME, STREAM_PREFIX_META, STREAM_RAW, STREAM_SERVER,
IrcConnSetup, Client, ClientQueueMixin, NewClientEvent)
CMD_SHORTCUTS['disconnect'] = 'window.disconnect'
CMD_SHORTCUTS['privmsg'] = 'window.privmsg'
CMD_SHORTCUTS['reconnect'] = 'window.reconnect'
-_STREAM_SAME = '='
-
class _ClientWindow(Window, ClientQueueMixin):
def cmd__privmsg(self, target: str, msg: str) -> None:
'Send chat message msg to target.'
- self._send_msg('PRIVMSG', (target, msg),
- stream=target, to_log=f'>{self.prompt.prefix}{msg}')
+ self._send_msg('PRIVMSG', (target, msg), stream_for_log=target,
+ to_log=f'>{self.prompt.prefix}{msg}')
class _PrivmsgPromptWidget(PromptWidget):
self._client_mngrs: dict[str, _ClientWindowsManager] = {}
def _log_target_wins(self, **kwargs) -> Sequence[Window]:
- stream = kwargs.get('stream', _STREAM_SAME)
- if stream != _STREAM_SAME and 'client_id' in kwargs:
+ stream = kwargs.get('stream', STREAM_SAME)
+ if stream != STREAM_SAME and 'client_id' in kwargs:
m = self._client_mngrs[kwargs['client_id']]
if stream == STREAM_SERVER:
return [m.window(STREAM_SERVER), m.window(STREAM_RAW)]
'Catch /reconnect, only initiate if not connected, else complain back.'
if self.conn:
self._log('not re-connecting since already connected',
- stream=_STREAM_SAME, alert=True)
+ stream=STREAM_SAME, alert=True)
return
self._start_connecting()