fix: event uniqueness (see comment in code)
This commit is contained in:
parent
91078341c7
commit
629aa3a6c3
1 changed files with 13 additions and 3 deletions
|
|
@ -1,8 +1,9 @@
|
||||||
import json
|
import json
|
||||||
from queue import Queue
|
from queue import Queue
|
||||||
from threading import Lock
|
from threading import Lock
|
||||||
from .message_type import RelayMessageType
|
|
||||||
from .event import Event
|
from .event import Event
|
||||||
|
from .message_type import RelayMessageType
|
||||||
|
|
||||||
|
|
||||||
class EventMessage:
|
class EventMessage:
|
||||||
|
|
@ -69,9 +70,18 @@ class MessagePool:
|
||||||
)
|
)
|
||||||
with self.lock:
|
with self.lock:
|
||||||
if not event.id in self._unique_events:
|
if not event.id in self._unique_events:
|
||||||
self.events.put(EventMessage(event, subscription_id, url))
|
self._accept_event(EventMessage(event, subscription_id, url))
|
||||||
self._unique_events.add(event.id)
|
|
||||||
elif message_type == RelayMessageType.NOTICE:
|
elif message_type == RelayMessageType.NOTICE:
|
||||||
self.notices.put(NoticeMessage(message_json[1], url))
|
self.notices.put(NoticeMessage(message_json[1], url))
|
||||||
elif message_type == RelayMessageType.END_OF_STORED_EVENTS:
|
elif message_type == RelayMessageType.END_OF_STORED_EVENTS:
|
||||||
self.eose_notices.put(EndOfStoredEventsMessage(message_json[1], url))
|
self.eose_notices.put(EndOfStoredEventsMessage(message_json[1], url))
|
||||||
|
|
||||||
|
def _accept_event(self, event_message: EventMessage):
|
||||||
|
"""
|
||||||
|
Event uniqueness is considered per `subscription_id`.
|
||||||
|
The `subscription_id` is rewritten to be unique and it is the same accross relays.
|
||||||
|
The same event can come from different subscriptions (from the same client or from different ones).
|
||||||
|
Clients that have joined later should receive older events.
|
||||||
|
"""
|
||||||
|
self.events.put(event_message)
|
||||||
|
self._unique_events.add(f"{event_message.subscription_id}_{event_message.event.id}")
|
||||||
Loading…
Add table
Add a link
Reference in a new issue