wslink 2.2.0__py3-none-any.whl → 2.2.2__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- wslink/backends/aiohttp/__init__.py +3 -1
- wslink/websocket.py +15 -0
- {wslink-2.2.0.dist-info → wslink-2.2.2.dist-info}/METADATA +1 -1
- {wslink-2.2.0.dist-info → wslink-2.2.2.dist-info}/RECORD +6 -6
- {wslink-2.2.0.dist-info → wslink-2.2.2.dist-info}/WHEEL +1 -1
- {wslink-2.2.0.dist-info → wslink-2.2.2.dist-info}/top_level.txt +0 -0
@@ -23,6 +23,8 @@ HTTP_HEADERS: str | None = os.environ.get("WSLINK_HTTP_HEADERS") # path to json
|
|
23
23
|
if HTTP_HEADERS and Path(HTTP_HEADERS).exists():
|
24
24
|
HTTP_HEADERS: dict = json.loads(Path(HTTP_HEADERS).read_text())
|
25
25
|
|
26
|
+
STATE_KEY = aiohttp_web.AppKey("state", str)
|
27
|
+
|
26
28
|
logger = logging.getLogger(__name__)
|
27
29
|
|
28
30
|
# -----------------------------------------------------------------------------
|
@@ -92,7 +94,7 @@ class WebAppServer(AbstractWebApp):
|
|
92
94
|
self.app.router.add_route("GET", "/", _root_handler)
|
93
95
|
self.app.add_routes(routes)
|
94
96
|
|
95
|
-
self.app[
|
97
|
+
self.app[STATE_KEY] = {}
|
96
98
|
|
97
99
|
# -------------------------------------------------------------------------
|
98
100
|
# Server status
|
wslink/websocket.py
CHANGED
@@ -67,17 +67,28 @@ class LinkProtocol(object):
|
|
67
67
|
|
68
68
|
|
69
69
|
class NetworkMonitor:
|
70
|
+
"""
|
71
|
+
Provide context manager for increase/decrease pending request
|
72
|
+
either synchronously or asynchronously.
|
73
|
+
|
74
|
+
The Asynchronous version also await completion.
|
75
|
+
"""
|
76
|
+
|
70
77
|
def __init__(self):
|
78
|
+
|
71
79
|
self.pending = 0
|
72
80
|
self.event = asyncio.Event()
|
73
81
|
|
74
82
|
def network_call_completed(self):
|
83
|
+
"""Trigger completion event"""
|
75
84
|
self.event.set()
|
76
85
|
|
77
86
|
def on_enter(self, *args, **kwargs):
|
87
|
+
"""Increase pending request"""
|
78
88
|
self.pending += 1
|
79
89
|
|
80
90
|
def on_exit(self, *args, **kwargs):
|
91
|
+
"""Decrease pending request and trigger completion event if we reach 0 pending request"""
|
81
92
|
self.pending -= 1
|
82
93
|
if self.pending == 0 and not self.event.is_set():
|
83
94
|
self.event.set()
|
@@ -97,6 +108,10 @@ class NetworkMonitor:
|
|
97
108
|
|
98
109
|
async def __aexit__(self, exc_t, exc_v, exc_tb):
|
99
110
|
self.on_exit()
|
111
|
+
await self.completion()
|
112
|
+
|
113
|
+
async def completion(self):
|
114
|
+
"""Await completion of any pending network request"""
|
100
115
|
while self.pending:
|
101
116
|
self.event.clear()
|
102
117
|
await self.event.wait()
|
@@ -8,9 +8,9 @@ wslink/relay.py,sha256=E8Lzu2Ay7KbOheN1-ArAZawo8lLqdDgJXOZSBuMknYs,86
|
|
8
8
|
wslink/server.py,sha256=yvhCjpzPOfhbZrpDvW9i4H_uSyuQAe3ZOP-BRBmgHQA,9326
|
9
9
|
wslink/ssl_context.py,sha256=hNOJJCdrStws1Qf6vPvY4vTk9Bf8J5d90W3fS0cRv8o,2290
|
10
10
|
wslink/uri.py,sha256=woCQ4yChUqTMg9IT6YYDtUYeKmCg7OUCEgeBGA-19DY,384
|
11
|
-
wslink/websocket.py,sha256=
|
11
|
+
wslink/websocket.py,sha256=wOuLfYeM72Ikzc9YA0qZjj6EfSXXQp-8p0uP-H9gapE,6004
|
12
12
|
wslink/backends/__init__.py,sha256=cyJGjm-YyBSyOEX81owyTbJ3YnrA6dB7--B4LnsEtHI,1214
|
13
|
-
wslink/backends/aiohttp/__init__.py,sha256=
|
13
|
+
wslink/backends/aiohttp/__init__.py,sha256=SSK5a_lxuEZGyW_mMMipgvAhJQQLhxAImR3jRokFchM,9301
|
14
14
|
wslink/backends/aiohttp/launcher.py,sha256=gHNMvtgNHEwBN_QBRDSCrTp2B4K1PsfV81rKaHi7Cxo,8897
|
15
15
|
wslink/backends/aiohttp/relay.py,sha256=oZAzIQTpsQaObWXaa-_VtoTOUQALC_QLDd9UvWspYaU,13311
|
16
16
|
wslink/backends/generic/__init__.py,sha256=Qu65gWsd2xCSsxybnDtEDI5vMjHN-F5jgPZOyNIxnGs,112
|
@@ -19,7 +19,7 @@ wslink/backends/jupyter/__init__.py,sha256=Qu65gWsd2xCSsxybnDtEDI5vMjHN-F5jgPZOy
|
|
19
19
|
wslink/backends/jupyter/core.py,sha256=PCQN-uZPFROnRv8B5dNwnwHV67o4Bpme3_Z6V-zbOUA,3864
|
20
20
|
wslink/backends/tornado/__init__.py,sha256=Qu65gWsd2xCSsxybnDtEDI5vMjHN-F5jgPZOyNIxnGs,112
|
21
21
|
wslink/backends/tornado/core.py,sha256=tPMkkhWuO_ovkisVim0zcegwZKEAG4IRUdd_O_0a_R0,2157
|
22
|
-
wslink-2.2.
|
23
|
-
wslink-2.2.
|
24
|
-
wslink-2.2.
|
25
|
-
wslink-2.2.
|
22
|
+
wslink-2.2.2.dist-info/METADATA,sha256=WrcziFBHM4dhv2Vv6UJOzLSuyS1xketfoAsT6IMYCj8,3120
|
23
|
+
wslink-2.2.2.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
24
|
+
wslink-2.2.2.dist-info/top_level.txt,sha256=N0d8eqvhwhfW1p1yPTmvxlbzhjz7ZyhBfysNvaFqpQY,7
|
25
|
+
wslink-2.2.2.dist-info/RECORD,,
|
File without changes
|