diff --git a/Libraries/Opc.Ua.Server/Diagnostics/DiagnosticsNodeManager.cs b/Libraries/Opc.Ua.Server/Diagnostics/DiagnosticsNodeManager.cs
index 1db2efc1cb..bf854b2ed7 100644
--- a/Libraries/Opc.Ua.Server/Diagnostics/DiagnosticsNodeManager.cs
+++ b/Libraries/Opc.Ua.Server/Diagnostics/DiagnosticsNodeManager.cs
@@ -258,7 +258,7 @@ namespace Opc.Ua.Server
uint[] serverHandles = null;
uint[] clientHandles = null;
- foreach (Subscription subscription in Server.SubscriptionManager.GetSubscriptions())
+ foreach (ISubscription subscription in Server.SubscriptionManager.GetSubscriptions())
{
if (subscription.Id == subscriptionId)
{
@@ -301,7 +301,7 @@ namespace Opc.Ua.Server
return StatusCodes.BadInvalidArgument;
}
- foreach (Subscription subscription in Server.SubscriptionManager.GetSubscriptions())
+ foreach (ISubscription subscription in Server.SubscriptionManager.GetSubscriptions())
{
if (subscription.Id == subscriptionId)
{
diff --git a/Libraries/Opc.Ua.Server/Subscription/ISubscription.cs b/Libraries/Opc.Ua.Server/Subscription/ISubscription.cs
new file mode 100644
index 0000000000..68917d4d9e
--- /dev/null
+++ b/Libraries/Opc.Ua.Server/Subscription/ISubscription.cs
@@ -0,0 +1,278 @@
+/* ========================================================================
+ * Copyright (c) 2005-2020 The OPC Foundation, Inc. All rights reserved.
+ *
+ * OPC Foundation MIT License 1.00
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * The complete license agreement can be found here:
+ * http://opcfoundation.org/License/MIT/1.00/
+ * ======================================================================*/
+
+using System;
+
+namespace Opc.Ua.Server
+{
+ ///
+ /// An interface used by the monitored items to signal the subscription.
+ ///
+ public interface ISubscription : IDisposable
+ {
+ ///
+ /// The session that owns the monitored item.
+ ///
+ Session Session { get; }
+
+ ///
+ /// The subscriptions owner identity.
+ ///
+ IUserIdentity EffectiveIdentity { get; }
+
+ ///
+ /// The identifier for the item that is unique within the server.
+ ///
+ uint Id { get; }
+ ///
+ /// The identifier for the session that owns the subscription.
+ ///
+ NodeId SessionId { get; }
+
+ ///
+ /// The number of monitored items.
+ ///
+ int MonitoredItemCount { get; }
+
+ ///
+ /// The priority assigned to the subscription.
+ ///
+ byte Priority { get; }
+
+ ///
+ /// The publishing rate for the subscription.
+ ///
+ double PublishingInterval { get; }
+
+ ///
+ /// True if the subscription is set to durable and supports long lifetime and queue size
+ ///
+ bool IsDurable { get; }
+
+ ///
+ /// Gets the lock that must be acquired before accessing the contents of the Diagnostics property.
+ ///
+ object DiagnosticsLock { get; }
+
+ ///
+ /// Gets the lock that must be acquired before updating the contents of the Diagnostics property.
+ ///
+ object DiagnosticsWriteLock { get; }
+
+ ///
+ /// Gets the current diagnostics for the subscription.
+ ///
+ public SubscriptionDiagnosticsDataType Diagnostics { get; }
+
+ ///
+ /// Called when a monitored item is ready to publish.
+ ///
+ void ItemReadyToPublish(IMonitoredItem monitoredItem);
+
+ ///
+ /// Called when a monitored item is ready to publish.
+ ///
+ void ItemNotificationsAvailable(IMonitoredItem monitoredItem);
+
+ ///
+ /// Called when a value of monitored item is discarded in the monitoring queue.
+ ///
+ void QueueOverflowHandler();
+
+ ///
+ /// Checks if the subscription is ready to publish.
+ ///
+ PublishingState PublishTimerExpired();
+
+ ///
+ /// Returns the available sequence numbers for retransmission
+ /// For example used in Transfer Subscription
+ ///
+ public UInt32Collection AvailableSequenceNumbersForRetransmission();
+
+ ///
+ /// Refreshes the conditions.
+ ///
+ void ConditionRefresh2(uint monitoredItemId);
+
+
+ ///
+ /// Refreshes the conditions.
+ ///
+ void ConditionRefresh();
+
+ ///
+ /// Updates the publishing parameters for the subscription.
+ ///
+ void Modify(
+ OperationContext context,
+ double publishingInterval,
+ uint maxLifetimeCount,
+ uint maxKeepAliveCount,
+ uint maxNotificationsPerPublish,
+ byte priority);
+
+ ///
+ /// Changes the monitoring mode for a set of items.
+ ///
+ void SetMonitoringMode(
+ OperationContext context,
+ MonitoringMode monitoringMode,
+ UInt32Collection monitoredItemIds,
+ out StatusCodeCollection results,
+ out DiagnosticInfoCollection diagnosticInfos);
+
+
+ ///
+ /// Enables/disables publishing for the subscription.
+ ///
+ void SetPublishingMode(
+ OperationContext context,
+ bool publishingEnabled);
+
+ ///
+ /// Deletes the monitored items in a subscription.
+ ///
+ void DeleteMonitoredItems(
+ OperationContext context,
+ UInt32Collection monitoredItemIds,
+ out StatusCodeCollection results,
+ out DiagnosticInfoCollection diagnosticInfos);
+
+ ///
+ /// Modifies monitored items in a subscription.
+ ///
+ void ModifyMonitoredItems(
+ OperationContext context,
+ TimestampsToReturn timestampsToReturn,
+ MonitoredItemModifyRequestCollection itemsToModify,
+ out MonitoredItemModifyResultCollection results,
+ out DiagnosticInfoCollection diagnosticInfos);
+
+ ///
+ /// Adds monitored items to a subscription.
+ ///
+ void CreateMonitoredItems(
+ OperationContext context,
+ TimestampsToReturn timestampsToReturn,
+ MonitoredItemCreateRequestCollection itemsToCreate,
+ out MonitoredItemCreateResultCollection results,
+ out DiagnosticInfoCollection diagnosticInfos);
+
+ ///
+ /// Gets the monitored items for the subscription.
+ ///
+ void GetMonitoredItems(out uint[] serverHandles, out uint[] clientHandles);
+
+ ///
+ /// Sets the subscription to durable mode.
+ ///
+ public ServiceResult SetSubscriptionDurable(uint maxLifetimeCount);
+
+ ///
+ /// Initiates resending of all data monitored items in a Subscription
+ ///
+ void ResendData(OperationContext context);
+
+ ///
+ /// Tells the subscription that the owning session is being closed.
+ ///
+ void SessionClosed();
+
+ ///
+ /// Removes a message from the message queue.
+ ///
+ ServiceResult Acknowledge(OperationContext context, uint sequenceNumber);
+
+ ///
+ /// Deletes the subscription.
+ ///
+ void Delete(OperationContext context);
+
+ ///
+ /// Verifies that a condition refresh operation is permitted.
+ ///
+ void ValidateConditionRefresh(OperationContext context);
+
+ ///
+ /// Verifies that a condition refresh operation is permitted.
+ ///
+ void ValidateConditionRefresh2(OperationContext context, uint monitoredItemId);
+
+ ///
+ /// Returns a cached notification message.
+ ///
+ NotificationMessage Republish(
+ OperationContext context,
+ uint retransmitSequenceNumber);
+
+ ///
+ /// Publishes a timeout status message.
+ ///
+ NotificationMessage PublishTimeout();
+
+ ///
+ /// Publishes a SubscriptionTransferred status message.
+ ///
+ NotificationMessage SubscriptionTransferred();
+
+ ///
+ /// Returns all available notifications.
+ ///
+ NotificationMessage Publish(
+ OperationContext context,
+ out UInt32Collection availableSequenceNumbers,
+ out bool moreNotifications);
+
+ ///
+ /// Transfers the subscription to a new session.
+ ///
+ /// The session to which the subscription is transferred.
+ /// Whether the first Publish response shall contain current values.
+ void TransferSession(OperationContext context, bool sendInitialValues);
+
+ ///
+ /// Updates the triggers for the monitored item.
+ ///
+ public void SetTriggering(
+ OperationContext context,
+ uint triggeringItemId,
+ UInt32Collection linksToAdd,
+ UInt32Collection linksToRemove,
+ out StatusCodeCollection addResults,
+ out DiagnosticInfoCollection addDiagnosticInfos,
+ out StatusCodeCollection removeResults,
+ out DiagnosticInfoCollection removeDiagnosticInfos);
+
+ ///
+ /// Return a StorableSubscription for restore after a server restart
+ ///
+ public IStoredSubscription ToStorableSubscription();
+ }
+}
diff --git a/Libraries/Opc.Ua.Server/Subscription/SessionPublishQueue.cs b/Libraries/Opc.Ua.Server/Subscription/SessionPublishQueue.cs
index 495090dcd2..3c6fcd6576 100644
--- a/Libraries/Opc.Ua.Server/Subscription/SessionPublishQueue.cs
+++ b/Libraries/Opc.Ua.Server/Subscription/SessionPublishQueue.cs
@@ -107,7 +107,7 @@ namespace Opc.Ua.Server
/// Clears the queues because the session is closing.
///
/// The list of subscriptions in the queue.
- public IList Close()
+ public IList Close()
{
lock (m_lock)
{
@@ -125,7 +125,7 @@ namespace Opc.Ua.Server
}
// tell the subscriptions that the session is closed.
- Subscription[] subscriptions = new Subscription[m_queuedSubscriptions.Count];
+ ISubscription[] subscriptions = new ISubscription[m_queuedSubscriptions.Count];
for (int ii = 0; ii < m_queuedSubscriptions.Count; ii++)
{
@@ -143,7 +143,7 @@ namespace Opc.Ua.Server
///
/// Adds a subscription from the publish queue.
///
- public void Add(Subscription subscription)
+ public void Add(ISubscription subscription)
{
if (subscription == null) throw new ArgumentNullException(nameof(subscription));
@@ -164,7 +164,7 @@ namespace Opc.Ua.Server
///
/// Removes a subscription from the publish queue.
///
- public void Remove(Subscription subscription, bool removeQueuedRequests)
+ public void Remove(ISubscription subscription, bool removeQueuedRequests)
{
if (subscription == null) throw new ArgumentNullException(nameof(subscription));
@@ -313,7 +313,7 @@ namespace Opc.Ua.Server
///
/// Returns a subscription that is ready to publish.
///
- public Subscription Publish(uint clientHandle, DateTime deadline, bool requeue, AsyncPublishOperation operation)
+ public ISubscription Publish(uint clientHandle, DateTime deadline, bool requeue, AsyncPublishOperation operation)
{
QueuedRequest request = null;
@@ -521,7 +521,7 @@ namespace Opc.Ua.Server
/// The asynchronous operation.
/// The calldata.
///
- public Subscription CompletePublish(
+ public ISubscription CompletePublish(
bool requeue,
AsyncPublishOperation operation,
object calldata)
@@ -573,7 +573,7 @@ namespace Opc.Ua.Server
///
/// Adds a subscription back into the queue because it has more notifications to publish.
///
- public void PublishCompleted(Subscription subscription, bool moreNotifications)
+ public void PublishCompleted(ISubscription subscription, bool moreNotifications)
{
lock (m_lock)
{
@@ -604,7 +604,7 @@ namespace Opc.Ua.Server
///
public void PublishTimerExpired()
{
- List subscriptionsToDelete = new List();
+ List subscriptionsToDelete = new List();
lock (m_lock)
{
@@ -845,7 +845,7 @@ namespace Opc.Ua.Server
///
private class QueuedSubscription
{
- public Subscription Subscription;
+ public ISubscription Subscription;
public DateTime Timestamp;
public bool ReadyToPublish;
public bool Publishing;
diff --git a/Libraries/Opc.Ua.Server/Subscription/Subscription.cs b/Libraries/Opc.Ua.Server/Subscription/Subscription.cs
index 39aa035a81..dbef00bf64 100644
--- a/Libraries/Opc.Ua.Server/Subscription/Subscription.cs
+++ b/Libraries/Opc.Ua.Server/Subscription/Subscription.cs
@@ -35,46 +35,10 @@ using System.Linq;
namespace Opc.Ua.Server
{
- ///
- /// An interface used by the monitored items to signal the subscription.
- ///
- public interface ISubscription
- {
- ///
- /// The session that owns the monitored item.
- ///
- Session Session { get; }
-
- ///
- /// The subscriptions owner identity.
- ///
- IUserIdentity EffectiveIdentity { get; }
-
- ///
- /// The identifier for the item that is unique within the server.
- ///
- uint Id { get; }
-
- ///
- /// Called when a monitored item is ready to publish.
- ///
- void ItemReadyToPublish(IMonitoredItem monitoredItem);
-
- ///
- /// Called when a monitored item is ready to publish.
- ///
- void ItemNotificationsAvailable(IMonitoredItem monitoredItem);
-
- ///
- /// Called when a value of monitored item is discarded in the monitoring queue.
- ///
- void QueueOverflowHandler();
- }
-
///
/// Manages a subscription created by a client.
///
- public class Subscription : ISubscription, IDisposable
+ public class Subscription : ISubscription
{
#region Constructors
///
diff --git a/Libraries/Opc.Ua.Server/Subscription/SubscriptionManager.cs b/Libraries/Opc.Ua.Server/Subscription/SubscriptionManager.cs
index fb9dc5da83..5c620ac328 100644
--- a/Libraries/Opc.Ua.Server/Subscription/SubscriptionManager.cs
+++ b/Libraries/Opc.Ua.Server/Subscription/SubscriptionManager.cs
@@ -69,7 +69,7 @@ namespace Opc.Ua.Server
m_subscriptionStore = server.SubscriptionStore;
- m_subscriptions = new Dictionary();
+ m_subscriptions = new Dictionary();
m_publishQueues = new NodeIdDictionary();
m_statusMessages = new NodeIdDictionary>();
m_lastSubscriptionId = BitConverter.ToInt64(Nonce.CreateRandomNonceData(sizeof(long)), 0);
@@ -100,7 +100,7 @@ namespace Opc.Ua.Server
{
if (disposing)
{
- List subscriptions = null;
+ List subscriptions = null;
List publishQueues = null;
lock (m_lock)
@@ -108,7 +108,7 @@ namespace Opc.Ua.Server
publishQueues = new List(m_publishQueues.Values);
m_publishQueues.Clear();
- subscriptions = new List(m_subscriptions.Values);
+ subscriptions = new List(m_subscriptions.Values);
m_subscriptions.Clear();
}
@@ -117,7 +117,7 @@ namespace Opc.Ua.Server
Utils.SilentDispose(publishQueue);
}
- foreach (Subscription subscription in subscriptions)
+ foreach (ISubscription subscription in subscriptions)
{
Utils.SilentDispose(subscription);
}
@@ -178,9 +178,9 @@ namespace Opc.Ua.Server
/// Returns all of the subscriptions known to the subscription manager.
///
/// A list of the subscriptions.
- public IList GetSubscriptions()
+ public IList GetSubscriptions()
{
- List subscriptions = new List();
+ List subscriptions = new List();
lock (m_lock)
{
@@ -193,7 +193,7 @@ namespace Opc.Ua.Server
///
/// Raises an event related to a subscription.
///
- protected virtual void RaiseSubscriptionEvent(Subscription subscription, bool deleted)
+ protected virtual void RaiseSubscriptionEvent(ISubscription subscription, bool deleted)
{
SubscriptionEventHandler handler = null;
@@ -271,7 +271,7 @@ namespace Opc.Ua.Server
StoreSubscriptions();
// dispose of subscriptions objects.
- foreach (Subscription subscription in m_subscriptions.Values)
+ foreach (ISubscription subscription in m_subscriptions.Values)
{
subscription.Dispose();
}
@@ -293,7 +293,7 @@ namespace Opc.Ua.Server
}
var subscriptionsToStore = new List();
- foreach (Subscription subscription in m_subscriptions.Values)
+ foreach (ISubscription subscription in m_subscriptions.Values)
{
// only store durable subscriptions
if (!subscription.IsDurable)
@@ -360,7 +360,7 @@ namespace Opc.Ua.Server
foreach (IStoredSubscription storedSubscription in restoreResult.Subscriptions)
{
- Subscription subscription;
+ ISubscription subscription;
try
{
@@ -384,7 +384,7 @@ namespace Opc.Ua.Server
///
/// Restore a subscription after a restart
///
- protected virtual Subscription RestoreSubscription(
+ protected virtual ISubscription RestoreSubscription(
IStoredSubscription storedSubscription)
{
if (m_subscriptions.Count >= m_maxSubscriptionCount)
@@ -439,7 +439,7 @@ namespace Opc.Ua.Server
{
// close the publish queue for the session.
SessionPublishQueue queue = null;
- IList subscriptionsToDelete = null;
+ IList subscriptionsToDelete = null;
uint publishingIntervalCount = 0;
lock (m_lock)
@@ -475,7 +475,7 @@ namespace Opc.Ua.Server
{
for (int ii = 0; ii < subscriptionsToDelete.Count; ii++)
{
- Subscription subscription = subscriptionsToDelete[ii];
+ ISubscription subscription = subscriptionsToDelete[ii];
// delete the subscription.
if (deleteSubscriptions)
@@ -504,7 +504,7 @@ namespace Opc.Ua.Server
{
if (m_abandonedSubscriptions == null)
{
- m_abandonedSubscriptions = new List();
+ m_abandonedSubscriptions = new List();
}
m_abandonedSubscriptions.Add(subscription);
@@ -520,7 +520,7 @@ namespace Opc.Ua.Server
///
public void ConditionRefresh(OperationContext context, uint subscriptionId)
{
- Subscription subscription = null;
+ ISubscription subscription = null;
lock (m_lock)
{
@@ -564,7 +564,7 @@ namespace Opc.Ua.Server
///
public void ConditionRefresh2(OperationContext context, uint subscriptionId, uint monitoredItemId)
{
- Subscription subscription = null;
+ ISubscription subscription = null;
lock (m_lock)
{
@@ -600,7 +600,7 @@ namespace Opc.Ua.Server
///
/// Completes a refresh conditions request.
///
- private void DoConditionRefresh(Subscription subscription)
+ private void DoConditionRefresh(ISubscription subscription)
{
try
{
@@ -616,7 +616,7 @@ namespace Opc.Ua.Server
///
/// Completes a refresh conditions request.
///
- private void DoConditionRefresh2(Subscription subscription, uint monitoredItemId)
+ private void DoConditionRefresh2(ISubscription subscription, uint monitoredItemId)
{
try
{
@@ -637,7 +637,7 @@ namespace Opc.Ua.Server
{
uint publishingIntervalCount = 0;
int monitoredItemCount = 0;
- Subscription subscription = null;
+ ISubscription subscription = null;
lock (m_lock)
{
@@ -744,7 +744,7 @@ namespace Opc.Ua.Server
lock (m_lock)
{
- foreach (Subscription subscription in m_subscriptions.Values)
+ foreach (ISubscription subscription in m_subscriptions.Values)
{
double publishingInterval = subscription.PublishingInterval;
@@ -792,7 +792,7 @@ namespace Opc.Ua.Server
revisedMaxKeepAliveCount = 0;
uint publishingIntervalCount = 0;
- Subscription subscription = null;
+ ISubscription subscription = null;
// get session from context.
Session session = context.Session;
@@ -996,7 +996,7 @@ namespace Opc.Ua.Server
/// Called when a subscription expires.
///
/// The subscription.
- internal void SubscriptionExpired(Subscription subscription)
+ internal void SubscriptionExpired(ISubscription subscription)
{
lock (m_statusMessagesLock)
{
@@ -1048,7 +1048,7 @@ namespace Opc.Ua.Server
do
{
// wait for a subscription to publish.
- Subscription subscription = queue.CompletePublish(requeue, operation, operation.Calldata);
+ ISubscription subscription = queue.CompletePublish(requeue, operation, operation.Calldata);
if (subscription == null)
{
@@ -1138,7 +1138,7 @@ namespace Opc.Ua.Server
do
{
// wait for a subscription to publish.
- Subscription subscription = queue.Publish(
+ ISubscription subscription = queue.Publish(
context.ClientHandle,
context.OperationDeadline,
requeue,
@@ -1224,7 +1224,7 @@ namespace Opc.Ua.Server
uint publishingIntervalCount = 0;
// find subscription.
- Subscription subscription = null;
+ ISubscription subscription = null;
lock (m_lock)
{
@@ -1281,7 +1281,7 @@ namespace Opc.Ua.Server
out uint revisedLifetimeInHours)
{
revisedLifetimeInHours = 0;
- Subscription subscription = null;
+ ISubscription subscription = null;
lock (m_lock)
{
if (!m_subscriptions.TryGetValue(subscriptionId, out subscription))
@@ -1335,7 +1335,7 @@ namespace Opc.Ua.Server
try
{
// find subscription.
- Subscription subscription = null;
+ ISubscription subscription = null;
lock (m_lock)
{
@@ -1398,7 +1398,7 @@ namespace Opc.Ua.Server
try
{
// find subscription.
- Subscription subscription = null;
+ ISubscription subscription = null;
Session ownerSession = null;
lock (m_lock)
@@ -1617,7 +1617,7 @@ namespace Opc.Ua.Server
uint retransmitSequenceNumber)
{
// find subscription.
- Subscription subscription = null;
+ ISubscription subscription = null;
lock (m_lock)
{
@@ -1646,7 +1646,7 @@ namespace Opc.Ua.Server
out DiagnosticInfoCollection removeDiagnosticInfos)
{
// find subscription.
- Subscription subscription = null;
+ ISubscription subscription = null;
lock (m_lock)
{
@@ -1682,7 +1682,7 @@ namespace Opc.Ua.Server
int monitoredItemCountIncrement = 0;
// find subscription.
- Subscription subscription = null;
+ ISubscription subscription = null;
lock (m_lock)
{
@@ -1727,7 +1727,7 @@ namespace Opc.Ua.Server
out DiagnosticInfoCollection diagnosticInfos)
{
// find subscription.
- Subscription subscription = null;
+ ISubscription subscription = null;
lock (m_lock)
{
@@ -1759,7 +1759,7 @@ namespace Opc.Ua.Server
int monitoredItemCountIncrement = 0;
// find subscription.
- Subscription subscription = null;
+ ISubscription subscription = null;
lock (m_lock)
{
@@ -1803,7 +1803,7 @@ namespace Opc.Ua.Server
out DiagnosticInfoCollection diagnosticInfos)
{
// find subscription.
- Subscription subscription = null;
+ ISubscription subscription = null;
lock (m_lock)
{
@@ -2003,7 +2003,7 @@ namespace Opc.Ua.Server
///
/// Creates a new instance of a subscription.
///
- protected virtual Subscription CreateSubscription(
+ protected virtual ISubscription CreateSubscription(
OperationContext context,
uint subscriptionId,
double publishingInterval,
@@ -2072,7 +2072,7 @@ namespace Opc.Ua.Server
DateTime start = DateTime.UtcNow;
SessionPublishQueue[] queues = null;
- Subscription[] abandonedSubscriptions = null;
+ ISubscription[] abandonedSubscriptions = null;
lock (m_lock)
{
@@ -2083,7 +2083,7 @@ namespace Opc.Ua.Server
// collect abandoned subscriptions.
if (m_abandonedSubscriptions != null && m_abandonedSubscriptions.Count > 0)
{
- abandonedSubscriptions = new Subscription[m_abandonedSubscriptions.Count];
+ abandonedSubscriptions = new ISubscription[m_abandonedSubscriptions.Count];
for (int ii = 0; ii < abandonedSubscriptions.Length; ii++)
{
@@ -2101,11 +2101,11 @@ namespace Opc.Ua.Server
// check the publish timer for each abandoned subscription.
if (abandonedSubscriptions != null)
{
- List subscriptionsToDelete = new List();
+ List subscriptionsToDelete = new List();
for (int ii = 0; ii < abandonedSubscriptions.Length; ii++)
{
- Subscription subscription = abandonedSubscriptions[ii];
+ ISubscription subscription = abandonedSubscriptions[ii];
if (subscription.PublishTimerExpired() != PublishingState.Expired)
{
@@ -2114,7 +2114,7 @@ namespace Opc.Ua.Server
if (subscriptionsToDelete == null)
{
- subscriptionsToDelete = new List();
+ subscriptionsToDelete = new List();
}
subscriptionsToDelete.Add(subscription);
@@ -2215,7 +2215,7 @@ namespace Opc.Ua.Server
///
/// The server.
/// The subscriptions to delete.
- internal static void CleanupSubscriptions(IServerInternal server, IList subscriptionsToDelete)
+ internal static void CleanupSubscriptions(IServerInternal server, IList subscriptionsToDelete)
{
if (subscriptionsToDelete != null && subscriptionsToDelete.Count > 0)
{
@@ -2239,9 +2239,9 @@ namespace Opc.Ua.Server
object[] args = (object[])data;
IServerInternal server = (IServerInternal)args[0];
- List subscriptions = (List)args[1];
+ List subscriptions = (List)args[1];
- foreach (Subscription subscription in subscriptions)
+ foreach (ISubscription subscription in subscriptions)
{
server.DeleteSubscription(subscription.Id);
}
@@ -2266,13 +2266,13 @@ namespace Opc.Ua.Server
#region ConditionRefreshTask Class
private class ConditionRefreshTask
{
- public ConditionRefreshTask(Subscription subscription, uint monitoredItemId)
+ public ConditionRefreshTask(ISubscription subscription, uint monitoredItemId)
{
Subscription = subscription;
MonitoredItemId = monitoredItemId;
}
- public Subscription Subscription { get; private set; }
+ public ISubscription Subscription { get; private set; }
public uint MonitoredItemId { get; private set; }
public override bool Equals(Object obj)
@@ -2313,8 +2313,8 @@ namespace Opc.Ua.Server
private int m_maxPublishRequestCount;
private int m_maxSubscriptionCount;
private bool m_durableSubscriptionsEnabled;
- private Dictionary m_subscriptions;
- private List m_abandonedSubscriptions;
+ private Dictionary m_subscriptions;
+ private List m_abandonedSubscriptions;
private NodeIdDictionary> m_statusMessages;
private NodeIdDictionary m_publishQueues;
private ManualResetEvent m_shutdownEvent;
@@ -2352,7 +2352,7 @@ namespace Opc.Ua.Server
/// Returns all of the subscriptions known to the subscription manager.
///
/// A list of the subscriptions.
- IList GetSubscriptions();
+ IList GetSubscriptions();
///
/// Set a subscription into durable mode
@@ -2368,5 +2368,5 @@ namespace Opc.Ua.Server
///
/// The subscription that was affected.
/// True if the subscription was deleted.
- public delegate void SubscriptionEventHandler(Subscription subscription, bool deleted);
+ public delegate void SubscriptionEventHandler(ISubscription subscription, bool deleted);
}