Пример #1
0
 /// <summary>
 /// Creates the subscription.
 /// </summary>
 public void Create(
     Session session,
     NodeManager nodeManager,
     double publishingInterval,
     uint lifetimeCount,
     uint keepAliveCount,
     uint maxNotificationCount,
     bool publishingEnabled,
     byte priority,
     out uint subscriptionId,
     out double revisedPublishingInterval,
     out uint revisedLifetimeCount,
     out uint revisedKeepAliveCount)
 {
     lock (m_lock)
     {
         m_session = session;
         m_nodeManager = nodeManager;
         m_subscriptionId = subscriptionId = (uint)Interlocked.Increment(ref m_subscriptionCounter);
         m_publishingInterval = revisedPublishingInterval = publishingInterval;
         m_lifetimeCount = revisedLifetimeCount = lifetimeCount;
         m_keepAliveCount = revisedKeepAliveCount = keepAliveCount;
         m_maxNotificationCount = maxNotificationCount;
         m_publishingEnabled = publishingEnabled;
         m_priority = priority;
         m_lastPublishTime = 0;
         m_nextKeepAliveTime = (long)(DateTime.UtcNow.Ticks / TimeSpan.TicksPerMillisecond + m_publishingInterval * m_keepAliveCount);
     }
 }
Пример #2
0
        /// <summary>
        /// Constructs the server.
        /// </summary>
        public ServerObject(string applicationUri, NodeManager nodeManager)
        {
            // the namespace table is used for the namepace indexes in NodeIds and QualifiedNames
            // The first index (added by default) is the UA namespace. The second is the application uri.
            m_namespaceUris = new NamespaceTable();
            m_namespaceUris.Append(applicationUri);

            // the server table is used for the server index in remote NodeIds (a.k.a. ExpandedNodeIds)
            // The first index is always the current server.
            m_serverUris = new StringTable();
            m_serverUris.Append(applicationUri);

            m_serviceLevel = 100;

            m_serverStatus = new ServerStatusDataType();
            m_serverStatus.StartTime = DateTime.UtcNow;
            m_serverStatus.CurrentTime = DateTime.UtcNow;
            m_serverStatus.State = ServerState.Running_0;
            m_serverStatus.SecondsTillShutdown = 0;
            m_serverStatus.ShutdownReason = null;

            m_serverStatus.BuildInfo = new BuildInfo();
            m_serverStatus.BuildInfo.BuildDate = new DateTime(2008, 7, 1);
            m_serverStatus.BuildInfo.SoftwareVersion = "1.00";
            m_serverStatus.BuildInfo.BuildNumber = "218.0";
            m_serverStatus.BuildInfo.ManufacturerName = "My Company";
            m_serverStatus.BuildInfo.ProductName = "My Sample Server";
            m_serverStatus.BuildInfo.ProductUri = "http://mycompany.com/MySampleServer/v1.0";

            // tell the node manager to call this object whenever the value of these attributes are read.
            nodeManager.SetReadValueCallback(new NodeId(Variables.Server_NamespaceArray), GetNamespaceArray);
            nodeManager.SetReadValueCallback(new NodeId(Variables.Server_ServerArray), GetServerArray);
            nodeManager.SetReadValueCallback(new NodeId(Variables.Server_ServiceLevel), GetServiceLevel);
            nodeManager.SetReadValueCallback(new NodeId(Variables.Server_ServerStatus), GetServerStatus);
            nodeManager.SetReadValueCallback(new NodeId(Variables.Server_ServerStatus_StartTime), GetServerStatus_StartTime);
            nodeManager.SetReadValueCallback(new NodeId(Variables.Server_ServerStatus_CurrentTime), GetServerStatus_CurrentTime);
            nodeManager.SetReadValueCallback(new NodeId(Variables.Server_ServerStatus_State), GetServerStatus_State);
        }
Пример #3
0
        /// <summary>
        /// Initializes the service before it is opened.
        /// </summary>
        public MyService()
        {
            // the node manager provides access to the server's address space.
            m_nodeManager = new NodeManager();
            m_nodeManager.Create();

            // the server object stores the current server status information.
            m_serverObject = new ServerObject(ApplicationUri, m_nodeManager);
        }