public Task<OperationResponse> SendOperationRequestAsync(byte operationCode, Dictionary<byte, object> parameters, SendParameters sendParameters)
{
var msgId = Interlocked.Increment(ref messageId);
var future = IssueOperationResponseFuture(msgId);
parameters[ReservedParameterNo.MessageId] = msgId;
var request = new OperationRequest(operationCode, parameters);
var sendResult = this.SendOperationRequest(request, sendParameters);
if (sendResult != SendResult.Ok)
{
TaskCompletionSource<OperationResponse> _future;
TryGetAndRemoveFuture(msgId, out _future);
future.SetException(new Exception(string.Format("Can't send message. SendResult:{0}", sendResult)));
return future.Task;
}
return future.Task;
}