@scrypted/server 0.7.14 → 0.7.15

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrypted/server",
3
- "version": "0.7.14",
3
+ "version": "0.7.15",
4
4
  "description": "",
5
5
  "dependencies": {
6
6
  "@mapbox/node-pre-gyp": "^1.0.10",
@@ -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, n: int):
98
- return await self.reader.readexactly(n)
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