我将如何删除 Eclipse Milo 0.3.8 中的订阅项?
How would I delete a subscribed item in Eclipse Milo 0.3.8?
我已经查看了订阅 NodeId 的示例,我想知道之后如何 stop/delete 订阅。
Eclipse Milo v0.3.8 客户端。
这是我试过的方法。
protected boolean unsubscribe(TransactionDefinition transactionDefinition) {
// Finds the mathing TransactionDefinition from the map where all subscriptions
// are stored, together with the clientHandle.
// private Map<UInteger, TransactionDefinition> subscriptions = new HashMap<>();
try {
UInteger subscriptionClientHandle = null;
for (Map.Entry<UInteger, TransactionDefinition> entry : subscriptions.entrySet()) {
if (entry.getValue().equals(transactionDefinition))
subscriptionClientHandle = entry.getKey();
}
if (subscriptionClientHandle == null) return false;
try {
client.getSubscriptionManager().deleteSubscription(subscriptionClientHandle).get();
return true;
} catch (Exception e) {
log.error("Subscription not found: {}", e.getMessage(), e.getCause());
e.printStackTrace();
}
} catch (ClassCastException e) {
log.error("TransactionDefinition trigger not found. {}", e.getMessage(), e.getCause());
e.printStackTrace();
}
return false;
}
UaSubscription
有一个 deleteMonitoredItems
方法。
UaSubscriptionManager
有一个 deleteSubscription
方法。
您还可以通过在 UaClient
实例上调用 "raw" 服务方法来调用这些服务中的任何一个 "manually"。
我已经查看了订阅 NodeId 的示例,我想知道之后如何 stop/delete 订阅。
Eclipse Milo v0.3.8 客户端。
这是我试过的方法。
protected boolean unsubscribe(TransactionDefinition transactionDefinition) {
// Finds the mathing TransactionDefinition from the map where all subscriptions
// are stored, together with the clientHandle.
// private Map<UInteger, TransactionDefinition> subscriptions = new HashMap<>();
try {
UInteger subscriptionClientHandle = null;
for (Map.Entry<UInteger, TransactionDefinition> entry : subscriptions.entrySet()) {
if (entry.getValue().equals(transactionDefinition))
subscriptionClientHandle = entry.getKey();
}
if (subscriptionClientHandle == null) return false;
try {
client.getSubscriptionManager().deleteSubscription(subscriptionClientHandle).get();
return true;
} catch (Exception e) {
log.error("Subscription not found: {}", e.getMessage(), e.getCause());
e.printStackTrace();
}
} catch (ClassCastException e) {
log.error("TransactionDefinition trigger not found. {}", e.getMessage(), e.getCause());
e.printStackTrace();
}
return false;
}
UaSubscription
有一个 deleteMonitoredItems
方法。
UaSubscriptionManager
有一个 deleteSubscription
方法。
您还可以通过在 UaClient
实例上调用 "raw" 服务方法来调用这些服务中的任何一个 "manually"。