protected override void OnOperationResponse(OperationResponse operationResponse, SendParameters sendParameters)
{
// receive
object messageId;
if (!operationResponse.Parameters.TryGetValue(ReservedParameterNo.MessageId, out messageId))
{
return;
}
TaskCompletionSource<OperationResponse> future;
if (TryGetAndRemoveFuture((int)messageId, out future))
{
if (operationResponse.ReturnCode == 0)
{
future.TrySetResult(operationResponse);
}
else
{
future.TrySetException(new ServerResponseErrorException(operationResponse.ReturnCode, operationResponse.DebugMessage ?? ""));
}
}
else
{
// canceled, already removed
}
}