Skip to content

Commit 59a84c6

Browse files
committed
Stored the time offset between the server and the client as an attribute in the MultigridController; convert the received server timestamp into the client's time when updating visit end times
1 parent 7152a5e commit 59a84c6

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

src/murfey/client/multigrid_control.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -104,14 +104,18 @@ def __post_init__(self):
104104
register_client=False,
105105
)
106106

107+
# Calculate the time offset between the client and the server
108+
current_time = datetime.now()
109+
server_timestamp = requests.get(
110+
f"{self.murfey_url}{url_path_for('session_control.router', 'get_current_timestamp')}"
111+
).json()["timestamp"]
112+
self.server_time_offset = current_time - datetime.fromtimestamp(
113+
server_timestamp
114+
)
115+
116+
# Store the visit end time in the current device's equivalent time
107117
if self.visit_end_time:
108-
current_time = datetime.now()
109-
server_timestamp = requests.get(
110-
f"{self.murfey_url}{url_path_for('session_control.router', 'get_current_timestamp')}"
111-
).json()["timestamp"]
112-
self.visit_end_time += current_time - datetime.fromtimestamp(
113-
server_timestamp
114-
)
118+
self.visit_end_time += self.server_time_offset
115119

116120
def _multigrid_watcher_finalised(self):
117121
self.multigrid_watcher_active = False
@@ -153,9 +157,10 @@ def finalise(self):
153157
self._finalise_rsyncer(p)
154158

155159
def update_visit_time(self, new_end_time: datetime):
156-
self.visit_end_time = new_end_time
160+
# Convert the received server timestamp into the local equivalent
161+
self.visit_end_time = new_end_time + self.server_time_offset
157162
for rp in self.rsync_processes.values():
158-
rp._end_time = new_end_time
163+
rp._end_time = self.visit_end_time
159164

160165
def _start_rsyncer_multigrid(
161166
self,

0 commit comments

Comments
 (0)