socketflow 0.1.3__tar.gz → 0.1.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {socketflow-0.1.3 → socketflow-0.1.4}/PKG-INFO +1 -1
- {socketflow-0.1.3 → socketflow-0.1.4}/socketflow/__init__.py +1 -1
- {socketflow-0.1.3 → socketflow-0.1.4}/socketflow/client_side/client.py +11 -3
- {socketflow-0.1.3 → socketflow-0.1.4}/socketflow/global_side/event.py +7 -0
- {socketflow-0.1.3 → socketflow-0.1.4}/socketflow/server_side/server.py +7 -2
- {socketflow-0.1.3 → socketflow-0.1.4}/socketflow.egg-info/PKG-INFO +1 -1
- {socketflow-0.1.3 → socketflow-0.1.4}/README.md +0 -0
- {socketflow-0.1.3 → socketflow-0.1.4}/setup.cfg +0 -0
- {socketflow-0.1.3 → socketflow-0.1.4}/setup.py +0 -0
- {socketflow-0.1.3 → socketflow-0.1.4}/socketflow/client_side/__init__.py +0 -0
- {socketflow-0.1.3 → socketflow-0.1.4}/socketflow/global_side/__init__.py +0 -0
- {socketflow-0.1.3 → socketflow-0.1.4}/socketflow/global_side/blueprint.py +0 -0
- {socketflow-0.1.3 → socketflow-0.1.4}/socketflow/global_side/compression.py +0 -0
- {socketflow-0.1.3 → socketflow-0.1.4}/socketflow/global_side/dispatcher.py +0 -0
- {socketflow-0.1.3 → socketflow-0.1.4}/socketflow/global_side/exceptions.py +0 -0
- {socketflow-0.1.3 → socketflow-0.1.4}/socketflow/global_side/message_handler.py +0 -0
- {socketflow-0.1.3 → socketflow-0.1.4}/socketflow/global_side/message_manager.py +0 -0
- {socketflow-0.1.3 → socketflow-0.1.4}/socketflow/server_side/__init__.py +0 -0
- {socketflow-0.1.3 → socketflow-0.1.4}/socketflow.egg-info/SOURCES.txt +0 -0
- {socketflow-0.1.3 → socketflow-0.1.4}/socketflow.egg-info/dependency_links.txt +0 -0
- {socketflow-0.1.3 → socketflow-0.1.4}/socketflow.egg-info/not-zip-safe +0 -0
- {socketflow-0.1.3 → socketflow-0.1.4}/socketflow.egg-info/top_level.txt +0 -0
|
@@ -5,6 +5,7 @@ from ..global_side.event import (
|
|
|
5
5
|
ConnectData,
|
|
6
6
|
DisconnectData,
|
|
7
7
|
MessageReceivedData,
|
|
8
|
+
ResponseData,
|
|
8
9
|
ErrorData,
|
|
9
10
|
)
|
|
10
11
|
from ..global_side.dispatcher import EventDispatcher
|
|
@@ -86,14 +87,17 @@ class TcpClientProtocol:
|
|
|
86
87
|
server_addr = (
|
|
87
88
|
self.socket.getpeername() if self.socket else ("unknown", 0)
|
|
88
89
|
)
|
|
90
|
+
wait_response = headers.get("wait_response", False)
|
|
89
91
|
event_data = MessageReceivedData(
|
|
90
|
-
data=body, server_addr=server_addr, data_id=data_id
|
|
92
|
+
data=body, server_addr=server_addr, data_id=data_id,
|
|
93
|
+
direct_response=wait_response
|
|
91
94
|
)
|
|
92
95
|
|
|
96
|
+
# Resolve pending wait_response futures
|
|
93
97
|
if data_id and data_id in self.client.pending_responses:
|
|
94
98
|
future = self.client.pending_responses.pop(data_id)
|
|
95
99
|
if hasattr(future, "set_result") and not future.done():
|
|
96
|
-
future.set_result(body)
|
|
100
|
+
future.set_result(ResponseData(data=body, data_id=data_id))
|
|
97
101
|
continue
|
|
98
102
|
|
|
99
103
|
if path:
|
|
@@ -294,6 +298,7 @@ class TcpClient:
|
|
|
294
298
|
"type": "__user__",
|
|
295
299
|
"id": data_id,
|
|
296
300
|
"path": path,
|
|
301
|
+
"wait_response": wait_response,
|
|
297
302
|
}
|
|
298
303
|
|
|
299
304
|
if self.compress:
|
|
@@ -337,7 +342,9 @@ class TcpClient:
|
|
|
337
342
|
)
|
|
338
343
|
)
|
|
339
344
|
|
|
340
|
-
threading.Timer(wait_response_timeout, timeout_handler)
|
|
345
|
+
timer = threading.Timer(wait_response_timeout, timeout_handler)
|
|
346
|
+
timer.daemon = True
|
|
347
|
+
timer.start()
|
|
341
348
|
|
|
342
349
|
try:
|
|
343
350
|
return future.result()
|
|
@@ -354,6 +361,7 @@ class TcpClient:
|
|
|
354
361
|
f"Error while waiting for response: {e}"
|
|
355
362
|
)
|
|
356
363
|
finally:
|
|
364
|
+
timer.cancel()
|
|
357
365
|
self.pending_responses.pop(data_id, None)
|
|
358
366
|
|
|
359
367
|
def wait(self):
|
|
@@ -33,6 +33,13 @@ class MessageReceivedData:
|
|
|
33
33
|
server_addr: Optional[Tuple[str, int]] = None
|
|
34
34
|
data_id: Optional[str] = None
|
|
35
35
|
params: Dict[str, str] = field(default_factory=dict)
|
|
36
|
+
direct_response: bool = False
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
@dataclass
|
|
40
|
+
class ResponseData:
|
|
41
|
+
data: Any
|
|
42
|
+
data_id: Optional[str] = None
|
|
36
43
|
|
|
37
44
|
|
|
38
45
|
@dataclass
|
|
@@ -13,6 +13,7 @@ from ..global_side.event import (
|
|
|
13
13
|
ErrorData,
|
|
14
14
|
EventType,
|
|
15
15
|
MessageReceivedData,
|
|
16
|
+
ResponseData,
|
|
16
17
|
ServerStartData,
|
|
17
18
|
ServerStopData,
|
|
18
19
|
)
|
|
@@ -86,14 +87,17 @@ class TcpServerProtocol:
|
|
|
86
87
|
elif msg_type == "__user__":
|
|
87
88
|
path = headers.get("path")
|
|
88
89
|
data_id = headers.get("id")
|
|
90
|
+
wait_response = headers.get("wait_response", False)
|
|
89
91
|
event_data = MessageReceivedData(
|
|
90
|
-
data=body, client_addr=self.client_addr, data_id=data_id
|
|
92
|
+
data=body, client_addr=self.client_addr, data_id=data_id,
|
|
93
|
+
direct_response=wait_response
|
|
91
94
|
)
|
|
92
95
|
|
|
96
|
+
# Resolve pending wait_response futures
|
|
93
97
|
if data_id and data_id in self.server.pending_responses:
|
|
94
98
|
future = self.server.pending_responses.pop(data_id)
|
|
95
99
|
if hasattr(future, "set_result") and not future.done():
|
|
96
|
-
future.set_result(body)
|
|
100
|
+
future.set_result(ResponseData(data=body, data_id=data_id))
|
|
97
101
|
continue
|
|
98
102
|
|
|
99
103
|
if path:
|
|
@@ -305,6 +309,7 @@ class TcpServer:
|
|
|
305
309
|
"type": "__user__",
|
|
306
310
|
"id": data_id,
|
|
307
311
|
"path": path,
|
|
312
|
+
"wait_response": wait_response,
|
|
308
313
|
}
|
|
309
314
|
|
|
310
315
|
if self.compress:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|