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.
Files changed (22) hide show
  1. {socketflow-0.1.3 → socketflow-0.1.4}/PKG-INFO +1 -1
  2. {socketflow-0.1.3 → socketflow-0.1.4}/socketflow/__init__.py +1 -1
  3. {socketflow-0.1.3 → socketflow-0.1.4}/socketflow/client_side/client.py +11 -3
  4. {socketflow-0.1.3 → socketflow-0.1.4}/socketflow/global_side/event.py +7 -0
  5. {socketflow-0.1.3 → socketflow-0.1.4}/socketflow/server_side/server.py +7 -2
  6. {socketflow-0.1.3 → socketflow-0.1.4}/socketflow.egg-info/PKG-INFO +1 -1
  7. {socketflow-0.1.3 → socketflow-0.1.4}/README.md +0 -0
  8. {socketflow-0.1.3 → socketflow-0.1.4}/setup.cfg +0 -0
  9. {socketflow-0.1.3 → socketflow-0.1.4}/setup.py +0 -0
  10. {socketflow-0.1.3 → socketflow-0.1.4}/socketflow/client_side/__init__.py +0 -0
  11. {socketflow-0.1.3 → socketflow-0.1.4}/socketflow/global_side/__init__.py +0 -0
  12. {socketflow-0.1.3 → socketflow-0.1.4}/socketflow/global_side/blueprint.py +0 -0
  13. {socketflow-0.1.3 → socketflow-0.1.4}/socketflow/global_side/compression.py +0 -0
  14. {socketflow-0.1.3 → socketflow-0.1.4}/socketflow/global_side/dispatcher.py +0 -0
  15. {socketflow-0.1.3 → socketflow-0.1.4}/socketflow/global_side/exceptions.py +0 -0
  16. {socketflow-0.1.3 → socketflow-0.1.4}/socketflow/global_side/message_handler.py +0 -0
  17. {socketflow-0.1.3 → socketflow-0.1.4}/socketflow/global_side/message_manager.py +0 -0
  18. {socketflow-0.1.3 → socketflow-0.1.4}/socketflow/server_side/__init__.py +0 -0
  19. {socketflow-0.1.3 → socketflow-0.1.4}/socketflow.egg-info/SOURCES.txt +0 -0
  20. {socketflow-0.1.3 → socketflow-0.1.4}/socketflow.egg-info/dependency_links.txt +0 -0
  21. {socketflow-0.1.3 → socketflow-0.1.4}/socketflow.egg-info/not-zip-safe +0 -0
  22. {socketflow-0.1.3 → socketflow-0.1.4}/socketflow.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: socketflow
3
- Version: 0.1.3
3
+ Version: 0.1.4
4
4
  Summary: TCP networking for Python, without the boilerplate.
5
5
  Home-page: https://github.com/ayammaximilian/socketflow
6
6
  Author: SocketFlow Team
@@ -20,7 +20,7 @@ from .global_side.exceptions import (
20
20
  ExceptionType,
21
21
  )
22
22
 
23
- __version__ = "0.1.3"
23
+ __version__ = "0.1.4"
24
24
  __all__ = [
25
25
  "TcpServer",
26
26
  "TcpClient",
@@ -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).start()
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:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: socketflow
3
- Version: 0.1.3
3
+ Version: 0.1.4
4
4
  Summary: TCP networking for Python, without the boilerplate.
5
5
  Home-page: https://github.com/ayammaximilian/socketflow
6
6
  Author: SocketFlow Team
File without changes
File without changes
File without changes