Skip to content

Commit

Permalink
fix(plc4go/cbus): handle pre registered consumers
Browse files Browse the repository at this point in the history
  • Loading branch information
sruehl committed Jun 15, 2023
1 parent 4b47943 commit c12edf3
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 3 deletions.
6 changes: 4 additions & 2 deletions plc4go/internal/ads/Subscriber.go
Expand Up @@ -74,12 +74,14 @@ func (m *Connection) Subscribe(ctx context.Context, subscriptionRequest apiModel
subscriptionType := defaultSubscriptionRequest.GetType(tagName)
interval := defaultSubscriptionRequest.GetInterval(tagName)
preRegisteredConsumers := defaultSubscriptionRequest.GetPreRegisteredConsumers(tagName)
subSubscriptionRequests[tagName] = spiModel.NewDefaultPlcSubscriptionRequest(m,
subSubscriptionRequests[tagName] = spiModel.NewDefaultPlcSubscriptionRequest(
m,
[]string{tagName},
map[string]apiModel.PlcTag{tagName: directTag},
map[string]spiModel.SubscriptionType{tagName: subscriptionType},
map[string]time.Duration{tagName: interval},
map[string][]apiModel.PlcSubscriptionEventConsumer{tagName: preRegisteredConsumers})
map[string][]apiModel.PlcSubscriptionEventConsumer{tagName: preRegisteredConsumers},
)
}

// If this is a single item request, we can take a shortcut.
Expand Down
13 changes: 12 additions & 1 deletion plc4go/internal/cbus/Subscriber.go
Expand Up @@ -74,7 +74,18 @@ func (s *Subscriber) Subscribe(_ context.Context, subscriptionRequest apiModel.P
subscriptionValues := make(map[string]apiModel.PlcSubscriptionHandle)
for _, tagName := range internalPlcSubscriptionRequest.GetTagNames() {
responseCodes[tagName] = apiModel.PlcResponseCode_OK
subscriptionValues[tagName] = NewSubscriptionHandle(s, tagName, internalPlcSubscriptionRequest.GetTag(tagName), internalPlcSubscriptionRequest.GetType(tagName), internalPlcSubscriptionRequest.GetInterval(tagName))
handle := NewSubscriptionHandle(
s,
tagName,
internalPlcSubscriptionRequest.GetTag(tagName),
internalPlcSubscriptionRequest.GetType(tagName),
internalPlcSubscriptionRequest.GetInterval(tagName),
)
preRegisteredConsumers := internalPlcSubscriptionRequest.GetPreRegisteredConsumers(tagName)
for _, consumer := range preRegisteredConsumers {
_ = handle.Register(consumer)
}
subscriptionValues[tagName] = handle
}

result <- spiModel.NewDefaultPlcSubscriptionRequestResult(
Expand Down

0 comments on commit c12edf3

Please sign in to comment.