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")
 			}
 		}