@scrypted/server 0.7.14 → 0.7.16
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.
Potentially problematic release.
This version of @scrypted/server might be problematic. Click here for more details.
- package/package.json +1 -1
- package/python/rpc_reader.py +21 -6
package/package.json
CHANGED
package/python/rpc_reader.py
CHANGED
@@ -13,6 +13,7 @@ import rpc
|
|
13
13
|
import concurrent.futures
|
14
14
|
import json
|
15
15
|
|
16
|
+
|
16
17
|
class BufferSerializer(rpc.RpcSerializer):
|
17
18
|
def serialize(self, value, serializationContext):
|
18
19
|
return base64.b64encode(value).decode('utf8')
|
@@ -35,6 +36,7 @@ class SidebandBufferSerializer(rpc.RpcSerializer):
|
|
35
36
|
buffer = buffers.pop()
|
36
37
|
return buffer
|
37
38
|
|
39
|
+
|
38
40
|
class RpcTransport:
|
39
41
|
async def prepare(self):
|
40
42
|
pass
|
@@ -48,6 +50,7 @@ class RpcTransport:
|
|
48
50
|
def writeJSON(self, json, reject):
|
49
51
|
pass
|
50
52
|
|
53
|
+
|
51
54
|
class RpcFileTransport(RpcTransport):
|
52
55
|
reader: asyncio.StreamReader
|
53
56
|
|
@@ -71,7 +74,7 @@ class RpcFileTransport(RpcTransport):
|
|
71
74
|
return data
|
72
75
|
message = json.loads(data)
|
73
76
|
return message
|
74
|
-
|
77
|
+
|
75
78
|
def writeMessage(self, type: int, buffer, reject):
|
76
79
|
length = len(buffer) + 1
|
77
80
|
lb = length.to_bytes(4, 'big')
|
@@ -88,15 +91,24 @@ class RpcFileTransport(RpcTransport):
|
|
88
91
|
def writeBuffer(self, buffer, reject):
|
89
92
|
return self.writeMessage(1, buffer, reject)
|
90
93
|
|
94
|
+
|
91
95
|
class RpcStreamTransport(RpcTransport):
|
92
96
|
def __init__(self, reader: asyncio.StreamReader, writer: asyncio.StreamWriter) -> None:
|
93
97
|
super().__init__()
|
94
98
|
self.reader = reader
|
95
99
|
self.writer = writer
|
96
100
|
|
97
|
-
async def read(self
|
98
|
-
|
99
|
-
|
101
|
+
async def read(self):
|
102
|
+
lengthBytes = await self.reader.readexactly(4)
|
103
|
+
typeBytes = await self.reader.readexactly(1)
|
104
|
+
type = typeBytes[0]
|
105
|
+
length = int.from_bytes(lengthBytes, 'big')
|
106
|
+
data = await self.reader.readexactly(length - 1)
|
107
|
+
if type == 1:
|
108
|
+
return data
|
109
|
+
message = json.loads(data)
|
110
|
+
return message
|
111
|
+
|
100
112
|
def writeMessage(self, type: int, buffer, reject):
|
101
113
|
length = len(buffer) + 1
|
102
114
|
lb = length.to_bytes(4, 'big')
|
@@ -113,6 +125,7 @@ class RpcStreamTransport(RpcTransport):
|
|
113
125
|
def writeBuffer(self, buffer, reject):
|
114
126
|
return self.writeMessage(1, buffer, reject)
|
115
127
|
|
128
|
+
|
116
129
|
class RpcConnectionTransport(RpcTransport):
|
117
130
|
def __init__(self, connection: multiprocessing.connection.Connection) -> None:
|
118
131
|
super().__init__()
|
@@ -121,7 +134,7 @@ class RpcConnectionTransport(RpcTransport):
|
|
121
134
|
|
122
135
|
async def read(self):
|
123
136
|
return await asyncio.get_event_loop().run_in_executor(self.executor, lambda: self.connection.recv())
|
124
|
-
|
137
|
+
|
125
138
|
def writeMessage(self, json, reject):
|
126
139
|
try:
|
127
140
|
self.connection.send(json)
|
@@ -131,10 +144,11 @@ class RpcConnectionTransport(RpcTransport):
|
|
131
144
|
|
132
145
|
def writeJSON(self, json, reject):
|
133
146
|
return self.writeMessage(json, reject)
|
134
|
-
|
147
|
+
|
135
148
|
def writeBuffer(self, buffer, reject):
|
136
149
|
return self.writeMessage(bytes(buffer), reject)
|
137
150
|
|
151
|
+
|
138
152
|
async def readLoop(loop, peer: rpc.RpcPeer, rpcTransport: RpcTransport):
|
139
153
|
deserializationContext = {
|
140
154
|
'buffers': []
|
@@ -154,6 +168,7 @@ async def readLoop(loop, peer: rpc.RpcPeer, rpcTransport: RpcTransport):
|
|
154
168
|
'buffers': []
|
155
169
|
}
|
156
170
|
|
171
|
+
|
157
172
|
async def prepare_peer_readloop(loop: AbstractEventLoop, rpcTransport: RpcTransport):
|
158
173
|
await rpcTransport.prepare()
|
159
174
|
|