Make sure the notifier stream token goes forward when it is updated. Sort the pending events by the correct room_stream_id

This commit is contained in:
Mark Haines 2015-05-18 13:17:36 +01:00
parent 0ad1c67234
commit 1e90715a3d
2 changed files with 21 additions and 4 deletions

View file

@ -119,6 +119,7 @@ class StreamToken(
@property
def room_stream_id(self):
# TODO(markjh): Awful hack to work around hacks in the presence tests
# which assume that the keys are integers.
if type(self.room_key) is int:
return self.room_key
else:
@ -132,6 +133,22 @@ class StreamToken(
or (int(other_token.typing_key) < int(self.typing_key))
)
def copy_and_advance(self, key, new_value):
"""Advance the given key in the token to a new value if and only if the
new value is after the old value.
"""
new_token = self.copy_and_replace(key, new_value)
if key == "room_key":
new_id = new_token.room_stream_id
old_id = self.room_stream_id
else:
new_id = int(getattr(new_token, key))
old_id = int(getattr(self, key))
if old_id < new_id:
return new_token
else:
return self
def copy_and_replace(self, key, new_value):
d = self._asdict()
d[key] = new_value