MCPcopy Create free account
hub / github.com/Moddable-OpenSource/moddable / readPacket

Method readPacket

modules/crypt/ssl/session_original.js:231–268  ·  view source on GitHub ↗
(s, available)

Source from the content-addressed store, hash-verified

229 s.write(packet);
230 }
231 readPacket(s, available) {
232 let packetBuffer = this.packetBuffer;
233 if (packetBuffer.length < 5) {
234 let need = 5 - packetBuffer.length;
235 let c = s.read(ArrayBuffer, need);
236 if (!c)
237 return;
238 c = new Uint8Array(c);
239 this.packetBuffer = new Uint8Array(packetBuffer.length + c.length);
240 this.packetBuffer.set(packetBuffer);
241 this.packetBuffer.set(c, packetBuffer.length);
242 packetBuffer = this.packetBuffer;
243 if (packetBuffer.length < 5)
244 return;
245 available -= 5;
246
247 this.packetBuffer = new Uint8Array(((packetBuffer[3] << 8) | packetBuffer[4]) + 5); /* packet length including 5 byte header */
248 this.packetBuffer.set(packetBuffer);
249 packetBuffer = this.packetBuffer;
250 packetBuffer.offset = 5;
251 }
252 let need = packetBuffer.length - packetBuffer.offset;
253 if (need) {
254 if (!available)
255 return;
256 if (need > available)
257 need = available;
258 let c = s.read(ArrayBuffer, need);
259 if (!c)
260 return;
261 this.packetBuffer.set(new Uint8Array(c), packetBuffer.offset);
262 packetBuffer.offset += c.byteLength;
263 if (packetBuffer.offset < packetBuffer.length)
264 return;
265 }
266 this.packetBuffer = new Uint8Array;
267 return packetBuffer.buffer;
268 }
269 get bytesAvailable() {
270 return this.applicationData ? (this.applicationData.end - this.applicationData.position) : 0;
271 }

Callers 2

handshakeMethod · 0.95
readMethod · 0.95

Calls 2

readMethod · 0.65
setMethod · 0.65

Tested by

no test coverage detected