Opc.Ua.Com.Server.ComHdaProxy.DoUpdate C# (CSharp) Method

DoUpdate() private method

Executes an asynchronous update operation.
private DoUpdate ( object state ) : void
state object
return void
        private void DoUpdate(object state)
        {
            Session session = null;
            UpdateRequestTransaction transaction = (UpdateRequestTransaction)state;

            try
            {
                // check if the transaction is still active.
                lock (Lock)
                {
                    if (!m_transactions.ContainsKey(transaction.CancelId))
                    {
                        return;
                    }

                    session = Session;
                }

                // check for session error.
                if (session == null)
                {
                    for (int ii = 0; ii < transaction.Requests.Count; ii++)
                    {
                        transaction.Requests[ii].Error = ResultIds.E_FAIL;
                    }

                    SendCallback(transaction.TransactionId, transaction.TransationType, transaction.Requests);
                    return;
                }

                // send request to the server.
                try
                {
                    switch (transaction.TransationType)
                    {
                        case TransationType.Update:
                        {
                            UpdateHistory(session, transaction.Requests, true);
                            break;
                        }

                        case TransationType.DeleteAtTime:
                        case TransationType.DeleteRaw:
                        case TransationType.InsertAnnotation:
                        {
                            UpdateHistory(session, transaction.Requests, false);
                            break;
                        }
                    }
                }

                // handle network error.
                catch (Exception)
                {
                    for (int ii = 0; ii < transaction.Requests.Count; ii++)
                    {
                        transaction.Requests[ii].Error = ResultIds.E_FAIL;
                    }
                }

                // send data to client.
                SendCallback(transaction.TransactionId, transaction.TransationType, transaction.Requests);
            }
            catch (Exception e)
            {
                Utils.Trace(e, "Unexpected error updating history.");
            }
            finally
            {
                // remove transaction.
                lock (Lock)
                {
                    m_transactions.Remove(transaction.CancelId);
                }
            }
        }