home
·
contact
·
privacy
projects
/
ircplom
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
bd9dd36
)
Minor code reorganization.
master
author
Christian Heller
<c.heller@plomlompom.de>
Sat, 26 Jul 2025 23:30:43 +0000
(
01:30
+0200)
committer
Christian Heller
<c.heller@plomlompom.de>
Sat, 26 Jul 2025 23:30:43 +0000
(
01:30
+0200)
ircplom/irc_conn.py
patch
|
blob
|
history
diff --git
a/ircplom/irc_conn.py
b/ircplom/irc_conn.py
index f7a692ce82bbc564835379be11599b59d496b4e0..36be5f9c87bcbd584d7d28c700d0e5255268a34e 100644
(file)
--- a/
ircplom/irc_conn.py
+++ b/
ircplom/irc_conn.py
@@
-203,8
+203,8
@@
class Client(ABC, ClientQueueMixin):
self._hostname = hostname
self._socket: Optional[socket] = None
self._recv_loop: Optional[Loop] = None
self._hostname = hostname
self._socket: Optional[socket] = None
self._recv_loop: Optional[Loop] = None
- self._caps
_available: list[str] = []
- self._caps_enabled: list[str] = []
+ self._caps
: dict[str, set[str]] = {
+ 'available': set(), 'enabled': set(), 'finished': set()}
self.id_ = uuid4()
self.assumed_open = False
self.realname = realname
self.id_ = uuid4()
self.assumed_open = False
self.realname = realname
@@
-234,21
+234,17
@@
class Client(ABC, ClientQueueMixin):
Thread(target=connect, daemon=True, args=(self,)).start()
Thread(target=connect, daemon=True, args=(self,)).start()
- def set_caps(self,
- caps: list[str],
- final_line: bool,
- enabled: bool = False
+ def set_caps(self, caps: set[str], final_line: bool, enabled: bool
) -> None:
'Record available or enabled server capabilities.'
) -> None:
'Record available or enabled server capabilities.'
-
finished_marker = '\0
'
- caps_list = self._caps_enabled if enabled else self._caps_available
- if caps_list[-1:] == [finished_marker]:
-
caps_list.clear(
)
-
caps_list +
= caps
+
category = 'enabled' if enabled else 'available
'
+ if category in self._caps['finished']:
+ self._caps[category].clear()
+
self._caps['finished'].remove(category
)
+
self._caps[category] |
= caps
if final_line:
if final_line:
- caps_list += [finished_marker]
- self.log(f'# server caps {"enabled" if enabled else "available"}'
- f': {caps_list[:-1]}')
+ self._caps['finished'].add(category)
+ self.log(f'# server caps {category}: {self._caps[category]}')
@abstractmethod
def log(self, msg: str, chat: str = '') -> None:
@abstractmethod
def log(self, msg: str, chat: str = '') -> None:
@@
-344,4
+340,4
@@
class _RecvEvent(ClientEvent, PayloadMixin):
if subverb in {'LS', 'LIST'}:
target.set_caps(final_line=msg.params[2] != '*',
enabled=subverb == 'LIST',
if subverb in {'LS', 'LIST'}:
target.set_caps(final_line=msg.params[2] != '*',
enabled=subverb == 'LIST',
- caps=
msg.params[-1].strip().split(
))
+ caps=
set(msg.params[-1].strip().split()
))