Skip to content

Commit 67f142d

Browse files
committed
Completely delete the global state
1 parent c987788 commit 67f142d

File tree

5 files changed

+9
-198
lines changed

5 files changed

+9
-198
lines changed

src/murfey/server/api/__init__.py

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,9 @@
7777
BLSampleParameters,
7878
BLSubSampleParameters,
7979
ClientInfo,
80-
ContextInfo,
8180
CurrentGainRef,
8281
DCGroupParameters,
8382
DCParameters,
84-
File,
8583
FoilHoleParameters,
8684
FractionationParameters,
8785
GainReference,
@@ -1021,23 +1019,6 @@ def visit_info(
10211019
return None
10221020

10231021

1024-
@router.post("/visits/{visit_name}/context")
1025-
async def register_context(context_info: ContextInfo):
1026-
await ws.manager.broadcast(f"Context registered: {context_info}")
1027-
await ws.manager.set_state("experiment_type", context_info.experiment_type)
1028-
await ws.manager.set_state(
1029-
"acquisition_software", context_info.acquisition_software
1030-
)
1031-
1032-
1033-
@router.post("/visits/{visit_name}/files")
1034-
async def add_file(file: File):
1035-
message = f"File {file} transferred"
1036-
log.info(message)
1037-
await ws.manager.broadcast(f"File {file} transferred")
1038-
return file
1039-
1040-
10411022
@router.post("/instruments/{instrument_name}/feedback")
10421023
async def send_murfey_message(instrument_name: str, msg: RegistrationMessage):
10431024
if _transport_object:
@@ -1320,7 +1301,6 @@ async def request_tomography_preprocessing(
13201301
db.add(for_stash)
13211302
db.commit()
13221303
db.close()
1323-
# await ws.manager.broadcast(f"Pre-processing requested for {ppath.name}")
13241304
return proc_file
13251305

13261306

src/murfey/server/demo_api.py

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,9 @@
6262
)
6363
from murfey.util.models import (
6464
ClientInfo,
65-
ContextInfo,
6665
CurrentGainRef,
6766
DCGroupParameters,
6867
DCParameters,
69-
File,
7068
FoilHoleParameters,
7169
FractionationParameters,
7270
GainReference,
@@ -899,26 +897,6 @@ def visit_info(request: Request, visit_name: str):
899897
)
900898

901899

902-
@router.post("/visits/{visit_name}/context")
903-
async def register_context(context_info: ContextInfo):
904-
log.info(
905-
f"Context {context_info.experiment_type}:{context_info.acquisition_software} registered"
906-
)
907-
await ws.manager.broadcast(f"Context registered: {context_info}")
908-
await ws.manager.set_state("experiment_type", context_info.experiment_type)
909-
await ws.manager.set_state(
910-
"acquisition_software", context_info.acquisition_software
911-
)
912-
913-
914-
@router.post("/visits/{visit_name}/files")
915-
async def add_file(file: File):
916-
message = f"File {file} transferred"
917-
log.info(message)
918-
await ws.manager.broadcast(f"File {file} transferred")
919-
return file
920-
921-
922900
@router.post("/feedback")
923901
async def send_murfey_message(msg: RegistrationMessage):
924902
pass

src/murfey/server/websocket.py

Lines changed: 9 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import json
55
import logging
66
from datetime import datetime
7-
from typing import Any, Dict, Generic, TypeVar, Union
7+
from typing import Any, Dict, TypeVar, Union
88

99
from fastapi import APIRouter, WebSocket, WebSocketDisconnect
1010
from sqlmodel import select
@@ -13,19 +13,16 @@
1313
from murfey.server.murfey_db import get_murfey_db_session
1414
from murfey.util import sanitise
1515
from murfey.util.db import ClientEnvironment
16-
from murfey.util.state import State, global_state
1716

1817
T = TypeVar("T")
1918

2019
ws = APIRouter(prefix="/ws", tags=["websocket"])
2120
log = logging.getLogger("murfey.server.websocket")
2221

2322

24-
class ConnectionManager(Generic[T]):
25-
def __init__(self, state: State[T]):
23+
class ConnectionManager:
24+
def __init__(self):
2625
self.active_connections: Dict[int | str, WebSocket] = {}
27-
self._state = state
28-
self._state.subscribe(self._broadcast_state_update)
2926

3027
async def connect(
3128
self, websocket: WebSocket, client_id: int | str, register_client: bool = True
@@ -38,7 +35,6 @@ async def connect(
3835
"To register a client the client ID must be an integer"
3936
)
4037
self._register_new_client(client_id)
41-
await websocket.send_json({"message": "state-full", "state": self._state.data})
4238

4339
@staticmethod
4440
def _register_new_client(client_id: int):
@@ -48,9 +44,7 @@ def _register_new_client(client_id: int):
4844
murfey_db.commit()
4945
murfey_db.close()
5046

51-
def disconnect(
52-
self, websocket: WebSocket, client_id: int | str, unregister_client: bool = True
53-
):
47+
def disconnect(self, client_id: int | str, unregister_client: bool = True):
5448
self.active_connections.pop(client_id)
5549
if unregister_client:
5650
murfey_db = next(get_murfey_db_session())
@@ -67,33 +61,14 @@ async def broadcast(self, message: str):
6761
for connection in self.active_connections:
6862
await self.active_connections[connection].send_text(message)
6963

70-
async def _broadcast_state_update(
71-
self, attribute: str, value: T | None, message: str = "state-update"
72-
):
73-
for connection in self.active_connections:
74-
await self.active_connections[connection].send_json(
75-
{"message": message, "attribute": attribute, "value": value}
76-
)
77-
78-
async def set_state(self, attribute: str, value: T):
79-
log.info(
80-
f"State attribute {sanitise(attribute)!r} set to {sanitise(str(value))!r}"
81-
)
82-
await self._state.set(attribute, value)
83-
84-
async def delete_state(self, attribute: str):
85-
log.info(f"State attribute {sanitise(attribute)!r} removed")
86-
await self._state.delete(attribute)
87-
8864

89-
manager = ConnectionManager(global_state)
65+
manager = ConnectionManager()
9066

9167

9268
@ws.websocket("/test/{client_id}")
9369
async def websocket_endpoint(websocket: WebSocket, client_id: int):
9470
await manager.connect(websocket, client_id)
9571
await manager.broadcast(f"Client {client_id} joined")
96-
await manager.set_state(f"Client {client_id}", "joined")
9772
try:
9873
while True:
9974
data = await websocket.receive_text()
@@ -111,9 +86,8 @@ async def websocket_endpoint(websocket: WebSocket, client_id: int):
11186
select(ClientEnvironment).where(ClientEnvironment.client_id == client_id)
11287
).one()
11388
prom.monitoring_switch.labels(visit=client_env.visit).set(0)
114-
manager.disconnect(websocket, client_id)
89+
manager.disconnect(client_id)
11590
await manager.broadcast(f"Client #{client_id} disconnected")
116-
await manager.delete_state(f"Client {client_id}")
11791

11892

11993
@ws.websocket("/connect/{client_id}")
@@ -122,7 +96,6 @@ async def websocket_connection_endpoint(
12296
):
12397
await manager.connect(websocket, client_id, register_client=False)
12498
await manager.broadcast(f"Client {client_id} joined")
125-
await manager.set_state(f"Client {client_id}", "joined")
12699
try:
127100
while True:
128101
data = await websocket.receive_text()
@@ -138,9 +111,8 @@ async def websocket_connection_endpoint(
138111
await manager.broadcast(f"Client #{client_id} sent message {data}")
139112
except WebSocketDisconnect:
140113
log.info(f"Disconnecting Client {sanitise(str(client_id))}")
141-
manager.disconnect(websocket, client_id, unregister_client=False)
114+
manager.disconnect(client_id, unregister_client=False)
142115
await manager.broadcast(f"Client #{client_id} disconnected")
143-
await manager.delete_state(f"Client {client_id}")
144116

145117

146118
async def check_connections(active_connections):
@@ -178,7 +150,7 @@ async def close_ws_connection(client_id: int):
178150
murfey_db.close()
179151
client_id_str = str(client_id).replace("\r\n", "").replace("\n", "")
180152
log.info(f"Disconnecting {client_id_str}")
181-
manager.disconnect(manager.active_connections[client_id], client_id)
153+
manager.disconnect(client_id)
182154
prom.monitoring_switch.labels(visit=visit_name).set(0)
183155
await manager.broadcast(f"Client #{client_id} disconnected")
184156

@@ -187,5 +159,5 @@ async def close_ws_connection(client_id: int):
187159
async def close_unrecorded_ws_connection(client_id: Union[int, str]):
188160
client_id_str = str(client_id).replace("\r\n", "").replace("\n", "")
189161
log.info(f"Disconnecting {client_id_str}")
190-
manager.disconnect(manager.active_connections[client_id], client_id)
162+
manager.disconnect(client_id)
191163
await manager.broadcast(f"Client #{client_id} disconnected")

src/murfey/util/models.py

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -83,14 +83,6 @@ class RegistrationMessage(BaseModel):
8383
params: Optional[Dict[str, Any]] = None
8484

8585

86-
class File(BaseModel):
87-
name: str
88-
description: str
89-
size: int
90-
timestamp: datetime
91-
full_path: str
92-
93-
9486
class ConnectionFileParameters(BaseModel):
9587
filename: str
9688
destinations: List[str]
@@ -102,11 +94,6 @@ class SessionInfo(BaseModel):
10294
rescale: bool = True
10395

10496

105-
class ContextInfo(BaseModel):
106-
experiment_type: str
107-
acquisition_software: str
108-
109-
11097
class ClientInfo(BaseModel):
11198
id: int
11299

src/murfey/util/state.py

Lines changed: 0 additions & 106 deletions
This file was deleted.

0 commit comments

Comments
 (0)