Exemple #1
0
        private void Send(WorkItem workItem, ITaskCompletionWrapper wrapper)
        {
            lock (_connectionLock)
            {
                var correlationId = workItem.TcpPackage.CorrelationId;
                _inProgress.TryAdd(correlationId, workItem);

                if (wrapper != null)
                {
                    _outstandingOperations.TryAdd(correlationId, wrapper);
                }
                else
                {
                    ITaskCompletionWrapper unused;
                    Debug.Assert(_outstandingOperations.TryGetValue(correlationId, out unused),
                                 "Initially wrapper should be prsebt in outstanding tasks");
                }
                _connection.EnqueueSend(workItem.TcpPackage.AsByteArray());
            }
        }