sendGlobalRequestWithReply method
Implementation
@override
Future<SshGlobalRequestReply> sendGlobalRequestWithReply(
SshGlobalRequest request,
) async {
_ensureConnected();
final List<int> requestData = _resolveGlobalRequestData(request);
if (!request.wantReply) {
await _writeApplicationPacket(
SshGlobalRequestMessage(
requestName: request.type,
wantReply: false,
requestData: requestData,
).encodePayload(),
);
return SshGlobalRequestReply.success();
}
final Completer<SshGlobalRequestReply> replyCompleter =
Completer<SshGlobalRequestReply>();
_pendingGlobalRequestReplies.add(replyCompleter);
try {
await _writeApplicationPacket(
SshGlobalRequestMessage(
requestName: request.type,
wantReply: true,
requestData: requestData,
).encodePayload(),
);
return await replyCompleter.future;
} catch (error, stackTrace) {
_pendingGlobalRequestReplies.remove(replyCompleter);
if (!replyCompleter.isCompleted) {
replyCompleter.completeError(error, stackTrace);
}
rethrow;
}
}