Skip to content

Commit

Permalink
subscription: add ModifySubscription functionality
Browse files Browse the repository at this point in the history
closes #713

Signed-off-by: Jack Chen <[email protected]>
  • Loading branch information
jackchenjc committed Feb 19, 2024
1 parent 504cad3 commit 5aed8b4
Showing 1 changed file with 32 additions and 0 deletions.
32 changes: 32 additions & 0 deletions subscription.go
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,38 @@ func (s *Subscription) delete(ctx context.Context) error {
}
}

func (s *Subscription) ModifySubscription(ctx context.Context, params SubscriptionParameters) (*ua.ModifySubscriptionResponse, error) {
stats.Subscription().Add("ModifySubscription", 1)

params.setDefaults()
req := &ua.ModifySubscriptionRequest{
SubscriptionID: s.SubscriptionID,
RequestedPublishingInterval: float64(params.Interval.Milliseconds()),
RequestedLifetimeCount: params.LifetimeCount,
RequestedMaxKeepAliveCount: params.MaxKeepAliveCount,
MaxNotificationsPerPublish: params.MaxNotificationsPerPublish,
Priority: params.Priority,
}

var res *ua.ModifySubscriptionResponse
err := s.c.Send(ctx, req, func(v interface{}) error {
return safeAssign(v, &res)
})

if err != nil {
return nil, err
}

// update subscription parameters
s.params = &params
// update revised subscription parameters
s.RevisedPublishingInterval = time.Duration(res.RevisedPublishingInterval) * time.Millisecond
s.RevisedLifetimeCount = res.RevisedLifetimeCount
s.RevisedMaxKeepAliveCount = res.RevisedMaxKeepAliveCount

return res, nil
}

func (s *Subscription) Monitor(ctx context.Context, ts ua.TimestampsToReturn, items ...*ua.MonitoredItemCreateRequest) (*ua.CreateMonitoredItemsResponse, error) {
stats.Subscription().Add("Monitor", 1)
stats.Subscription().Add("MonitoredItems", int64(len(items)))
Expand Down

0 comments on commit 5aed8b4

Please sign in to comment.