Opc.Ua.Server.Subscription.Subscription C# (CSharp) Method

Subscription() public method

Initializes the object.
public Subscription ( IServerInternal server, Session session, uint subscriptionId, double publishingInterval, uint maxLifetimeCount, uint maxKeepAliveCount, uint maxNotificationsPerPublish, byte priority, bool publishingEnabled, uint maxMessageCount ) : System
server IServerInternal
session Session
subscriptionId uint
publishingInterval double
maxLifetimeCount uint
maxKeepAliveCount uint
maxNotificationsPerPublish uint
priority byte
publishingEnabled bool
maxMessageCount uint
return System
        public Subscription(
            IServerInternal  server,
            Session          session,
            uint             subscriptionId,
			double           publishingInterval,
            uint             maxLifetimeCount,
			uint             maxKeepAliveCount,
            uint             maxNotificationsPerPublish,
            byte             priority,
			bool             publishingEnabled,
            uint             maxMessageCount)
        {       
            if (server == null)  throw new ArgumentNullException("server");
            if (session == null) throw new ArgumentNullException("session");

            m_server                      = server;
            m_session                     = session;
            m_id                          = subscriptionId;
            m_publishingInterval          = publishingInterval;
            m_maxLifetimeCount            = maxLifetimeCount;
            m_maxKeepAliveCount           = maxKeepAliveCount;
            m_maxNotificationsPerPublish  = maxNotificationsPerPublish;
            m_publishingEnabled           = publishingEnabled;
            m_priority                    = priority;
            m_publishTimerExpiry          = HiResClock.UtcNow.Ticks/TimeSpan.TicksPerMillisecond + (long)publishingInterval;
            m_keepAliveCounter            = maxKeepAliveCount;
            m_lifetimeCounter             = 0;
            m_waitingForPublish           = false;
            m_maxMessageCount             = maxMessageCount;
            m_sentMessages                = new List<NotificationMessage>();
            
            m_monitoredItems              = new Dictionary<uint,LinkedListNode<IMonitoredItem>>();
            m_itemsToCheck                = new LinkedList<IMonitoredItem>();
            m_itemsToPublish              = new LinkedList<IMonitoredItem>();
            m_itemsToTrigger              = new Dictionary<uint,List<ITriggeredMonitoredItem>>();

            // m_itemsReadyToPublish         = new Queue<IMonitoredItem>();
            // m_itemsNotificationsAvailable = new LinkedList<IMonitoredItem>();
            m_sequenceNumber              = 1;
            
            // initialize diagnostics.
            m_diagnostics = new SubscriptionDiagnosticsDataType();

            m_diagnostics.SessionId = m_session.Id;
            m_diagnostics.SubscriptionId = m_id;
            m_diagnostics.Priority = priority;
            m_diagnostics.PublishingInterval = publishingInterval;
            m_diagnostics.MaxKeepAliveCount = maxKeepAliveCount;
            m_diagnostics.MaxLifetimeCount = maxLifetimeCount;
            m_diagnostics.MaxNotificationsPerPublish = maxNotificationsPerPublish;
            m_diagnostics.PublishingEnabled = publishingEnabled;
            m_diagnostics.ModifyCount = 0;
            m_diagnostics.EnableCount = 0;
            m_diagnostics.DisableCount = 0;
            m_diagnostics.RepublishMessageRequestCount = 0;
            m_diagnostics.RepublishMessageCount = 0;
            m_diagnostics.TransferRequestCount = 0;
            m_diagnostics.TransferredToSameClientCount = 0;
            m_diagnostics.TransferredToAltClientCount = 0;
            m_diagnostics.PublishRequestCount = 0;
            m_diagnostics.DataChangeNotificationsCount = 0;
            m_diagnostics.EventNotificationsCount = 0;
            m_diagnostics.NotificationsCount = 0;
            m_diagnostics.LatePublishRequestCount = 0;
            m_diagnostics.CurrentKeepAliveCount = 0;
            m_diagnostics.CurrentLifetimeCount = 0;
            m_diagnostics.UnacknowledgedMessageCount = 0;
            m_diagnostics.DiscardedMessageCount = 0;
            m_diagnostics.MonitoredItemCount = 0;
            m_diagnostics.DisabledMonitoredItemCount = 0;
            m_diagnostics.MonitoringQueueOverflowCount = 0;
            m_diagnostics.NextSequenceNumber = (uint)m_sequenceNumber;

            ServerSystemContext systemContext = m_server.DefaultSystemContext.Copy(session);

            m_diagnosticsId = server.DiagnosticsNodeManager.CreateSubscriptionDiagnostics(
                systemContext,
                m_diagnostics,
                OnUpdateDiagnostics);
            
            // TraceState("CREATED");
        }
        #endregion