(r'\\', '\\'))
+class ConnIdxMixin:
+ 'Collects a Connection ID at .conn_idx.'
+
+ def __init__(self, conn_idx: int, **kwargs) -> None:
+ super().__init__(**kwargs)
+ self.conn_idx = conn_idx
+
+
@dataclass
class LoginNames:
'Collects the names needed on server connect for USER, NICK commands.'
payload: tuple[str, LoginNames]
-class ConnEvent(Event):
- 'Event with connection ID at .conn_idx'
-
- def __init__(self, conn_idx: int, **kwargs) -> None:
- super().__init__(**kwargs)
- self.conn_idx = conn_idx
+class ConnEvent(Event, ConnIdxMixin):
+ 'Event with .conn_idx.'
class InitConnWindowEvent(ConnEvent, PayloadMixin):
payload: 'IrcMessage'
-class BroadcastConnMixin(BroadcastMixin):
+class BroadcastConnMixin(BroadcastMixin, ConnIdxMixin):
'Provides .broadcast_conn on classes that have .conn_idx defined.'
- def __init__(self, conn_idx: int, **kwargs) -> None:
- super().__init__(**kwargs)
- self.conn_idx = conn_idx
-
def broadcast_conn[E: ConnEvent](self,
event_class: type[E],
*args, **kwargs