Prefix TS fields with _ts
parent
b31ec214a5
commit
112283e230
|
@ -127,24 +127,24 @@ class PresenceHandler(BaseHandler):
|
||||||
self.wheel_timer.insert(
|
self.wheel_timer.insert(
|
||||||
now=now,
|
now=now,
|
||||||
obj=state.user_id,
|
obj=state.user_id,
|
||||||
then=state.last_active + IDLE_TIMER,
|
then=state.last_active_ts + IDLE_TIMER,
|
||||||
)
|
)
|
||||||
self.wheel_timer.insert(
|
self.wheel_timer.insert(
|
||||||
now=now,
|
now=now,
|
||||||
obj=state.user_id,
|
obj=state.user_id,
|
||||||
then=state.last_user_sync + SYNC_ONLINE_TIMEOUT,
|
then=state.last_user_sync_ts + SYNC_ONLINE_TIMEOUT,
|
||||||
)
|
)
|
||||||
if self.hs.is_mine_id(state.user_id):
|
if self.hs.is_mine_id(state.user_id):
|
||||||
self.wheel_timer.insert(
|
self.wheel_timer.insert(
|
||||||
now=now,
|
now=now,
|
||||||
obj=state.user_id,
|
obj=state.user_id,
|
||||||
then=state.last_federation_update + FEDERATION_PING_INTERVAL,
|
then=state.last_federation_update_ts + FEDERATION_PING_INTERVAL,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self.wheel_timer.insert(
|
self.wheel_timer.insert(
|
||||||
now=now,
|
now=now,
|
||||||
obj=state.user_id,
|
obj=state.user_id,
|
||||||
then=state.last_federation_update + FEDERATION_TIMEOUT,
|
then=state.last_federation_update_ts + FEDERATION_TIMEOUT,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Set of users who have presence in the `user_to_current_state` that
|
# Set of users who have presence in the `user_to_current_state` that
|
||||||
|
@ -225,7 +225,7 @@ class PresenceHandler(BaseHandler):
|
||||||
self.wheel_timer.insert(
|
self.wheel_timer.insert(
|
||||||
now=now,
|
now=now,
|
||||||
obj=user_id,
|
obj=user_id,
|
||||||
then=new_state.last_active + IDLE_TIMER
|
then=new_state.last_active_ts + IDLE_TIMER
|
||||||
)
|
)
|
||||||
|
|
||||||
if new_state.state != PresenceState.OFFLINE:
|
if new_state.state != PresenceState.OFFLINE:
|
||||||
|
@ -233,14 +233,14 @@ class PresenceHandler(BaseHandler):
|
||||||
self.wheel_timer.insert(
|
self.wheel_timer.insert(
|
||||||
now=now,
|
now=now,
|
||||||
obj=user_id,
|
obj=user_id,
|
||||||
then=new_state.last_user_sync + SYNC_ONLINE_TIMEOUT
|
then=new_state.last_user_sync_ts + SYNC_ONLINE_TIMEOUT
|
||||||
)
|
)
|
||||||
|
|
||||||
last_federate = new_state.last_federation_update
|
last_federate = new_state.last_federation_update_ts
|
||||||
if now - last_federate > FEDERATION_PING_INTERVAL:
|
if now - last_federate > FEDERATION_PING_INTERVAL:
|
||||||
# Been a while since we've poked remote servers
|
# Been a while since we've poked remote servers
|
||||||
new_state = new_state.copy_and_replace(
|
new_state = new_state.copy_and_replace(
|
||||||
last_federation_update=now,
|
last_federation_update_ts=now,
|
||||||
)
|
)
|
||||||
to_federation_ping[user_id] = new_state
|
to_federation_ping[user_id] = new_state
|
||||||
|
|
||||||
|
@ -248,11 +248,11 @@ class PresenceHandler(BaseHandler):
|
||||||
self.wheel_timer.insert(
|
self.wheel_timer.insert(
|
||||||
now=now,
|
now=now,
|
||||||
obj=user_id,
|
obj=user_id,
|
||||||
then=new_state.last_federation_update + FEDERATION_TIMEOUT
|
then=new_state.last_federation_update_ts + FEDERATION_TIMEOUT
|
||||||
)
|
)
|
||||||
|
|
||||||
if new_state.state == PresenceState.ONLINE:
|
if new_state.state == PresenceState.ONLINE:
|
||||||
currently_active = now - new_state.last_active < LAST_ACTIVE_GRANULARITY
|
currently_active = now - new_state.last_active_ts < LAST_ACTIVE_GRANULARITY
|
||||||
new_state = new_state.copy_and_replace(
|
new_state = new_state.copy_and_replace(
|
||||||
currently_active=currently_active,
|
currently_active=currently_active,
|
||||||
)
|
)
|
||||||
|
@ -260,7 +260,7 @@ class PresenceHandler(BaseHandler):
|
||||||
# Check whether the change was something worth notifying about
|
# Check whether the change was something worth notifying about
|
||||||
if should_notify(prev_state, new_state):
|
if should_notify(prev_state, new_state):
|
||||||
new_state.copy_and_replace(
|
new_state.copy_and_replace(
|
||||||
last_federation_update=now,
|
last_federation_update_ts=now,
|
||||||
)
|
)
|
||||||
to_notify[user_id] = new_state
|
to_notify[user_id] = new_state
|
||||||
|
|
||||||
|
@ -309,18 +309,18 @@ class PresenceHandler(BaseHandler):
|
||||||
|
|
||||||
if self.hs.is_mine_id(user_id):
|
if self.hs.is_mine_id(user_id):
|
||||||
if state.state == PresenceState.ONLINE:
|
if state.state == PresenceState.ONLINE:
|
||||||
if now - state.last_active > IDLE_TIMER:
|
if now - state.last_active_ts > IDLE_TIMER:
|
||||||
# Currently online, but last activity ages ago so auto
|
# Currently online, but last activity ages ago so auto
|
||||||
# idle
|
# idle
|
||||||
changes[user_id] = state.copy_and_replace(
|
changes[user_id] = state.copy_and_replace(
|
||||||
state=PresenceState.UNAVAILABLE,
|
state=PresenceState.UNAVAILABLE,
|
||||||
)
|
)
|
||||||
elif now - state.last_active > LAST_ACTIVE_GRANULARITY:
|
elif now - state.last_active_ts > LAST_ACTIVE_GRANULARITY:
|
||||||
# So that we send down a notification that we've
|
# So that we send down a notification that we've
|
||||||
# stopped updating.
|
# stopped updating.
|
||||||
changes[user_id] = state
|
changes[user_id] = state
|
||||||
|
|
||||||
if now - state.last_federation_update > FEDERATION_PING_INTERVAL:
|
if now - state.last_federation_update_ts > FEDERATION_PING_INTERVAL:
|
||||||
# Need to send ping to other servers to ensure they don't
|
# Need to send ping to other servers to ensure they don't
|
||||||
# timeout and set us to offline
|
# timeout and set us to offline
|
||||||
changes[user_id] = state
|
changes[user_id] = state
|
||||||
|
@ -328,7 +328,7 @@ class PresenceHandler(BaseHandler):
|
||||||
# If there are have been no sync for a while (and none ongoing),
|
# If there are have been no sync for a while (and none ongoing),
|
||||||
# set presence to offline
|
# set presence to offline
|
||||||
if not self.user_to_num_current_syncs.get(user_id, 0):
|
if not self.user_to_num_current_syncs.get(user_id, 0):
|
||||||
if now - state.last_user_sync > SYNC_ONLINE_TIMEOUT:
|
if now - state.last_user_sync_ts > SYNC_ONLINE_TIMEOUT:
|
||||||
changes[user_id] = state.copy_and_replace(
|
changes[user_id] = state.copy_and_replace(
|
||||||
state=PresenceState.OFFLINE,
|
state=PresenceState.OFFLINE,
|
||||||
status_msg=None,
|
status_msg=None,
|
||||||
|
@ -337,7 +337,7 @@ class PresenceHandler(BaseHandler):
|
||||||
# We expect to be poked occaisonally by the other side.
|
# We expect to be poked occaisonally by the other side.
|
||||||
# This is to protect against forgetful/buggy servers, so that
|
# This is to protect against forgetful/buggy servers, so that
|
||||||
# no one gets stuck online forever.
|
# no one gets stuck online forever.
|
||||||
if now - state.last_federation_update > FEDERATION_TIMEOUT:
|
if now - state.last_federation_update_ts > FEDERATION_TIMEOUT:
|
||||||
# The other side seems to have disappeared.
|
# The other side seems to have disappeared.
|
||||||
changes[user_id] = state.copy_and_replace(
|
changes[user_id] = state.copy_and_replace(
|
||||||
state=PresenceState.OFFLINE,
|
state=PresenceState.OFFLINE,
|
||||||
|
@ -356,7 +356,7 @@ class PresenceHandler(BaseHandler):
|
||||||
prev_state = yield self.current_state_for_user(user_id)
|
prev_state = yield self.current_state_for_user(user_id)
|
||||||
|
|
||||||
new_fields = {
|
new_fields = {
|
||||||
"last_active": self.clock.time_msec(),
|
"last_active_ts": self.clock.time_msec(),
|
||||||
}
|
}
|
||||||
if prev_state.state == PresenceState.UNAVAILABLE:
|
if prev_state.state == PresenceState.UNAVAILABLE:
|
||||||
new_fields["state"] = PresenceState.ONLINE
|
new_fields["state"] = PresenceState.ONLINE
|
||||||
|
@ -388,12 +388,12 @@ class PresenceHandler(BaseHandler):
|
||||||
# just update the last sync times.
|
# just update the last sync times.
|
||||||
yield self._update_states([prev_state.copy_and_replace(
|
yield self._update_states([prev_state.copy_and_replace(
|
||||||
state=PresenceState.ONLINE,
|
state=PresenceState.ONLINE,
|
||||||
last_active=self.clock.time_msec(),
|
last_active_ts=self.clock.time_msec(),
|
||||||
last_user_sync=self.clock.time_msec(),
|
last_user_sync_ts=self.clock.time_msec(),
|
||||||
)])
|
)])
|
||||||
else:
|
else:
|
||||||
yield self._update_states([prev_state.copy_and_replace(
|
yield self._update_states([prev_state.copy_and_replace(
|
||||||
last_user_sync=self.clock.time_msec(),
|
last_user_sync_ts=self.clock.time_msec(),
|
||||||
)])
|
)])
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
|
@ -403,7 +403,7 @@ class PresenceHandler(BaseHandler):
|
||||||
|
|
||||||
prev_state = yield self.current_state_for_user(user_id)
|
prev_state = yield self.current_state_for_user(user_id)
|
||||||
yield self._update_states([prev_state.copy_and_replace(
|
yield self._update_states([prev_state.copy_and_replace(
|
||||||
last_user_sync=self.clock.time_msec(),
|
last_user_sync_ts=self.clock.time_msec(),
|
||||||
)])
|
)])
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
|
@ -553,12 +553,12 @@ class PresenceHandler(BaseHandler):
|
||||||
|
|
||||||
new_fields = {
|
new_fields = {
|
||||||
"state": presence_state,
|
"state": presence_state,
|
||||||
"last_federation_update": now,
|
"last_federation_update_ts": now,
|
||||||
}
|
}
|
||||||
|
|
||||||
last_active_ago = push.get("last_active_ago", None)
|
last_active_ago = push.get("last_active_ago", None)
|
||||||
if last_active_ago is not None:
|
if last_active_ago is not None:
|
||||||
new_fields["last_active"] = now - last_active_ago
|
new_fields["last_active_ts"] = now - last_active_ago
|
||||||
|
|
||||||
new_fields["status_msg"] = push.get("status_msg", None)
|
new_fields["status_msg"] = push.get("status_msg", None)
|
||||||
|
|
||||||
|
@ -632,7 +632,7 @@ class PresenceHandler(BaseHandler):
|
||||||
}
|
}
|
||||||
|
|
||||||
if presence == PresenceState.ONLINE:
|
if presence == PresenceState.ONLINE:
|
||||||
new_fields["last_active"] = self.clock.time_msec()
|
new_fields["last_active_ts"] = self.clock.time_msec()
|
||||||
|
|
||||||
yield self._update_states([prev_state.copy_and_replace(**new_fields)])
|
yield self._update_states([prev_state.copy_and_replace(**new_fields)])
|
||||||
|
|
||||||
|
@ -823,7 +823,7 @@ def should_notify(old_state, new_state):
|
||||||
if new_state.currently_active != old_state.currently_active:
|
if new_state.currently_active != old_state.currently_active:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
if new_state.last_active - old_state.last_active > LAST_ACTIVE_GRANULARITY:
|
if new_state.last_active_ts - old_state.last_active_ts > LAST_ACTIVE_GRANULARITY:
|
||||||
# Always notify for a transition where last active gets bumped.
|
# Always notify for a transition where last active gets bumped.
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
@ -841,8 +841,8 @@ def _format_user_presence_state(state, now):
|
||||||
"presence": state.state,
|
"presence": state.state,
|
||||||
"user_id": state.user_id,
|
"user_id": state.user_id,
|
||||||
}
|
}
|
||||||
if state.last_active:
|
if state.last_active_ts:
|
||||||
content["last_active_ago"] = now - state.last_active
|
content["last_active_ago"] = now - state.last_active_ts
|
||||||
if state.status_msg and state.state != PresenceState.OFFLINE:
|
if state.status_msg and state.state != PresenceState.OFFLINE:
|
||||||
content["status_msg"] = state.status_msg
|
content["status_msg"] = state.status_msg
|
||||||
if state.state == PresenceState.ONLINE:
|
if state.state == PresenceState.ONLINE:
|
||||||
|
|
|
@ -203,8 +203,8 @@ class DataStore(RoomMemberStore, RoomStore,
|
||||||
"""
|
"""
|
||||||
|
|
||||||
sql = (
|
sql = (
|
||||||
"SELECT user_id, state, last_active, last_federation_update,"
|
"SELECT user_id, state, last_active_ts, last_federation_update_ts,"
|
||||||
" last_user_sync, status_msg, currently_active FROM presence_stream"
|
" last_user_sync_ts, status_msg, currently_active FROM presence_stream"
|
||||||
" WHERE state != ?"
|
" WHERE state != ?"
|
||||||
)
|
)
|
||||||
sql = self.database_engine.convert_param_style(sql)
|
sql = self.database_engine.convert_param_style(sql)
|
||||||
|
|
|
@ -22,8 +22,9 @@ from twisted.internet import defer
|
||||||
|
|
||||||
|
|
||||||
class UserPresenceState(namedtuple("UserPresenceState",
|
class UserPresenceState(namedtuple("UserPresenceState",
|
||||||
("user_id", "state", "last_active", "last_federation_update",
|
("user_id", "state", "last_active_ts",
|
||||||
"last_user_sync", "status_msg", "currently_active"))):
|
"last_federation_update_ts", "last_user_sync_ts",
|
||||||
|
"status_msg", "currently_active"))):
|
||||||
"""Represents the current presence state of the user.
|
"""Represents the current presence state of the user.
|
||||||
|
|
||||||
user_id (str)
|
user_id (str)
|
||||||
|
@ -46,9 +47,9 @@ class UserPresenceState(namedtuple("UserPresenceState",
|
||||||
return cls(
|
return cls(
|
||||||
user_id=user_id,
|
user_id=user_id,
|
||||||
state=PresenceState.OFFLINE,
|
state=PresenceState.OFFLINE,
|
||||||
last_active=0,
|
last_active_ts=0,
|
||||||
last_federation_update=0,
|
last_federation_update_ts=0,
|
||||||
last_user_sync=0,
|
last_user_sync_ts=0,
|
||||||
status_msg=None,
|
status_msg=None,
|
||||||
currently_active=False,
|
currently_active=False,
|
||||||
)
|
)
|
||||||
|
@ -82,9 +83,9 @@ class PresenceStore(SQLBaseStore):
|
||||||
"stream_id": stream_id,
|
"stream_id": stream_id,
|
||||||
"user_id": state.user_id,
|
"user_id": state.user_id,
|
||||||
"state": state.state,
|
"state": state.state,
|
||||||
"last_active": state.last_active,
|
"last_active_ts": state.last_active_ts,
|
||||||
"last_federation_update": state.last_federation_update,
|
"last_federation_update_ts": state.last_federation_update_ts,
|
||||||
"last_user_sync": state.last_user_sync,
|
"last_user_sync_ts": state.last_user_sync_ts,
|
||||||
"status_msg": state.status_msg,
|
"status_msg": state.status_msg,
|
||||||
"currently_active": state.currently_active,
|
"currently_active": state.currently_active,
|
||||||
}
|
}
|
||||||
|
@ -121,9 +122,9 @@ class PresenceStore(SQLBaseStore):
|
||||||
retcols=(
|
retcols=(
|
||||||
"user_id",
|
"user_id",
|
||||||
"state",
|
"state",
|
||||||
"last_active",
|
"last_active_ts",
|
||||||
"last_federation_update",
|
"last_federation_update_ts",
|
||||||
"last_user_sync",
|
"last_user_sync_ts",
|
||||||
"status_msg",
|
"status_msg",
|
||||||
"currently_active",
|
"currently_active",
|
||||||
),
|
),
|
||||||
|
|
|
@ -18,9 +18,9 @@
|
||||||
stream_id BIGINT,
|
stream_id BIGINT,
|
||||||
user_id TEXT,
|
user_id TEXT,
|
||||||
state TEXT,
|
state TEXT,
|
||||||
last_active BIGINT,
|
last_active_ts BIGINT,
|
||||||
last_federation_update BIGINT,
|
last_federation_update_ts BIGINT,
|
||||||
last_user_sync BIGINT,
|
last_user_sync_ts BIGINT,
|
||||||
status_msg TEXT,
|
status_msg TEXT,
|
||||||
currently_active BOOLEAN
|
currently_active BOOLEAN
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in New Issue