You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2022/07/29 11:40:38 UTC
[plc4x] 03/04: fix(plc4go): fixed some issues regarding custom message handlers
This is an automated email from the ASF dual-hosted git repository.
sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit 7341b6122cf84612fd4a9d0a34c97cf3114eaea0
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Fri Jul 29 12:01:10 2022 +0200
fix(plc4go): fixed some issues regarding custom message handlers
---
plc4go/internal/bacnetip/MessageCodec.go | 2 +-
plc4go/internal/knxnetip/MessageCodec.go | 6 +++---
plc4go/internal/spi/default/DefaultCodec.go | 15 +++++++++------
3 files changed, 13 insertions(+), 10 deletions(-)
diff --git a/plc4go/internal/bacnetip/MessageCodec.go b/plc4go/internal/bacnetip/MessageCodec.go
index edffc0ec1..86621a597 100644
--- a/plc4go/internal/bacnetip/MessageCodec.go
+++ b/plc4go/internal/bacnetip/MessageCodec.go
@@ -100,7 +100,7 @@ func (m *MessageCodec) Receive() (spi.Message, error) {
return nil, nil
}
-func (m *MessageCodec) handleCustomMessage(_ *_default.DefaultCodecRequirements, message spi.Message) bool {
+func (m *MessageCodec) handleCustomMessage(_ _default.DefaultCodecRequirements, message spi.Message) bool {
// For now, we just put them in the incoming channel
m.GetDefaultIncomingMessageChannel() <- message
return true
diff --git a/plc4go/internal/knxnetip/MessageCodec.go b/plc4go/internal/knxnetip/MessageCodec.go
index f579e4043..6fb0fb5f5 100644
--- a/plc4go/internal/knxnetip/MessageCodec.go
+++ b/plc4go/internal/knxnetip/MessageCodec.go
@@ -108,7 +108,7 @@ func (m *MessageCodec) Receive() (spi.Message, error) {
return nil, nil
}
-func CustomMessageHandling(codec *_default.DefaultCodecRequirements, message spi.Message) bool {
+func CustomMessageHandling(codec _default.DefaultCodecRequirements, message spi.Message) bool {
// If this message is a simple KNXNet/IP UDP Ack, ignore it for now
tunnelingResponse := model.CastTunnelingResponse(message)
if tunnelingResponse != nil {
@@ -124,13 +124,13 @@ func CustomMessageHandling(codec *_default.DefaultCodecRequirements, message spi
tunnelingRequest.GetTunnelingRequestDataBlock().GetSequenceCounter(),
model.Status_NO_ERROR),
)
- err := (*codec).Send(response)
+ err := codec.Send(response)
if err != nil {
log.Warn().Err(err).Msg("got an error sending ACK from transport")
}
}
- localCodec := (*codec).(*MessageCodec)
+ localCodec := codec.(*MessageCodec)
// Handle the packet itself
// Give a message interceptor a chance to intercept
if (*localCodec).messageInterceptor != nil {
diff --git a/plc4go/internal/spi/default/DefaultCodec.go b/plc4go/internal/spi/default/DefaultCodec.go
index 2aef1cdae..fb63035b6 100644
--- a/plc4go/internal/spi/default/DefaultCodec.go
+++ b/plc4go/internal/spi/default/DefaultCodec.go
@@ -60,7 +60,7 @@ type DefaultExpectation struct {
HandleError spi.HandleError
}
-func WithCustomMessageHandler(customMessageHandler func(codec *DefaultCodecRequirements, message spi.Message) bool) options.WithOption {
+func WithCustomMessageHandler(customMessageHandler func(codec DefaultCodecRequirements, message spi.Message) bool) options.WithOption {
return withCustomMessageHandler{customMessageHandler: customMessageHandler}
}
@@ -72,7 +72,7 @@ func WithCustomMessageHandler(customMessageHandler func(codec *DefaultCodecRequi
type withCustomMessageHandler struct {
options.Option
- customMessageHandler func(codec *DefaultCodecRequirements, message spi.Message) bool
+ customMessageHandler func(codec DefaultCodecRequirements, message spi.Message) bool
}
type defaultCodec struct {
@@ -81,11 +81,11 @@ type defaultCodec struct {
defaultIncomingMessageChannel chan spi.Message
expectations []spi.Expectation
running bool
- customMessageHandling func(codec *DefaultCodecRequirements, message spi.Message) bool
+ customMessageHandling func(codec DefaultCodecRequirements, message spi.Message) bool
}
func buildDefaultCodec(defaultCodecRequirements DefaultCodecRequirements, transportInstance transports.TransportInstance, options ...options.WithOption) DefaultCodec {
- var customMessageHandler func(codec *DefaultCodecRequirements, message spi.Message) bool
+ var customMessageHandler func(codec DefaultCodecRequirements, message spi.Message) bool
for _, option := range options {
switch option.(type) {
@@ -151,7 +151,7 @@ func (m *defaultCodec) Connect() error {
if !m.running {
log.Debug().Msg("Message codec currently not running, starting worker now")
- go m.Work(&m.DefaultCodecRequirements)
+ go m.Work(m.DefaultCodecRequirements)
}
m.running = true
return nil
@@ -234,7 +234,7 @@ func (m *defaultCodec) HandleMessages(message spi.Message) bool {
return messageHandled
}
-func (m *defaultCodec) Work(codec *DefaultCodecRequirements) {
+func (m *defaultCodec) Work(codec DefaultCodecRequirements) {
workerLog := log.With().Logger()
if !config.TraceDefaultMessageCodecWorker {
workerLog = zerolog.Nop()
@@ -289,7 +289,10 @@ mainLoop:
if m.customMessageHandling != nil {
workerLog.Trace().Msg("Executing custom handling")
if m.customMessageHandling(codec, message) {
+ workerLog.Trace().Msg("Custom handling handled the message")
continue mainLoop
+ } else {
+ workerLog.Trace().Msg("Custom handling didn't handle the message")
}
}