Opc.Ua.Com.Server.ComDaGroup.OnAsyncWrite C# (CSharp) Method

OnAsyncWrite() private method

Called to process an asynchronous write.
private OnAsyncWrite ( object state ) : void
state object
return void
        private void OnAsyncWrite(object state)
        {
            try
            {
                TraceState("OnAsyncWrite");

                // find the request.
                ComDaAsnycWriteRequest request = null;
                IComDaGroupCallback callback = null;

                lock (m_lock)
                {
                    // check if dispoed.
                    if (m_disposed)
                    {
                        return;
                    }

                    // find request.
                    for (int ii = 0; ii < m_requests.Count; ii++)
                    {
                        if (Object.ReferenceEquals(state, m_requests[ii]))
                        {
                            request = (ComDaAsnycWriteRequest)state;
                            m_requests.RemoveAt(ii);
                            break;
                        }
                    }

                    callback = m_callback;

                    // request must have been cancelled.
                    if (request == null || callback == null)
                    {
                        return;
                    }
                }

                // report that the cancel succeeded.
                if (request.Cancelled)
                {
                    callback.CancelSucceeded(m_clientHandle, request.TransactionId);
                    TraceState("OnAsyncWrite Cancelled", request.TransactionId, request.CancelId);
                    return;
                }

                // write values.
                int[] results = SyncWrite(request.ServerHandles, request.Values);

                // send callback.
                callback.WriteCompleted(
                    this.m_clientHandle,
                    request.TransactionId,
                    request.ClientHandles,
                    results);

                TraceState("OnAsyncWrite Completed", request.TransactionId, request.CancelId);
            }
            catch (Exception e)
            {
                Utils.Trace("Unexpected error during AsyncWrite. {0}", e.Message);
            }
        }