(chan, cmd, wantReply)
| 1262 | sendPacket(this, this._packetRW.write.finalize(packet)); |
| 1263 | } |
| 1264 | exec(chan, cmd, wantReply) { |
| 1265 | if (this._server) |
| 1266 | throw new Error('Client-only method called in server mode'); |
| 1267 | |
| 1268 | // Does not consume window space |
| 1269 | |
| 1270 | const isBuf = Buffer.isBuffer(cmd); |
| 1271 | const cmdLen = (isBuf ? cmd.length : Buffer.byteLength(cmd)); |
| 1272 | let p = this._packetRW.write.allocStart; |
| 1273 | const packet = this._packetRW.write.alloc(1 + 4 + 4 + 4 + 1 + 4 + cmdLen); |
| 1274 | |
| 1275 | packet[p] = MESSAGE.CHANNEL_REQUEST; |
| 1276 | |
| 1277 | writeUInt32BE(packet, chan, ++p); |
| 1278 | |
| 1279 | writeUInt32BE(packet, 4, p += 4); |
| 1280 | packet.utf8Write('exec', p += 4, 4); |
| 1281 | |
| 1282 | packet[p += 4] = (wantReply === undefined || wantReply === true ? 1 : 0); |
| 1283 | |
| 1284 | writeUInt32BE(packet, cmdLen, ++p); |
| 1285 | if (isBuf) |
| 1286 | packet.set(cmd, p += 4); |
| 1287 | else |
| 1288 | packet.utf8Write(cmd, p += 4, cmdLen); |
| 1289 | |
| 1290 | this._debug && this._debug( |
| 1291 | `Outbound: Sending CHANNEL_REQUEST (r:${chan}, exec: ${cmd})` |
| 1292 | ); |
| 1293 | sendPacket(this, this._packetRW.write.finalize(packet)); |
| 1294 | } |
| 1295 | signal(chan, signal) { |
| 1296 | if (this._server) |
| 1297 | throw new Error('Client-only method called in server mode'); |
no test coverage detected