MCPcopy Create free account
hub / github.com/deepclause/agentvm / writeTcpData

Method writeTcpData

src/ringbuffer.js:156–194  ·  view source on GitHub ↗

* Write TCP data - writes as much as will fit, returns amount written * @param {string} key - TCP session key * @param {Uint8Array|Buffer} data - TCP payload * @param {number} offset - Start offset in data (default 0) * @returns {number} - Number of bytes written (0 if buffer ful

(key, data, offset = 0)

Source from the content-addressed store, hash-verified

154 * @returns {number} - Number of bytes written (0 if buffer full)
155 */
156 writeTcpData(key, data, offset = 0) {
157 // Format: keyLen(1) + key + data
158 const keyBytes = Buffer.from(key, 'utf8');
159
160 // Max payload size is 65535 - 1 (keyLen) - keyBytes.length
161 // Use 60000 as safe chunk size to leave room for header
162 const maxDataPerChunk = 60000;
163 const perChunkOverhead = 3 + 1 + keyBytes.length; // 3 bytes msg header + 1 keyLen + key
164
165 let bytesWritten = 0;
166
167 while (offset + bytesWritten < data.length) {
168 const remaining = data.length - offset - bytesWritten;
169 const chunkSize = Math.min(maxDataPerChunk, remaining);
170 const payloadSize = 1 + keyBytes.length + chunkSize;
171 const msgSize = 3 + payloadSize;
172
173 // Check if we have space for at least one chunk
174 if (!this.hasSpace(msgSize)) {
175 break; // No space, return what we've written so far
176 }
177
178 const payload = Buffer.alloc(payloadSize);
179 payload[0] = keyBytes.length;
180 keyBytes.copy(payload, 1);
181
182 const srcOffset = offset + bytesWritten;
183 if (Buffer.isBuffer(data)) {
184 data.copy(payload, 1 + keyBytes.length, srcOffset, srcOffset + chunkSize);
185 } else {
186 payload.set(data.subarray(srcOffset, srcOffset + chunkSize), 1 + keyBytes.length);
187 }
188
189 this.writeMessage(NET_MSG_TCP_DATA, payload);
190 bytesWritten += chunkSize;
191 }
192
193 return bytesWritten;
194 }
195
196 /**
197 * Write TCP end event

Callers 2

_handleTcpConnectMethod · 0.80

Calls 2

hasSpaceMethod · 0.95
writeMessageMethod · 0.95

Tested by

no test coverage detected