1 files changed, 19 insertions, 3 deletions
diff --git a/synapse/types.py b/synapse/types.py
index 325332a6e0..bd8071d51d 100644
--- a/synapse/types.py
+++ b/synapse/types.py
@@ -37,7 +37,7 @@ import attr
from frozendict import frozendict
from signedjson.key import decode_verify_key_bytes
from signedjson.types import VerifyKey
-from typing_extensions import TypedDict
+from typing_extensions import Final, TypedDict
from unpaddedbase64 import decode_base64
from zope.interface import Interface
@@ -630,6 +630,22 @@ class RoomStreamToken:
return "s%d" % (self.stream,)
+class StreamKeyType:
+ """Known stream types.
+
+ A stream is a list of entities ordered by an incrementing "stream token".
+ """
+
+ ROOM: Final = "room_key"
+ PRESENCE: Final = "presence_key"
+ TYPING: Final = "typing_key"
+ RECEIPT: Final = "receipt_key"
+ ACCOUNT_DATA: Final = "account_data_key"
+ PUSH_RULES: Final = "push_rules_key"
+ TO_DEVICE: Final = "to_device_key"
+ DEVICE_LIST: Final = "device_list_key"
+
+
@attr.s(slots=True, frozen=True, auto_attribs=True)
class StreamToken:
"""A collection of keys joined together by underscores in the following
@@ -743,9 +759,9 @@ class StreamToken:
:raises TypeError: if `key` is not the one of the keys tracked by a StreamToken.
"""
- if key == "room_key":
+ if key == StreamKeyType.ROOM:
new_token = self.copy_and_replace(
- "room_key", self.room_key.copy_and_advance(new_value)
+ StreamKeyType.ROOM, self.room_key.copy_and_advance(new_value)
)
return new_token
|