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


The following commit(s) were added to refs/heads/develop by this push:
     new 7c14c99a10 feat(plc4go/spi): use more local loggers
7c14c99a10 is described below

commit 7c14c99a104e0ee82db390f2c02b7befa1f8c7c1
Author: Sebastian Rühl <[email protected]>
AuthorDate: Wed May 31 17:23:02 2023 +0200

    feat(plc4go/spi): use more local loggers
---
 plc4go/internal/cbus/Browser.go                    |   2 +-
 plc4go/internal/knxnetip/Browser.go                |   5 +-
 plc4go/internal/knxnetip/Connection.go             |   4 +-
 plc4go/internal/modbus/Connection.go               |   4 +-
 plc4go/spi/default/DefaultBrowser.go               |  14 +-
 .../interceptors/SingleItemRequestInterceptor.go   |  51 ++--
 plc4go/spi/testutils/TestUtils.go                  |  21 +-
 .../spi/transactions/RequestTransactionManager.go  |  12 +-
 plc4go/spi/transports/TransportInstance.go         |  90 -------
 ...ltBufferedTransportInstanceRequirements_test.go | 140 ----------
 .../mock_DefaultBufferedTransportInstance_test.go  | 300 ---------------------
 plc4go/spi/transports/pcap/Transport.go            |   5 +-
 plc4go/spi/transports/pcap/Transport_test.go       |  17 +-
 plc4go/spi/transports/serial/Transport.go          |   5 +-
 plc4go/spi/transports/serial/Transport_test.go     |  13 +-
 plc4go/spi/transports/tcp/Transport.go             |   5 +-
 plc4go/spi/transports/tcp/Transport_test.go        |  27 +-
 .../DefaultBufferedTransportInstance.go}           |  37 +--
 .../DefaultBufferedTransportInstance_test.go}      |   5 +-
 plc4go/spi/utils/Net.go                            |  38 +--
 20 files changed, 141 insertions(+), 654 deletions(-)

diff --git a/plc4go/internal/cbus/Browser.go b/plc4go/internal/cbus/Browser.go
index e0a83358c2..3ae33a08c7 100644
--- a/plc4go/internal/cbus/Browser.go
+++ b/plc4go/internal/cbus/Browser.go
@@ -51,7 +51,7 @@ func NewBrowser(connection plc4go.PlcConnection, _options 
...options.WithOption)
 
                log: options.ExtractCustomLogger(_options...),
        }
-       browser.DefaultBrowser = _default.NewDefaultBrowser(browser)
+       browser.DefaultBrowser = _default.NewDefaultBrowser(browser, 
_options...)
        return &browser
 }
 
diff --git a/plc4go/internal/knxnetip/Browser.go 
b/plc4go/internal/knxnetip/Browser.go
index df081b2741..fffc0ecf73 100644
--- a/plc4go/internal/knxnetip/Browser.go
+++ b/plc4go/internal/knxnetip/Browser.go
@@ -23,6 +23,7 @@ import (
        "context"
        "encoding/hex"
        "fmt"
+       "github.com/apache/plc4x/plc4go/spi/options"
        "strconv"
        "strings"
        "time"
@@ -46,13 +47,13 @@ type Browser struct {
        sequenceCounter uint8
 }
 
-func NewBrowser(connection *Connection, messageCodec spi.MessageCodec) 
*Browser {
+func NewBrowser(connection *Connection, messageCodec spi.MessageCodec, 
_options ...options.WithOption) *Browser {
        browser := Browser{
                connection:      connection,
                messageCodec:    messageCodec,
                sequenceCounter: 0,
        }
-       browser.DefaultBrowser = _default.NewDefaultBrowser(browser)
+       browser.DefaultBrowser = _default.NewDefaultBrowser(browser, 
_options...)
        return &browser
 }
 
diff --git a/plc4go/internal/knxnetip/Connection.go 
b/plc4go/internal/knxnetip/Connection.go
index 632b484c85..c3e573db8c 100644
--- a/plc4go/internal/knxnetip/Connection.go
+++ b/plc4go/internal/knxnetip/Connection.go
@@ -24,6 +24,7 @@ import (
        "context"
        "encoding/hex"
        "fmt"
+       "github.com/apache/plc4x/plc4go/spi/options"
        "strconv"
        "strings"
        "sync"
@@ -165,7 +166,7 @@ type InternalResult struct {
        err             error
 }
 
-func NewConnection(transportInstance transports.TransportInstance, options 
map[string][]string, tagHandler spi.PlcTagHandler) *Connection {
+func NewConnection(transportInstance transports.TransportInstance, options 
map[string][]string, tagHandler spi.PlcTagHandler, _options 
...options.WithOption) *Connection {
        connection := &Connection{
                options:      options,
                tagHandler:   tagHandler,
@@ -175,6 +176,7 @@ func NewConnection(transportInstance 
transports.TransportInstance, options map[s
                        spiModel.NewDefaultPlcWriteRequest,
                        spiModel.NewDefaultPlcReadResponse,
                        spiModel.NewDefaultPlcWriteResponse,
+                       _options...,
                ),
                subscribers:             []*Subscriber{},
                valueCache:              map[uint16][]byte{},
diff --git a/plc4go/internal/modbus/Connection.go 
b/plc4go/internal/modbus/Connection.go
index 97afeaa7d0..c2cb42731a 100644
--- a/plc4go/internal/modbus/Connection.go
+++ b/plc4go/internal/modbus/Connection.go
@@ -22,6 +22,7 @@ package modbus
 import (
        "context"
        "fmt"
+       "github.com/apache/plc4x/plc4go/spi/options"
        "time"
 
        "github.com/apache/plc4x/plc4go/pkg/api"
@@ -47,7 +48,7 @@ type Connection struct {
        tracer       *spi.Tracer
 }
 
-func NewConnection(unitIdentifier uint8, messageCodec spi.MessageCodec, 
options map[string][]string, tagHandler spi.PlcTagHandler) *Connection {
+func NewConnection(unitIdentifier uint8, messageCodec spi.MessageCodec, 
options map[string][]string, tagHandler spi.PlcTagHandler, _options 
...options.WithOption) *Connection {
        connection := &Connection{
                unitIdentifier: unitIdentifier,
                messageCodec:   messageCodec,
@@ -57,6 +58,7 @@ func NewConnection(unitIdentifier uint8, messageCodec 
spi.MessageCodec, options
                        spiModel.NewDefaultPlcWriteRequest,
                        spiModel.NewDefaultPlcReadResponse,
                        spiModel.NewDefaultPlcWriteResponse,
+                       _options...,
                ),
        }
        if traceEnabledOption, ok := options["traceEnabled"]; ok {
diff --git a/plc4go/spi/default/DefaultBrowser.go 
b/plc4go/spi/default/DefaultBrowser.go
index e1e08e8d81..34c7ae12b7 100644
--- a/plc4go/spi/default/DefaultBrowser.go
+++ b/plc4go/spi/default/DefaultBrowser.go
@@ -21,11 +21,11 @@ package _default
 
 import (
        "context"
-       "github.com/rs/zerolog/log"
-
        apiModel "github.com/apache/plc4x/plc4go/pkg/api/model"
        "github.com/apache/plc4x/plc4go/spi"
        spiModel "github.com/apache/plc4x/plc4go/spi/model"
+       "github.com/apache/plc4x/plc4go/spi/options"
+       "github.com/rs/zerolog"
 )
 
 // DefaultBrowserRequirements adds required methods to Browser that are needed 
when using DefaultBrowser
@@ -37,9 +37,11 @@ type DefaultBrowser interface {
        spi.PlcBrowser
 }
 
-func NewDefaultBrowser(defaultBrowserRequirements DefaultBrowserRequirements) 
DefaultBrowser {
+func NewDefaultBrowser(defaultBrowserRequirements DefaultBrowserRequirements, 
_options ...options.WithOption) DefaultBrowser {
        return &defaultBrowser{
-               defaultBrowserRequirements,
+               DefaultBrowserRequirements: defaultBrowserRequirements,
+
+               log: options.ExtractCustomLogger(_options...),
        }
 }
 
@@ -51,6 +53,8 @@ func NewDefaultBrowser(defaultBrowserRequirements 
DefaultBrowserRequirements) De
 
 type defaultBrowser struct {
        DefaultBrowserRequirements
+
+       log zerolog.Logger
 }
 
 //
@@ -70,7 +74,7 @@ func (m *defaultBrowser) BrowseWithInterceptor(ctx 
context.Context, browseReques
        go func() {
                defer func() {
                        if err := recover(); err != nil {
-                               log.Error().Interface("err", err).Msg("caught 
panic")
+                               m.log.Error().Interface("err", err).Msg("caught 
panic")
                        }
                }()
                responseCodes := map[string]apiModel.PlcResponseCode{}
diff --git a/plc4go/spi/interceptors/SingleItemRequestInterceptor.go 
b/plc4go/spi/interceptors/SingleItemRequestInterceptor.go
index 46e9ae6167..458206291b 100644
--- a/plc4go/spi/interceptors/SingleItemRequestInterceptor.go
+++ b/plc4go/spi/interceptors/SingleItemRequestInterceptor.go
@@ -25,8 +25,9 @@ import (
        apiModel "github.com/apache/plc4x/plc4go/pkg/api/model"
        "github.com/apache/plc4x/plc4go/pkg/api/values"
        "github.com/apache/plc4x/plc4go/spi"
+       "github.com/apache/plc4x/plc4go/spi/options"
        "github.com/apache/plc4x/plc4go/spi/utils"
-       "github.com/rs/zerolog/log"
+       "github.com/rs/zerolog"
 )
 
 type ReaderExposer interface {
@@ -74,10 +75,18 @@ type SingleItemRequestInterceptor struct {
        writeRequestFactory  writeRequestFactory
        readResponseFactory  readResponseFactory
        writeResponseFactory writeResponseFactory
+
+       log zerolog.Logger
 }
 
-func NewSingleItemRequestInterceptor(readRequestFactory readRequestFactory, 
writeRequestFactory writeRequestFactory, readResponseFactory 
readResponseFactory, writeResponseFactory writeResponseFactory) 
SingleItemRequestInterceptor {
-       return SingleItemRequestInterceptor{readRequestFactory, 
writeRequestFactory, readResponseFactory, writeResponseFactory}
+func NewSingleItemRequestInterceptor(readRequestFactory readRequestFactory, 
writeRequestFactory writeRequestFactory, readResponseFactory 
readResponseFactory, writeResponseFactory writeResponseFactory, _options 
...options.WithOption) SingleItemRequestInterceptor {
+       return SingleItemRequestInterceptor{
+               readRequestFactory:   readRequestFactory,
+               writeRequestFactory:  writeRequestFactory,
+               readResponseFactory:  readResponseFactory,
+               writeResponseFactory: writeResponseFactory,
+               log:                  options.ExtractCustomLogger(_options...),
+       }
 }
 
 ///////////////////////////////////////
@@ -134,18 +143,18 @@ func (m SingleItemRequestInterceptor) 
InterceptReadRequest(ctx context.Context,
        }
        // If this request just has one tag, go the shortcut
        if len(readRequest.GetTagNames()) == 1 {
-               log.Debug().Msg("We got only one request, no splitting 
required")
+               m.log.Debug().Msg("We got only one request, no splitting 
required")
                return []apiModel.PlcReadRequest{readRequest}
        }
-       log.Trace().Msg("Splitting requests")
+       m.log.Trace().Msg("Splitting requests")
        // In all other cases, create a new read request containing only one 
item
        var readRequests []apiModel.PlcReadRequest
        for _, tagName := range readRequest.GetTagNames() {
                if err := ctx.Err(); err != nil {
-                       log.Warn().Err(err).Msg("aborting early")
+                       m.log.Warn().Err(err).Msg("aborting early")
                        return nil
                }
-               log.Debug().Str("tagName", tagName).Msg("Splitting into own 
request")
+               m.log.Debug().Str("tagName", tagName).Msg("Splitting into own 
request")
                tag := readRequest.GetTag(tagName)
                subReadRequest := m.readRequestFactory(
                        map[string]apiModel.PlcTag{tagName: tag},
@@ -160,16 +169,16 @@ func (m SingleItemRequestInterceptor) 
InterceptReadRequest(ctx context.Context,
 
 func (m SingleItemRequestInterceptor) ProcessReadResponses(ctx 
context.Context, readRequest apiModel.PlcReadRequest, readResults 
[]apiModel.PlcReadRequestResult) apiModel.PlcReadRequestResult {
        if len(readResults) == 1 {
-               log.Debug().Msg("We got only one response, no merging required")
+               m.log.Debug().Msg("We got only one response, no merging 
required")
                return readResults[0]
        }
-       log.Trace().Msg("Merging requests")
+       m.log.Trace().Msg("Merging requests")
        responseCodes := map[string]apiModel.PlcResponseCode{}
        val := map[string]values.PlcValue{}
        var err error = nil
        for _, readResult := range readResults {
                if ctxErr := ctx.Err(); ctxErr != nil {
-                       log.Warn().Err(ctxErr).Msg("aborting early")
+                       m.log.Warn().Err(ctxErr).Msg("aborting early")
                        if err != nil {
                                multiError := err.(utils.MultiError)
                                multiError.Errors = append(multiError.Errors, 
ctxErr)
@@ -179,7 +188,7 @@ func (m SingleItemRequestInterceptor) 
ProcessReadResponses(ctx context.Context,
                        break
                }
                if readResult.GetErr() != nil {
-                       log.Debug().Err(readResult.GetErr()).Msgf("Error during 
read")
+                       m.log.Debug().Err(readResult.GetErr()).Msgf("Error 
during read")
                        if err == nil {
                                // Lazy initialization of multi error
                                err = utils.MultiError{MainError: 
errors.New("while aggregating results"), Errors: []error{readResult.GetErr()}}
@@ -190,7 +199,7 @@ func (m SingleItemRequestInterceptor) 
ProcessReadResponses(ctx context.Context,
                } else if response := readResult.GetResponse(); response != nil 
{
                        request := response.GetRequest()
                        if len(request.GetTagNames()) > 1 {
-                               log.Error().Int("numberOfTags", 
len(request.GetTagNames())).Msg("We should only get 1")
+                               m.log.Error().Int("numberOfTags", 
len(request.GetTagNames())).Msg("We should only get 1")
                        }
                        for _, tagName := range request.GetTagNames() {
                                responseCodes[tagName] = 
response.GetResponseCode(tagName)
@@ -211,18 +220,18 @@ func (m SingleItemRequestInterceptor) 
InterceptWriteRequest(ctx context.Context,
        }
        // If this request just has one tag, go the shortcut
        if len(writeRequest.GetTagNames()) == 1 {
-               log.Debug().Msg("We got only one request, no splitting 
required")
+               m.log.Debug().Msg("We got only one request, no splitting 
required")
                return []apiModel.PlcWriteRequest{writeRequest}
        }
-       log.Trace().Msg("Splitting requests")
+       m.log.Trace().Msg("Splitting requests")
        // In all other cases, create a new write request containing only one 
item
        var writeRequests []apiModel.PlcWriteRequest
        for _, tagName := range writeRequest.GetTagNames() {
                if err := ctx.Err(); err != nil {
-                       log.Warn().Err(err).Msg("aborting early")
+                       m.log.Warn().Err(err).Msg("aborting early")
                        return nil
                }
-               log.Debug().Str("tagName", tagName).Msg("Splitting into own 
request")
+               m.log.Debug().Str("tagName", tagName).Msg("Splitting into own 
request")
                tag := writeRequest.GetTag(tagName)
                subWriteRequest := m.writeRequestFactory(
                        map[string]apiModel.PlcTag{tagName: tag},
@@ -238,15 +247,15 @@ func (m SingleItemRequestInterceptor) 
InterceptWriteRequest(ctx context.Context,
 
 func (m SingleItemRequestInterceptor) ProcessWriteResponses(ctx 
context.Context, writeRequest apiModel.PlcWriteRequest, writeResults 
[]apiModel.PlcWriteRequestResult) apiModel.PlcWriteRequestResult {
        if len(writeResults) == 1 {
-               log.Debug().Msg("We got only one response, no merging required")
+               m.log.Debug().Msg("We got only one response, no merging 
required")
                return writeResults[0]
        }
-       log.Trace().Msg("Merging requests")
+       m.log.Trace().Msg("Merging requests")
        responseCodes := map[string]apiModel.PlcResponseCode{}
        var err error = nil
        for _, writeResult := range writeResults {
                if ctxErr := ctx.Err(); ctxErr != nil {
-                       log.Warn().Err(ctxErr).Msg("aborting early")
+                       m.log.Warn().Err(ctxErr).Msg("aborting early")
                        if err != nil {
                                multiError := err.(utils.MultiError)
                                multiError.Errors = append(multiError.Errors, 
ctxErr)
@@ -256,7 +265,7 @@ func (m SingleItemRequestInterceptor) 
ProcessWriteResponses(ctx context.Context,
                        break
                }
                if writeResult.GetErr() != nil {
-                       log.Debug().Err(writeResult.GetErr()).Msgf("Error 
during write")
+                       m.log.Debug().Err(writeResult.GetErr()).Msgf("Error 
during write")
                        if err == nil {
                                // Lazy initialization of multi error
                                err = utils.MultiError{MainError: 
errors.New("while aggregating results"), Errors: []error{writeResult.GetErr()}}
@@ -266,7 +275,7 @@ func (m SingleItemRequestInterceptor) 
ProcessWriteResponses(ctx context.Context,
                        }
                } else if writeResult.GetResponse() != nil {
                        if 
len(writeResult.GetResponse().GetRequest().GetTagNames()) > 1 {
-                               log.Error().Int("numberOfTags", 
len(writeResult.GetResponse().GetRequest().GetTagNames())).Msg("We should only 
get 1")
+                               m.log.Error().Int("numberOfTags", 
len(writeResult.GetResponse().GetRequest().GetTagNames())).Msg("We should only 
get 1")
                        }
                        for _, tagName := range 
writeResult.GetResponse().GetRequest().GetTagNames() {
                                responseCodes[tagName] = 
writeResult.GetResponse().GetResponseCode(tagName)
diff --git a/plc4go/spi/testutils/TestUtils.go 
b/plc4go/spi/testutils/TestUtils.go
index 35773412ea..91904cac6c 100644
--- a/plc4go/spi/testutils/TestUtils.go
+++ b/plc4go/spi/testutils/TestUtils.go
@@ -20,20 +20,23 @@
 package testutils
 
 import (
+       "os"
+       "runtime/debug"
+       "strings"
+       "testing"
+
+       "github.com/apache/plc4x/plc4go/spi/utils"
+
        "github.com/ajankovic/xdiff"
        "github.com/ajankovic/xdiff/parser"
-       "github.com/apache/plc4x/plc4go/spi/utils"
        "github.com/pkg/errors"
        "github.com/rs/zerolog"
        "github.com/rs/zerolog/log"
        "github.com/stretchr/testify/assert"
-       "os"
-       "runtime/debug"
-       "strings"
-       "testing"
 )
 
 func CompareResults(t *testing.T, actualString []byte, referenceString []byte) 
error {
+       localLog := ProduceTestingLogger(t)
        // Now parse the xml strings of the actual and the reference in xdiff's 
dom
        p := parser.New()
        actual, err := p.ParseBytes(actualString)
@@ -56,7 +59,7 @@ func CompareResults(t *testing.T, actualString []byte, 
referenceString []byte) e
        cleanDiff := make([]xdiff.Delta, 0)
        for _, delta := range diff {
                if delta.Operation == xdiff.Delete && delta.Subject.Value == 
nil || delta.Operation == xdiff.Insert && delta.Subject.Value == nil {
-                       log.Info().Msgf("We ignore empty elements which should 
be deleted %v", delta)
+                       localLog.Info().Msgf("We ignore empty elements which 
should be deleted %v", delta)
                        continue
                }
                // Workaround for different precisions on float
@@ -66,7 +69,7 @@ func CompareResults(t *testing.T, actualString []byte, 
referenceString []byte) e
                        string(delta.Object.Parent.FirstChild.Name) == 
"dataType" &&
                        string(delta.Object.Parent.FirstChild.Value) == "float" 
{
                        if strings.Contains(string(delta.Subject.Value), 
string(delta.Object.Value)) || strings.Contains(string(delta.Object.Value), 
string(delta.Subject.Value)) {
-                               log.Info().Msgf("We ignore precision diffs %v", 
delta)
+                               localLog.Info().Msgf("We ignore precision diffs 
%v", delta)
                                continue
                        }
                }
@@ -76,7 +79,7 @@ func CompareResults(t *testing.T, actualString []byte, 
referenceString []byte) e
                        string(delta.Object.Parent.FirstChild.Name) == 
"dataType" &&
                        string(delta.Object.Parent.FirstChild.Value) == 
"string" {
                        if diff, err := xdiff.Compare(delta.Subject, 
delta.Object); diff == nil && err == nil {
-                               log.Info().Msgf("We ignore newline diffs %v", 
delta)
+                               localLog.Info().Msgf("We ignore newline diffs 
%v", delta)
                                continue
                        }
                }
@@ -88,7 +91,7 @@ func CompareResults(t *testing.T, actualString []byte, 
referenceString []byte) e
                return errors.Wrap(err, "Error outputting results")
        }
        if len(cleanDiff) <= 0 {
-               log.Warn().Msg("We only found non relevant changes")
+               localLog.Warn().Msg("We only found non relevant changes")
                return nil
        }
 
diff --git a/plc4go/spi/transactions/RequestTransactionManager.go 
b/plc4go/spi/transactions/RequestTransactionManager.go
index ff41af79c2..edd287c6fa 100644
--- a/plc4go/spi/transactions/RequestTransactionManager.go
+++ b/plc4go/spi/transactions/RequestTransactionManager.go
@@ -141,11 +141,11 @@ type requestTransactionManager struct {
 ///////////////////////////////////////
 
 func (r *requestTransactionManager) 
SetNumberOfConcurrentRequests(numberOfConcurrentRequests int) {
-       log.Info().Msgf("Setting new number of concurrent requests %d", 
numberOfConcurrentRequests)
+       r.log.Info().Msgf("Setting new number of concurrent requests %d", 
numberOfConcurrentRequests)
        // If we reduced the number of concurrent requests and more requests 
are in-flight
        // than should be, at least log a warning.
        if numberOfConcurrentRequests < len(r.runningRequests) {
-               log.Warn().Msg("The number of concurrent requests was reduced 
and currently more requests are in flight.")
+               r.log.Warn().Msg("The number of concurrent requests was reduced 
and currently more requests are in flight.")
        }
 
        r.numberOfConcurrentRequests = numberOfConcurrentRequests
@@ -167,11 +167,11 @@ func (r *requestTransactionManager) 
submitTransaction(transaction *requestTransa
 func (r *requestTransactionManager) processWorklog() {
        r.workLogMutex.RLock()
        defer r.workLogMutex.RUnlock()
-       log.Debug().Msgf("Processing work log with size of %d (%d concurrent 
requests allowed)", r.workLog.Len(), r.numberOfConcurrentRequests)
+       r.log.Debug().Msgf("Processing work log with size of %d (%d concurrent 
requests allowed)", r.workLog.Len(), r.numberOfConcurrentRequests)
        for len(r.runningRequests) < r.numberOfConcurrentRequests && 
r.workLog.Len() > 0 {
                front := r.workLog.Front()
                next := front.Value.(*requestTransaction)
-               log.Debug().Msgf("Handling next %v. (Adding to running requests 
(length: %d))", next, len(r.runningRequests))
+               r.log.Debug().Msgf("Handling next %v. (Adding to running 
requests (length: %d))", next, len(r.runningRequests))
                r.runningRequests = append(r.runningRequests, next)
                completionFuture := r.executor.Submit(context.Background(), 
next.transactionId, next.operation)
                next.completionFuture = completionFuture
@@ -258,7 +258,7 @@ func (r *requestTransactionManager) CloseGraceful(timeout 
time.Duration) error {
                }()
                select {
                case <-timer.C:
-                       log.Warn().Msgf("timout after %d", timeout)
+                       r.log.Warn().Msgf("timout after %d", timeout)
                case <-signal:
                }
        }
@@ -283,7 +283,7 @@ func (t *requestTransaction) EndRequest() error {
 
 func (t *requestTransaction) Submit(operation RequestTransactionRunnable) {
        if t.operation != nil {
-               log.Warn().Msg("Operation already set")
+               t.transactionLog.Warn().Msg("Operation already set")
        }
        t.transactionLog.Trace().Msgf("Submission of transaction %d", 
t.transactionId)
        t.operation = func() {
diff --git a/plc4go/spi/transports/TransportInstance.go 
b/plc4go/spi/transports/TransportInstance.go
index fc3b66d328..e81d6821b9 100644
--- a/plc4go/spi/transports/TransportInstance.go
+++ b/plc4go/spi/transports/TransportInstance.go
@@ -23,8 +23,6 @@ import (
        "bufio"
        "context"
        "fmt"
-       "github.com/pkg/errors"
-       "github.com/rs/zerolog/log"
 )
 
 type TransportInstance interface {
@@ -44,91 +42,3 @@ type TransportInstance interface {
 
        Write(data []byte) error
 }
-
-type DefaultBufferedTransportInstanceRequirements interface {
-       GetReader() *bufio.Reader
-       Connect() error
-}
-
-type DefaultBufferedTransportInstance interface {
-       ConnectWithContext(ctx context.Context) error
-       GetNumBytesAvailableInBuffer() (uint32, error)
-       FillBuffer(until func(pos uint, currentByte byte, reader *bufio.Reader) 
bool) error
-       PeekReadableBytes(numBytes uint32) ([]byte, error)
-       Read(numBytes uint32) ([]byte, error)
-}
-
-func 
NewDefaultBufferedTransportInstance(defaultBufferedTransportInstanceRequirements
 DefaultBufferedTransportInstanceRequirements) DefaultBufferedTransportInstance 
{
-       return 
&defaultBufferedTransportInstance{defaultBufferedTransportInstanceRequirements}
-}
-
-type defaultBufferedTransportInstance struct {
-       DefaultBufferedTransportInstanceRequirements
-}
-
-// ConnectWithContext is a compatibility implementation for those transports 
not implementing this function
-func (m *defaultBufferedTransportInstance) ConnectWithContext(ctx 
context.Context) error {
-       ch := make(chan error, 1)
-       go func() {
-               defer func() {
-                       if err := recover(); err != nil {
-                               log.Error().Interface("err", err).Msg("connect 
panic-ed")
-                       }
-               }()
-               ch <- m.Connect()
-               close(ch)
-       }()
-       select {
-       case err := <-ch:
-               return err
-       case <-ctx.Done():
-               return ctx.Err()
-       }
-}
-
-func (m *defaultBufferedTransportInstance) GetNumBytesAvailableInBuffer() 
(uint32, error) {
-       if m.GetReader() == nil {
-               return 0, nil
-       }
-       _, _ = m.GetReader().Peek(1)
-       return uint32(m.GetReader().Buffered()), nil
-}
-
-func (m *defaultBufferedTransportInstance) FillBuffer(until func(pos uint, 
currentByte byte, reader *bufio.Reader) bool) error {
-       if m.GetReader() == nil {
-               return nil
-       }
-       nBytes := uint32(1)
-       for {
-               bytes, err := m.PeekReadableBytes(nBytes)
-               if err != nil {
-                       return errors.Wrap(err, "Error while peeking")
-               }
-               if keepGoing := until(uint(nBytes-1), bytes[len(bytes)-1], 
m.GetReader()); !keepGoing {
-                       return nil
-               }
-               nBytes++
-       }
-}
-
-func (m *defaultBufferedTransportInstance) PeekReadableBytes(numBytes uint32) 
([]byte, error) {
-       if m.GetReader() == nil {
-               return nil, errors.New("error peeking from transport. No reader 
available")
-       }
-       return m.GetReader().Peek(int(numBytes))
-}
-
-func (m *defaultBufferedTransportInstance) Read(numBytes uint32) ([]byte, 
error) {
-       if m.GetReader() == nil {
-               return nil, errors.New("error reading from transport. No reader 
available")
-       }
-       data := make([]byte, numBytes)
-       for i := uint32(0); i < numBytes; i++ {
-               val, err := m.GetReader().ReadByte()
-               if err != nil {
-                       return nil, errors.Wrap(err, "error reading")
-               }
-               data[i] = val
-       }
-       return data, nil
-}
diff --git 
a/plc4go/spi/transports/mock_DefaultBufferedTransportInstanceRequirements_test.go
 
b/plc4go/spi/transports/mock_DefaultBufferedTransportInstanceRequirements_test.go
deleted file mode 100644
index 732bdb1ef2..0000000000
--- 
a/plc4go/spi/transports/mock_DefaultBufferedTransportInstanceRequirements_test.go
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-// Code generated by mockery v2.28.1. DO NOT EDIT.
-
-package transports
-
-import (
-       bufio "bufio"
-
-       mock "github.com/stretchr/testify/mock"
-)
-
-// MockDefaultBufferedTransportInstanceRequirements is an autogenerated mock 
type for the DefaultBufferedTransportInstanceRequirements type
-type MockDefaultBufferedTransportInstanceRequirements struct {
-       mock.Mock
-}
-
-type MockDefaultBufferedTransportInstanceRequirements_Expecter struct {
-       mock *mock.Mock
-}
-
-func (_m *MockDefaultBufferedTransportInstanceRequirements) EXPECT() 
*MockDefaultBufferedTransportInstanceRequirements_Expecter {
-       return &MockDefaultBufferedTransportInstanceRequirements_Expecter{mock: 
&_m.Mock}
-}
-
-// Connect provides a mock function with given fields:
-func (_m *MockDefaultBufferedTransportInstanceRequirements) Connect() error {
-       ret := _m.Called()
-
-       var r0 error
-       if rf, ok := ret.Get(0).(func() error); ok {
-               r0 = rf()
-       } else {
-               r0 = ret.Error(0)
-       }
-
-       return r0
-}
-
-// MockDefaultBufferedTransportInstanceRequirements_Connect_Call is a 
*mock.Call that shadows Run/Return methods with type explicit version for 
method 'Connect'
-type MockDefaultBufferedTransportInstanceRequirements_Connect_Call struct {
-       *mock.Call
-}
-
-// Connect is a helper method to define mock.On call
-func (_e *MockDefaultBufferedTransportInstanceRequirements_Expecter) Connect() 
*MockDefaultBufferedTransportInstanceRequirements_Connect_Call {
-       return 
&MockDefaultBufferedTransportInstanceRequirements_Connect_Call{Call: 
_e.mock.On("Connect")}
-}
-
-func (_c *MockDefaultBufferedTransportInstanceRequirements_Connect_Call) 
Run(run func()) *MockDefaultBufferedTransportInstanceRequirements_Connect_Call {
-       _c.Call.Run(func(args mock.Arguments) {
-               run()
-       })
-       return _c
-}
-
-func (_c *MockDefaultBufferedTransportInstanceRequirements_Connect_Call) 
Return(_a0 error) 
*MockDefaultBufferedTransportInstanceRequirements_Connect_Call {
-       _c.Call.Return(_a0)
-       return _c
-}
-
-func (_c *MockDefaultBufferedTransportInstanceRequirements_Connect_Call) 
RunAndReturn(run func() error) 
*MockDefaultBufferedTransportInstanceRequirements_Connect_Call {
-       _c.Call.Return(run)
-       return _c
-}
-
-// GetReader provides a mock function with given fields:
-func (_m *MockDefaultBufferedTransportInstanceRequirements) GetReader() 
*bufio.Reader {
-       ret := _m.Called()
-
-       var r0 *bufio.Reader
-       if rf, ok := ret.Get(0).(func() *bufio.Reader); ok {
-               r0 = rf()
-       } else {
-               if ret.Get(0) != nil {
-                       r0 = ret.Get(0).(*bufio.Reader)
-               }
-       }
-
-       return r0
-}
-
-// MockDefaultBufferedTransportInstanceRequirements_GetReader_Call is a 
*mock.Call that shadows Run/Return methods with type explicit version for 
method 'GetReader'
-type MockDefaultBufferedTransportInstanceRequirements_GetReader_Call struct {
-       *mock.Call
-}
-
-// GetReader is a helper method to define mock.On call
-func (_e *MockDefaultBufferedTransportInstanceRequirements_Expecter) 
GetReader() *MockDefaultBufferedTransportInstanceRequirements_GetReader_Call {
-       return 
&MockDefaultBufferedTransportInstanceRequirements_GetReader_Call{Call: 
_e.mock.On("GetReader")}
-}
-
-func (_c *MockDefaultBufferedTransportInstanceRequirements_GetReader_Call) 
Run(run func()) 
*MockDefaultBufferedTransportInstanceRequirements_GetReader_Call {
-       _c.Call.Run(func(args mock.Arguments) {
-               run()
-       })
-       return _c
-}
-
-func (_c *MockDefaultBufferedTransportInstanceRequirements_GetReader_Call) 
Return(_a0 *bufio.Reader) 
*MockDefaultBufferedTransportInstanceRequirements_GetReader_Call {
-       _c.Call.Return(_a0)
-       return _c
-}
-
-func (_c *MockDefaultBufferedTransportInstanceRequirements_GetReader_Call) 
RunAndReturn(run func() *bufio.Reader) 
*MockDefaultBufferedTransportInstanceRequirements_GetReader_Call {
-       _c.Call.Return(run)
-       return _c
-}
-
-type 
mockConstructorTestingTNewMockDefaultBufferedTransportInstanceRequirements 
interface {
-       mock.TestingT
-       Cleanup(func())
-}
-
-// NewMockDefaultBufferedTransportInstanceRequirements creates a new instance 
of MockDefaultBufferedTransportInstanceRequirements. It also registers a 
testing interface on the mock and a cleanup function to assert the mocks 
expectations.
-func NewMockDefaultBufferedTransportInstanceRequirements(t 
mockConstructorTestingTNewMockDefaultBufferedTransportInstanceRequirements) 
*MockDefaultBufferedTransportInstanceRequirements {
-       mock := &MockDefaultBufferedTransportInstanceRequirements{}
-       mock.Mock.Test(t)
-
-       t.Cleanup(func() { mock.AssertExpectations(t) })
-
-       return mock
-}
diff --git 
a/plc4go/spi/transports/mock_DefaultBufferedTransportInstance_test.go 
b/plc4go/spi/transports/mock_DefaultBufferedTransportInstance_test.go
deleted file mode 100644
index 7e3e607052..0000000000
--- a/plc4go/spi/transports/mock_DefaultBufferedTransportInstance_test.go
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-// Code generated by mockery v2.28.1. DO NOT EDIT.
-
-package transports
-
-import (
-       bufio "bufio"
-       context "context"
-
-       mock "github.com/stretchr/testify/mock"
-)
-
-// MockDefaultBufferedTransportInstance is an autogenerated mock type for the 
DefaultBufferedTransportInstance type
-type MockDefaultBufferedTransportInstance struct {
-       mock.Mock
-}
-
-type MockDefaultBufferedTransportInstance_Expecter struct {
-       mock *mock.Mock
-}
-
-func (_m *MockDefaultBufferedTransportInstance) EXPECT() 
*MockDefaultBufferedTransportInstance_Expecter {
-       return &MockDefaultBufferedTransportInstance_Expecter{mock: &_m.Mock}
-}
-
-// ConnectWithContext provides a mock function with given fields: ctx
-func (_m *MockDefaultBufferedTransportInstance) ConnectWithContext(ctx 
context.Context) error {
-       ret := _m.Called(ctx)
-
-       var r0 error
-       if rf, ok := ret.Get(0).(func(context.Context) error); ok {
-               r0 = rf(ctx)
-       } else {
-               r0 = ret.Error(0)
-       }
-
-       return r0
-}
-
-// MockDefaultBufferedTransportInstance_ConnectWithContext_Call is a 
*mock.Call that shadows Run/Return methods with type explicit version for 
method 'ConnectWithContext'
-type MockDefaultBufferedTransportInstance_ConnectWithContext_Call struct {
-       *mock.Call
-}
-
-// ConnectWithContext is a helper method to define mock.On call
-//   - ctx context.Context
-func (_e *MockDefaultBufferedTransportInstance_Expecter) 
ConnectWithContext(ctx interface{}) 
*MockDefaultBufferedTransportInstance_ConnectWithContext_Call {
-       return 
&MockDefaultBufferedTransportInstance_ConnectWithContext_Call{Call: 
_e.mock.On("ConnectWithContext", ctx)}
-}
-
-func (_c *MockDefaultBufferedTransportInstance_ConnectWithContext_Call) 
Run(run func(ctx context.Context)) 
*MockDefaultBufferedTransportInstance_ConnectWithContext_Call {
-       _c.Call.Run(func(args mock.Arguments) {
-               run(args[0].(context.Context))
-       })
-       return _c
-}
-
-func (_c *MockDefaultBufferedTransportInstance_ConnectWithContext_Call) 
Return(_a0 error) *MockDefaultBufferedTransportInstance_ConnectWithContext_Call 
{
-       _c.Call.Return(_a0)
-       return _c
-}
-
-func (_c *MockDefaultBufferedTransportInstance_ConnectWithContext_Call) 
RunAndReturn(run func(context.Context) error) 
*MockDefaultBufferedTransportInstance_ConnectWithContext_Call {
-       _c.Call.Return(run)
-       return _c
-}
-
-// FillBuffer provides a mock function with given fields: until
-func (_m *MockDefaultBufferedTransportInstance) FillBuffer(until func(uint, 
byte, *bufio.Reader) bool) error {
-       ret := _m.Called(until)
-
-       var r0 error
-       if rf, ok := ret.Get(0).(func(func(uint, byte, *bufio.Reader) bool) 
error); ok {
-               r0 = rf(until)
-       } else {
-               r0 = ret.Error(0)
-       }
-
-       return r0
-}
-
-// MockDefaultBufferedTransportInstance_FillBuffer_Call is a *mock.Call that 
shadows Run/Return methods with type explicit version for method 'FillBuffer'
-type MockDefaultBufferedTransportInstance_FillBuffer_Call struct {
-       *mock.Call
-}
-
-// FillBuffer is a helper method to define mock.On call
-//   - until func(uint , byte , *bufio.Reader) bool
-func (_e *MockDefaultBufferedTransportInstance_Expecter) FillBuffer(until 
interface{}) *MockDefaultBufferedTransportInstance_FillBuffer_Call {
-       return &MockDefaultBufferedTransportInstance_FillBuffer_Call{Call: 
_e.mock.On("FillBuffer", until)}
-}
-
-func (_c *MockDefaultBufferedTransportInstance_FillBuffer_Call) Run(run 
func(until func(uint, byte, *bufio.Reader) bool)) 
*MockDefaultBufferedTransportInstance_FillBuffer_Call {
-       _c.Call.Run(func(args mock.Arguments) {
-               run(args[0].(func(uint, byte, *bufio.Reader) bool))
-       })
-       return _c
-}
-
-func (_c *MockDefaultBufferedTransportInstance_FillBuffer_Call) Return(_a0 
error) *MockDefaultBufferedTransportInstance_FillBuffer_Call {
-       _c.Call.Return(_a0)
-       return _c
-}
-
-func (_c *MockDefaultBufferedTransportInstance_FillBuffer_Call) 
RunAndReturn(run func(func(uint, byte, *bufio.Reader) bool) error) 
*MockDefaultBufferedTransportInstance_FillBuffer_Call {
-       _c.Call.Return(run)
-       return _c
-}
-
-// GetNumBytesAvailableInBuffer provides a mock function with given fields:
-func (_m *MockDefaultBufferedTransportInstance) GetNumBytesAvailableInBuffer() 
(uint32, error) {
-       ret := _m.Called()
-
-       var r0 uint32
-       var r1 error
-       if rf, ok := ret.Get(0).(func() (uint32, error)); ok {
-               return rf()
-       }
-       if rf, ok := ret.Get(0).(func() uint32); ok {
-               r0 = rf()
-       } else {
-               r0 = ret.Get(0).(uint32)
-       }
-
-       if rf, ok := ret.Get(1).(func() error); ok {
-               r1 = rf()
-       } else {
-               r1 = ret.Error(1)
-       }
-
-       return r0, r1
-}
-
-// MockDefaultBufferedTransportInstance_GetNumBytesAvailableInBuffer_Call is a 
*mock.Call that shadows Run/Return methods with type explicit version for 
method 'GetNumBytesAvailableInBuffer'
-type MockDefaultBufferedTransportInstance_GetNumBytesAvailableInBuffer_Call 
struct {
-       *mock.Call
-}
-
-// GetNumBytesAvailableInBuffer is a helper method to define mock.On call
-func (_e *MockDefaultBufferedTransportInstance_Expecter) 
GetNumBytesAvailableInBuffer() 
*MockDefaultBufferedTransportInstance_GetNumBytesAvailableInBuffer_Call {
-       return 
&MockDefaultBufferedTransportInstance_GetNumBytesAvailableInBuffer_Call{Call: 
_e.mock.On("GetNumBytesAvailableInBuffer")}
-}
-
-func (_c 
*MockDefaultBufferedTransportInstance_GetNumBytesAvailableInBuffer_Call) 
Run(run func()) 
*MockDefaultBufferedTransportInstance_GetNumBytesAvailableInBuffer_Call {
-       _c.Call.Run(func(args mock.Arguments) {
-               run()
-       })
-       return _c
-}
-
-func (_c 
*MockDefaultBufferedTransportInstance_GetNumBytesAvailableInBuffer_Call) 
Return(_a0 uint32, _a1 error) 
*MockDefaultBufferedTransportInstance_GetNumBytesAvailableInBuffer_Call {
-       _c.Call.Return(_a0, _a1)
-       return _c
-}
-
-func (_c 
*MockDefaultBufferedTransportInstance_GetNumBytesAvailableInBuffer_Call) 
RunAndReturn(run func() (uint32, error)) 
*MockDefaultBufferedTransportInstance_GetNumBytesAvailableInBuffer_Call {
-       _c.Call.Return(run)
-       return _c
-}
-
-// PeekReadableBytes provides a mock function with given fields: numBytes
-func (_m *MockDefaultBufferedTransportInstance) PeekReadableBytes(numBytes 
uint32) ([]byte, error) {
-       ret := _m.Called(numBytes)
-
-       var r0 []byte
-       var r1 error
-       if rf, ok := ret.Get(0).(func(uint32) ([]byte, error)); ok {
-               return rf(numBytes)
-       }
-       if rf, ok := ret.Get(0).(func(uint32) []byte); ok {
-               r0 = rf(numBytes)
-       } else {
-               if ret.Get(0) != nil {
-                       r0 = ret.Get(0).([]byte)
-               }
-       }
-
-       if rf, ok := ret.Get(1).(func(uint32) error); ok {
-               r1 = rf(numBytes)
-       } else {
-               r1 = ret.Error(1)
-       }
-
-       return r0, r1
-}
-
-// MockDefaultBufferedTransportInstance_PeekReadableBytes_Call is a *mock.Call 
that shadows Run/Return methods with type explicit version for method 
'PeekReadableBytes'
-type MockDefaultBufferedTransportInstance_PeekReadableBytes_Call struct {
-       *mock.Call
-}
-
-// PeekReadableBytes is a helper method to define mock.On call
-//   - numBytes uint32
-func (_e *MockDefaultBufferedTransportInstance_Expecter) 
PeekReadableBytes(numBytes interface{}) 
*MockDefaultBufferedTransportInstance_PeekReadableBytes_Call {
-       return 
&MockDefaultBufferedTransportInstance_PeekReadableBytes_Call{Call: 
_e.mock.On("PeekReadableBytes", numBytes)}
-}
-
-func (_c *MockDefaultBufferedTransportInstance_PeekReadableBytes_Call) Run(run 
func(numBytes uint32)) 
*MockDefaultBufferedTransportInstance_PeekReadableBytes_Call {
-       _c.Call.Run(func(args mock.Arguments) {
-               run(args[0].(uint32))
-       })
-       return _c
-}
-
-func (_c *MockDefaultBufferedTransportInstance_PeekReadableBytes_Call) 
Return(_a0 []byte, _a1 error) 
*MockDefaultBufferedTransportInstance_PeekReadableBytes_Call {
-       _c.Call.Return(_a0, _a1)
-       return _c
-}
-
-func (_c *MockDefaultBufferedTransportInstance_PeekReadableBytes_Call) 
RunAndReturn(run func(uint32) ([]byte, error)) 
*MockDefaultBufferedTransportInstance_PeekReadableBytes_Call {
-       _c.Call.Return(run)
-       return _c
-}
-
-// Read provides a mock function with given fields: numBytes
-func (_m *MockDefaultBufferedTransportInstance) Read(numBytes uint32) ([]byte, 
error) {
-       ret := _m.Called(numBytes)
-
-       var r0 []byte
-       var r1 error
-       if rf, ok := ret.Get(0).(func(uint32) ([]byte, error)); ok {
-               return rf(numBytes)
-       }
-       if rf, ok := ret.Get(0).(func(uint32) []byte); ok {
-               r0 = rf(numBytes)
-       } else {
-               if ret.Get(0) != nil {
-                       r0 = ret.Get(0).([]byte)
-               }
-       }
-
-       if rf, ok := ret.Get(1).(func(uint32) error); ok {
-               r1 = rf(numBytes)
-       } else {
-               r1 = ret.Error(1)
-       }
-
-       return r0, r1
-}
-
-// MockDefaultBufferedTransportInstance_Read_Call is a *mock.Call that shadows 
Run/Return methods with type explicit version for method 'Read'
-type MockDefaultBufferedTransportInstance_Read_Call struct {
-       *mock.Call
-}
-
-// Read is a helper method to define mock.On call
-//   - numBytes uint32
-func (_e *MockDefaultBufferedTransportInstance_Expecter) Read(numBytes 
interface{}) *MockDefaultBufferedTransportInstance_Read_Call {
-       return &MockDefaultBufferedTransportInstance_Read_Call{Call: 
_e.mock.On("Read", numBytes)}
-}
-
-func (_c *MockDefaultBufferedTransportInstance_Read_Call) Run(run 
func(numBytes uint32)) *MockDefaultBufferedTransportInstance_Read_Call {
-       _c.Call.Run(func(args mock.Arguments) {
-               run(args[0].(uint32))
-       })
-       return _c
-}
-
-func (_c *MockDefaultBufferedTransportInstance_Read_Call) Return(_a0 []byte, 
_a1 error) *MockDefaultBufferedTransportInstance_Read_Call {
-       _c.Call.Return(_a0, _a1)
-       return _c
-}
-
-func (_c *MockDefaultBufferedTransportInstance_Read_Call) RunAndReturn(run 
func(uint32) ([]byte, error)) *MockDefaultBufferedTransportInstance_Read_Call {
-       _c.Call.Return(run)
-       return _c
-}
-
-type mockConstructorTestingTNewMockDefaultBufferedTransportInstance interface {
-       mock.TestingT
-       Cleanup(func())
-}
-
-// NewMockDefaultBufferedTransportInstance creates a new instance of 
MockDefaultBufferedTransportInstance. It also registers a testing interface on 
the mock and a cleanup function to assert the mocks expectations.
-func NewMockDefaultBufferedTransportInstance(t 
mockConstructorTestingTNewMockDefaultBufferedTransportInstance) 
*MockDefaultBufferedTransportInstance {
-       mock := &MockDefaultBufferedTransportInstance{}
-       mock.Mock.Test(t)
-
-       t.Cleanup(func() { mock.AssertExpectations(t) })
-
-       return mock
-}
diff --git a/plc4go/spi/transports/pcap/Transport.go 
b/plc4go/spi/transports/pcap/Transport.go
index ef455e6364..48f6eabe4e 100644
--- a/plc4go/spi/transports/pcap/Transport.go
+++ b/plc4go/spi/transports/pcap/Transport.go
@@ -25,6 +25,7 @@ import (
        "fmt"
        "github.com/apache/plc4x/plc4go/spi/options"
        "github.com/apache/plc4x/plc4go/spi/transports"
+       transportUtils "github.com/apache/plc4x/plc4go/spi/transports/utils"
        "github.com/gopacket/gopacket"
        "github.com/gopacket/gopacket/layers"
        "github.com/gopacket/gopacket/pcap"
@@ -89,7 +90,7 @@ func (m Transport) String() string {
 }
 
 type TransportInstance struct {
-       transports.DefaultBufferedTransportInstance
+       transportUtils.DefaultBufferedTransportInstance
        transportFile string
        transportType TransportType
        portRange     string
@@ -113,7 +114,7 @@ func NewPcapTransportInstance(transportFile string, 
transportType TransportType,
 
                log: options.ExtractCustomLogger(_options...),
        }
-       transportInstance.DefaultBufferedTransportInstance = 
transports.NewDefaultBufferedTransportInstance(transportInstance)
+       transportInstance.DefaultBufferedTransportInstance = 
transportUtils.NewDefaultBufferedTransportInstance(transportInstance, 
_options...)
        return transportInstance
 }
 
diff --git a/plc4go/spi/transports/pcap/Transport_test.go 
b/plc4go/spi/transports/pcap/Transport_test.go
index 91fda11c7f..9cc013dc96 100644
--- a/plc4go/spi/transports/pcap/Transport_test.go
+++ b/plc4go/spi/transports/pcap/Transport_test.go
@@ -22,6 +22,7 @@ package pcap
 import (
        "bufio"
        "github.com/apache/plc4x/plc4go/spi/transports"
+       transportUtils "github.com/apache/plc4x/plc4go/spi/transports/utils"
        "github.com/gopacket/gopacket"
        "github.com/gopacket/gopacket/layers"
        "github.com/gopacket/gopacket/pcap"
@@ -50,7 +51,7 @@ func TestNewPcapTransportInstance(t *testing.T) {
                        name: "create it",
                        want: func() *TransportInstance {
                                ti := &TransportInstance{}
-                               ti.DefaultBufferedTransportInstance = 
transports.NewDefaultBufferedTransportInstance(ti)
+                               ti.DefaultBufferedTransportInstance = 
transportUtils.NewDefaultBufferedTransportInstance(ti)
                                return ti
                        }(),
                },
@@ -85,7 +86,7 @@ func TestNewTransport(t *testing.T) {
 
 func TestTransportInstance_Close(t *testing.T) {
        type fields struct {
-               DefaultBufferedTransportInstance 
transports.DefaultBufferedTransportInstance
+               DefaultBufferedTransportInstance 
transportUtils.DefaultBufferedTransportInstance
                transportFile                    string
                transportType                    TransportType
                portRange                        string
@@ -129,7 +130,7 @@ func TestTransportInstance_Close(t *testing.T) {
 
 func TestTransportInstance_Connect(t *testing.T) {
        type fields struct {
-               DefaultBufferedTransportInstance 
transports.DefaultBufferedTransportInstance
+               DefaultBufferedTransportInstance 
transportUtils.DefaultBufferedTransportInstance
                transportFile                    string
                transportType                    TransportType
                portRange                        string
@@ -193,7 +194,7 @@ func TestTransportInstance_Connect(t *testing.T) {
 
 func TestTransportInstance_GetReader(t *testing.T) {
        type fields struct {
-               DefaultBufferedTransportInstance 
transports.DefaultBufferedTransportInstance
+               DefaultBufferedTransportInstance 
transportUtils.DefaultBufferedTransportInstance
                transportFile                    string
                transportType                    TransportType
                portRange                        string
@@ -234,7 +235,7 @@ func TestTransportInstance_GetReader(t *testing.T) {
 
 func TestTransportInstance_IsConnected(t *testing.T) {
        type fields struct {
-               DefaultBufferedTransportInstance 
transports.DefaultBufferedTransportInstance
+               DefaultBufferedTransportInstance 
transportUtils.DefaultBufferedTransportInstance
                transportFile                    string
                transportType                    TransportType
                portRange                        string
@@ -275,7 +276,7 @@ func TestTransportInstance_IsConnected(t *testing.T) {
 
 func TestTransportInstance_String(t *testing.T) {
        type fields struct {
-               DefaultBufferedTransportInstance 
transports.DefaultBufferedTransportInstance
+               DefaultBufferedTransportInstance 
transportUtils.DefaultBufferedTransportInstance
                transportFile                    string
                transportType                    TransportType
                portRange                        string
@@ -322,7 +323,7 @@ func TestTransportInstance_String(t *testing.T) {
 
 func TestTransportInstance_Write(t *testing.T) {
        type fields struct {
-               DefaultBufferedTransportInstance 
transports.DefaultBufferedTransportInstance
+               DefaultBufferedTransportInstance 
transportUtils.DefaultBufferedTransportInstance
                transportFile                    string
                transportType                    TransportType
                portRange                        string
@@ -393,7 +394,7 @@ func TestTransport_CreateTransportInstance(t *testing.T) {
                                        transport:     NewTransport(),
                                        portRange:     "1-3",
                                }
-                               ti.DefaultBufferedTransportInstance = 
transports.NewDefaultBufferedTransportInstance(ti)
+                               ti.DefaultBufferedTransportInstance = 
transportUtils.NewDefaultBufferedTransportInstance(ti)
                                return ti
                        }(),
                },
diff --git a/plc4go/spi/transports/serial/Transport.go 
b/plc4go/spi/transports/serial/Transport.go
index 8640121603..9bead476a1 100644
--- a/plc4go/spi/transports/serial/Transport.go
+++ b/plc4go/spi/transports/serial/Transport.go
@@ -22,6 +22,7 @@ package serial
 import (
        "bufio"
        "fmt"
+       transportUtils "github.com/apache/plc4x/plc4go/spi/transports/utils"
        "io"
        "net"
        "net/url"
@@ -88,7 +89,7 @@ func (m Transport) String() string {
 }
 
 type TransportInstance struct {
-       transports.DefaultBufferedTransportInstance
+       transportUtils.DefaultBufferedTransportInstance
        SerialPortName string
        BaudRate       uint
        ConnectTimeout uint32
@@ -108,7 +109,7 @@ func NewTransportInstance(serialPortName string, baudRate 
uint, connectTimeout u
 
                log: options.ExtractCustomLogger(_options...),
        }
-       transportInstance.DefaultBufferedTransportInstance = 
transports.NewDefaultBufferedTransportInstance(transportInstance)
+       transportInstance.DefaultBufferedTransportInstance = 
transportUtils.NewDefaultBufferedTransportInstance(transportInstance, 
_options...)
        return transportInstance
 }
 
diff --git a/plc4go/spi/transports/serial/Transport_test.go 
b/plc4go/spi/transports/serial/Transport_test.go
index 4cb04a9ac5..cf4b32c407 100644
--- a/plc4go/spi/transports/serial/Transport_test.go
+++ b/plc4go/spi/transports/serial/Transport_test.go
@@ -22,6 +22,7 @@ package serial
 import (
        "bufio"
        "github.com/apache/plc4x/plc4go/spi/transports"
+       transportUtils "github.com/apache/plc4x/plc4go/spi/transports/utils"
        "github.com/stretchr/testify/assert"
        "io"
        "net"
@@ -73,7 +74,7 @@ func TestNewTransportInstance(t *testing.T) {
 
 func TestTransportInstance_Close(t *testing.T) {
        type fields struct {
-               DefaultBufferedTransportInstance 
transports.DefaultBufferedTransportInstance
+               DefaultBufferedTransportInstance 
transportUtils.DefaultBufferedTransportInstance
                SerialPortName                   string
                BaudRate                         uint
                ConnectTimeout                   uint32
@@ -108,7 +109,7 @@ func TestTransportInstance_Close(t *testing.T) {
 
 func TestTransportInstance_Connect(t *testing.T) {
        type fields struct {
-               DefaultBufferedTransportInstance 
transports.DefaultBufferedTransportInstance
+               DefaultBufferedTransportInstance 
transportUtils.DefaultBufferedTransportInstance
                SerialPortName                   string
                BaudRate                         uint
                ConnectTimeout                   uint32
@@ -143,7 +144,7 @@ func TestTransportInstance_Connect(t *testing.T) {
 
 func TestTransportInstance_GetReader(t *testing.T) {
        type fields struct {
-               DefaultBufferedTransportInstance 
transports.DefaultBufferedTransportInstance
+               DefaultBufferedTransportInstance 
transportUtils.DefaultBufferedTransportInstance
                SerialPortName                   string
                BaudRate                         uint
                ConnectTimeout                   uint32
@@ -178,7 +179,7 @@ func TestTransportInstance_GetReader(t *testing.T) {
 
 func TestTransportInstance_IsConnected(t *testing.T) {
        type fields struct {
-               DefaultBufferedTransportInstance 
transports.DefaultBufferedTransportInstance
+               DefaultBufferedTransportInstance 
transportUtils.DefaultBufferedTransportInstance
                SerialPortName                   string
                BaudRate                         uint
                ConnectTimeout                   uint32
@@ -213,7 +214,7 @@ func TestTransportInstance_IsConnected(t *testing.T) {
 
 func TestTransportInstance_String(t *testing.T) {
        type fields struct {
-               DefaultBufferedTransportInstance 
transports.DefaultBufferedTransportInstance
+               DefaultBufferedTransportInstance 
transportUtils.DefaultBufferedTransportInstance
                SerialPortName                   string
                BaudRate                         uint
                ConnectTimeout                   uint32
@@ -248,7 +249,7 @@ func TestTransportInstance_String(t *testing.T) {
 
 func TestTransportInstance_Write(t *testing.T) {
        type fields struct {
-               DefaultBufferedTransportInstance 
transports.DefaultBufferedTransportInstance
+               DefaultBufferedTransportInstance 
transportUtils.DefaultBufferedTransportInstance
                SerialPortName                   string
                BaudRate                         uint
                ConnectTimeout                   uint32
diff --git a/plc4go/spi/transports/tcp/Transport.go 
b/plc4go/spi/transports/tcp/Transport.go
index 26f84c2782..5d6667f8ac 100644
--- a/plc4go/spi/transports/tcp/Transport.go
+++ b/plc4go/spi/transports/tcp/Transport.go
@@ -30,6 +30,7 @@ import (
 
        "github.com/apache/plc4x/plc4go/spi/options"
        "github.com/apache/plc4x/plc4go/spi/transports"
+       transportUtils "github.com/apache/plc4x/plc4go/spi/transports/utils"
        "github.com/apache/plc4x/plc4go/spi/utils"
 
        "github.com/pkg/errors"
@@ -99,7 +100,7 @@ func (m Transport) String() string {
 }
 
 type TransportInstance struct {
-       transports.DefaultBufferedTransportInstance
+       transportUtils.DefaultBufferedTransportInstance
        RemoteAddress  *net.TCPAddr
        LocalAddress   *net.TCPAddr
        ConnectTimeout uint32
@@ -118,7 +119,7 @@ func NewTcpTransportInstance(remoteAddress *net.TCPAddr, 
connectTimeout uint32,
 
                log: options.ExtractCustomLogger(_options...),
        }
-       transportInstance.DefaultBufferedTransportInstance = 
transports.NewDefaultBufferedTransportInstance(transportInstance)
+       transportInstance.DefaultBufferedTransportInstance = 
transportUtils.NewDefaultBufferedTransportInstance(transportInstance, 
_options...)
        return transportInstance
 }
 
diff --git a/plc4go/spi/transports/tcp/Transport_test.go 
b/plc4go/spi/transports/tcp/Transport_test.go
index 8eb9ae8093..540e82ef32 100644
--- a/plc4go/spi/transports/tcp/Transport_test.go
+++ b/plc4go/spi/transports/tcp/Transport_test.go
@@ -24,6 +24,7 @@ import (
        "context"
        "fmt"
        "github.com/apache/plc4x/plc4go/spi/transports"
+       transportUtils "github.com/apache/plc4x/plc4go/spi/transports/utils"
        "github.com/stretchr/testify/assert"
        "github.com/stretchr/testify/require"
        "golang.org/x/net/nettest"
@@ -47,7 +48,7 @@ func TestNewTcpTransportInstance(t *testing.T) {
                        name: "create it",
                        want: func() *TransportInstance {
                                ti := &TransportInstance{}
-                               ti.DefaultBufferedTransportInstance = 
transports.NewDefaultBufferedTransportInstance(ti)
+                               ti.DefaultBufferedTransportInstance = 
transportUtils.NewDefaultBufferedTransportInstance(ti)
                                return ti
                        }(),
                },
@@ -82,7 +83,7 @@ func TestNewTransport(t *testing.T) {
 
 func TestTransportInstance_Close(t *testing.T) {
        type fields struct {
-               DefaultBufferedTransportInstance 
transports.DefaultBufferedTransportInstance
+               DefaultBufferedTransportInstance 
transportUtils.DefaultBufferedTransportInstance
                RemoteAddress                    *net.TCPAddr
                LocalAddress                     *net.TCPAddr
                ConnectTimeout                   uint32
@@ -148,7 +149,7 @@ func TestTransportInstance_Close(t *testing.T) {
 
 func TestTransportInstance_Connect(t *testing.T) {
        type fields struct {
-               DefaultBufferedTransportInstance 
transports.DefaultBufferedTransportInstance
+               DefaultBufferedTransportInstance 
transportUtils.DefaultBufferedTransportInstance
                RemoteAddress                    *net.TCPAddr
                LocalAddress                     *net.TCPAddr
                ConnectTimeout                   uint32
@@ -186,7 +187,7 @@ func TestTransportInstance_Connect(t *testing.T) {
 
 func TestTransportInstance_ConnectWithContext(t *testing.T) {
        type fields struct {
-               DefaultBufferedTransportInstance 
transports.DefaultBufferedTransportInstance
+               DefaultBufferedTransportInstance 
transportUtils.DefaultBufferedTransportInstance
                RemoteAddress                    *net.TCPAddr
                LocalAddress                     *net.TCPAddr
                ConnectTimeout                   uint32
@@ -249,7 +250,7 @@ func TestTransportInstance_ConnectWithContext(t *testing.T) 
{
 
 func TestTransportInstance_GetReader(t *testing.T) {
        type fields struct {
-               DefaultBufferedTransportInstance 
transports.DefaultBufferedTransportInstance
+               DefaultBufferedTransportInstance 
transportUtils.DefaultBufferedTransportInstance
                RemoteAddress                    *net.TCPAddr
                LocalAddress                     *net.TCPAddr
                ConnectTimeout                   uint32
@@ -286,7 +287,7 @@ func TestTransportInstance_GetReader(t *testing.T) {
 
 func TestTransportInstance_IsConnected(t *testing.T) {
        type fields struct {
-               DefaultBufferedTransportInstance 
transports.DefaultBufferedTransportInstance
+               DefaultBufferedTransportInstance 
transportUtils.DefaultBufferedTransportInstance
                RemoteAddress                    *net.TCPAddr
                LocalAddress                     *net.TCPAddr
                ConnectTimeout                   uint32
@@ -323,7 +324,7 @@ func TestTransportInstance_IsConnected(t *testing.T) {
 
 func TestTransportInstance_String(t *testing.T) {
        type fields struct {
-               DefaultBufferedTransportInstance 
transports.DefaultBufferedTransportInstance
+               DefaultBufferedTransportInstance 
transportUtils.DefaultBufferedTransportInstance
                RemoteAddress                    *net.TCPAddr
                LocalAddress                     *net.TCPAddr
                ConnectTimeout                   uint32
@@ -369,7 +370,7 @@ func TestTransportInstance_String(t *testing.T) {
 
 func TestTransportInstance_Write(t *testing.T) {
        type fields struct {
-               DefaultBufferedTransportInstance 
transports.DefaultBufferedTransportInstance
+               DefaultBufferedTransportInstance 
transportUtils.DefaultBufferedTransportInstance
                RemoteAddress                    *net.TCPAddr
                LocalAddress                     *net.TCPAddr
                ConnectTimeout                   uint32
@@ -458,7 +459,7 @@ func TestTransport_CreateTransportInstance(t *testing.T) {
                                        RemoteAddress:  tcpAddr,
                                        ConnectTimeout: 1000,
                                }
-                               ti.DefaultBufferedTransportInstance = 
transports.NewDefaultBufferedTransportInstance(ti)
+                               ti.DefaultBufferedTransportInstance = 
transportUtils.NewDefaultBufferedTransportInstance(ti)
                                return ti
                        }(),
                },
@@ -475,7 +476,7 @@ func TestTransport_CreateTransportInstance(t *testing.T) {
                                        RemoteAddress:  tcpAddr,
                                        ConnectTimeout: 1000,
                                }
-                               ti.DefaultBufferedTransportInstance = 
transports.NewDefaultBufferedTransportInstance(ti)
+                               ti.DefaultBufferedTransportInstance = 
transportUtils.NewDefaultBufferedTransportInstance(ti)
                                return ti
                        }(),
                },
@@ -492,7 +493,7 @@ func TestTransport_CreateTransportInstance(t *testing.T) {
                                        RemoteAddress:  tcpAddr,
                                        ConnectTimeout: 1000,
                                }
-                               ti.DefaultBufferedTransportInstance = 
transports.NewDefaultBufferedTransportInstance(ti)
+                               ti.DefaultBufferedTransportInstance = 
transportUtils.NewDefaultBufferedTransportInstance(ti)
                                return ti
                        }(),
                },
@@ -526,7 +527,7 @@ func TestTransport_CreateTransportInstance(t *testing.T) {
                                        RemoteAddress:  tcpAddr,
                                        ConnectTimeout: 1000,
                                }
-                               ti.DefaultBufferedTransportInstance = 
transports.NewDefaultBufferedTransportInstance(ti)
+                               ti.DefaultBufferedTransportInstance = 
transportUtils.NewDefaultBufferedTransportInstance(ti)
                                return ti
                        }(),
                },
@@ -557,7 +558,7 @@ func TestTransport_CreateTransportInstance(t *testing.T) {
                                        RemoteAddress:  tcpAddr,
                                        ConnectTimeout: 123,
                                }
-                               ti.DefaultBufferedTransportInstance = 
transports.NewDefaultBufferedTransportInstance(ti)
+                               ti.DefaultBufferedTransportInstance = 
transportUtils.NewDefaultBufferedTransportInstance(ti)
                                return ti
                        }(),
                },
diff --git a/plc4go/spi/transports/TransportInstance.go 
b/plc4go/spi/transports/utils/DefaultBufferedTransportInstance.go
similarity index 78%
copy from plc4go/spi/transports/TransportInstance.go
copy to plc4go/spi/transports/utils/DefaultBufferedTransportInstance.go
index fc3b66d328..922ed57ca3 100644
--- a/plc4go/spi/transports/TransportInstance.go
+++ b/plc4go/spi/transports/utils/DefaultBufferedTransportInstance.go
@@ -17,33 +17,17 @@
  * under the License.
  */
 
-package transports
+package utils
 
 import (
        "bufio"
        "context"
-       "fmt"
-       "github.com/pkg/errors"
-       "github.com/rs/zerolog/log"
-)
-
-type TransportInstance interface {
-       fmt.Stringer
-       Connect() error
-       ConnectWithContext(ctx context.Context) error
-       Close() error
 
-       IsConnected() bool
+       "github.com/apache/plc4x/plc4go/spi/options"
 
-       // FillBuffer fills the buffer `until` false (Useful in conjunction if 
you want GetNumBytesAvailableInBuffer)
-       FillBuffer(until func(pos uint, currentByte byte, reader *bufio.Reader) 
bool) error
-       // GetNumBytesAvailableInBuffer returns the bytes currently available 
in buffer (!!!Careful: if you looking for a termination you have to use 
FillBuffer)
-       GetNumBytesAvailableInBuffer() (uint32, error)
-       PeekReadableBytes(numBytes uint32) ([]byte, error)
-       Read(numBytes uint32) ([]byte, error)
-
-       Write(data []byte) error
-}
+       "github.com/pkg/errors"
+       "github.com/rs/zerolog"
+)
 
 type DefaultBufferedTransportInstanceRequirements interface {
        GetReader() *bufio.Reader
@@ -58,12 +42,17 @@ type DefaultBufferedTransportInstance interface {
        Read(numBytes uint32) ([]byte, error)
 }
 
-func 
NewDefaultBufferedTransportInstance(defaultBufferedTransportInstanceRequirements
 DefaultBufferedTransportInstanceRequirements) DefaultBufferedTransportInstance 
{
-       return 
&defaultBufferedTransportInstance{defaultBufferedTransportInstanceRequirements}
+func 
NewDefaultBufferedTransportInstance(defaultBufferedTransportInstanceRequirements
 DefaultBufferedTransportInstanceRequirements, _options ...options.WithOption) 
DefaultBufferedTransportInstance {
+       return &defaultBufferedTransportInstance{
+               DefaultBufferedTransportInstanceRequirements: 
defaultBufferedTransportInstanceRequirements,
+               log: options.ExtractCustomLogger(_options...),
+       }
 }
 
 type defaultBufferedTransportInstance struct {
        DefaultBufferedTransportInstanceRequirements
+
+       log zerolog.Logger
 }
 
 // ConnectWithContext is a compatibility implementation for those transports 
not implementing this function
@@ -72,7 +61,7 @@ func (m *defaultBufferedTransportInstance) 
ConnectWithContext(ctx context.Contex
        go func() {
                defer func() {
                        if err := recover(); err != nil {
-                               log.Error().Interface("err", err).Msg("connect 
panic-ed")
+                               m.log.Error().Interface("err", 
err).Msg("connect panic-ed")
                        }
                }()
                ch <- m.Connect()
diff --git a/plc4go/spi/transports/TransportInstance_test.go 
b/plc4go/spi/transports/utils/DefaultBufferedTransportInstance_test.go
similarity index 99%
rename from plc4go/spi/transports/TransportInstance_test.go
rename to plc4go/spi/transports/utils/DefaultBufferedTransportInstance_test.go
index e237fd481c..b9cfe9842b 100644
--- a/plc4go/spi/transports/TransportInstance_test.go
+++ b/plc4go/spi/transports/utils/DefaultBufferedTransportInstance_test.go
@@ -17,15 +17,16 @@
  * under the License.
  */
 
-package transports
+package utils
 
 import (
        "bufio"
        "bytes"
        "context"
-       "github.com/stretchr/testify/assert"
        "testing"
        "time"
+
+       "github.com/stretchr/testify/assert"
 )
 
 func TestNewDefaultBufferedTransportInstance(t *testing.T) {
diff --git a/plc4go/spi/utils/Net.go b/plc4go/spi/utils/Net.go
index d48cc6b45f..cff8137a6f 100644
--- a/plc4go/spi/utils/Net.go
+++ b/plc4go/spi/utils/Net.go
@@ -33,7 +33,7 @@ import (
        "github.com/pkg/errors"
 )
 
-func GetIPAddresses(log zerolog.Logger, ctx context.Context, netInterface 
net.Interface, useArpBasedScan bool) (foundIps chan net.IP, err error) {
+func GetIPAddresses(localLog zerolog.Logger, ctx context.Context, netInterface 
net.Interface, useArpBasedScan bool) (foundIps chan net.IP, err error) {
        foundIps = make(chan net.IP, 65536)
        addrs, err := netInterface.Addrs()
        if err != nil {
@@ -42,7 +42,7 @@ func GetIPAddresses(log zerolog.Logger, ctx context.Context, 
netInterface net.In
        go func() {
                defer func() {
                        if err := recover(); err != nil {
-                               log.Error().Msgf("panic-ed %v", err)
+                               localLog.Error().Msgf("panic-ed %v", err)
                        }
                }()
                wg := &sync.WaitGroup{}
@@ -69,21 +69,21 @@ func GetIPAddresses(log zerolog.Logger, ctx 
context.Context, netInterface net.In
                                continue
                        }
 
-                       log.Debug().Stringer("IP", ipnet.IP).Stringer("Mask", 
ipnet.Mask).Msg("Expanding local subnet")
+                       localLog.Debug().Stringer("IP", 
ipnet.IP).Stringer("Mask", ipnet.Mask).Msg("Expanding local subnet")
                        if useArpBasedScan {
-                               if err := lockupIpsUsingArp(log, ctx, 
netInterface, ipnet, foundIps, wg); err != nil {
-                                       log.Error().Err(err).Msg("failing to 
resolve using arp scan. Falling back to ip based scan")
+                               if err := lockupIpsUsingArp(localLog, ctx, 
netInterface, ipnet, foundIps, wg); err != nil {
+                                       localLog.Error().Err(err).Msg("failing 
to resolve using arp scan. Falling back to ip based scan")
                                        useArpBasedScan = false
                                }
                        }
                        if !useArpBasedScan {
-                               if err := lookupIps(log, ctx, ipnet, foundIps, 
wg); err != nil {
-                                       log.Error().Err(err).Msg("error looking 
up ips")
+                               if err := lookupIps(localLog, ctx, ipnet, 
foundIps, wg); err != nil {
+                                       localLog.Error().Err(err).Msg("error 
looking up ips")
                                }
                        }
                }
                wg.Wait()
-               log.Trace().Msg("Closing found ips channel")
+               localLog.Trace().Msg("Closing found ips channel")
                close(foundIps)
        }()
        return foundIps, nil
@@ -92,11 +92,11 @@ func GetIPAddresses(log zerolog.Logger, ctx 
context.Context, netInterface net.In
 // As PING operations might be blocked by a firewall, responding to ARP 
packets is mandatory for IP based
 // systems. So we are using an ARP scan to resolve the ethernet hardware 
addresses of each possible ip in range
 // Only for devices that respond will we schedule a discovery.
-func lockupIpsUsingArp(log zerolog.Logger, ctx context.Context, netInterface 
net.Interface, ipNet *net.IPNet, foundIps chan net.IP, wg *sync.WaitGroup) 
error {
+func lockupIpsUsingArp(localLog zerolog.Logger, ctx context.Context, 
netInterface net.Interface, ipNet *net.IPNet, foundIps chan net.IP, wg 
*sync.WaitGroup) error {
        // We add on signal for error handling
        wg.Add(1)
        go func() { wg.Done() }()
-       log.Debug().Msgf("Scanning for alive IP addresses for interface '%s' 
and net: %s", netInterface.Name, ipNet)
+       localLog.Debug().Msgf("Scanning for alive IP addresses for interface 
'%s' and net: %s", netInterface.Name, ipNet)
        // First find the pcap device name for the given interface.
        allDevs, _ := pcap.FindAllDevs()
        var devName string
@@ -109,7 +109,7 @@ func lockupIpsUsingArp(log zerolog.Logger, ctx 
context.Context, netInterface net
                }
        }
        if len(devName) == 0 {
-               log.Error().Interface("allDevs", allDevs).Str("ip", 
ipNet.IP.String()).Msg("Device for discovery not found")
+               localLog.Error().Interface("allDevs", allDevs).Str("ip", 
ipNet.IP.String()).Msg("Device for discovery not found")
                return errors.New("Device for discovery not found")
        }
 
@@ -127,7 +127,7 @@ func lockupIpsUsingArp(log zerolog.Logger, ctx 
context.Context, netInterface net
        go func(handle *pcap.Handle, iface net.Interface, stop chan struct{}) {
                defer func() {
                        if err := recover(); err != nil {
-                               log.Error().Msgf("panic-ed %v", err)
+                               localLog.Error().Msgf("panic-ed %v", err)
                        }
                }()
                src := gopacket.NewPacketSource(handle, 
layers.LayerTypeEthernet)
@@ -152,7 +152,7 @@ func lockupIpsUsingArp(log zerolog.Logger, ctx 
context.Context, netInterface net
                                }
                                // Schedule a discovery operation for this ip.
                                ip := net.IP(arp.SourceProtAddress)
-                               log.Trace().Msgf("Scheduling discovery for IP 
%s", ip)
+                               localLog.Trace().Msgf("Scheduling discovery for 
IP %s", ip)
                                timeout := time.NewTimer(2 * time.Second)
                                go func(ip net.IP) {
                                        defer CleanupTimer(timeout)
@@ -197,7 +197,7 @@ func lockupIpsUsingArp(log zerolog.Logger, ctx 
context.Context, netInterface net
                        FixLengths:       true,
                        ComputeChecksums: true,
                }
-               log.Debug().Msgf("Sending ARP requests to all devices in 
network: %s", addr.String())
+               localLog.Debug().Msgf("Sending ARP requests to all devices in 
network: %s", addr.String())
                // Send one ARP packet for every possible address.
                for ip := IncrementIP(addr.IP.Mask(ipNet.Mask)); 
addr.Contains(ip) && addr.Contains(IncrementIP(DuplicateIP(ip))); ip = 
IncrementIP(ip) {
                        // Check if context has been cancelled before continuing
@@ -218,15 +218,15 @@ func lockupIpsUsingArp(log zerolog.Logger, ctx 
context.Context, netInterface net
        }
        // Write our scan packets out to the handle.
        if err := writeArp(handle, netInterface, *ipNet); err != nil {
-               log.Printf("error writing packets on %v: %v", 
netInterface.Name, err)
+               localLog.Printf("error writing packets on %v: %v", 
netInterface.Name, err)
                return err
        }
        return nil
 }
 
 // Simply takes the IP address and the netmask and schedules one discovery 
task for every possible IP
-func lookupIps(log zerolog.Logger, ctx context.Context, ipnet *net.IPNet, 
foundIps chan net.IP, wg *sync.WaitGroup) error {
-       log.Debug().Msgf("Scanning all IP addresses for network: %s", ipnet)
+func lookupIps(localLog zerolog.Logger, ctx context.Context, ipnet *net.IPNet, 
foundIps chan net.IP, wg *sync.WaitGroup) error {
+       localLog.Debug().Msgf("Scanning all IP addresses for network: %s", 
ipnet)
        // expand CIDR-block into one target for each IP
        // Remark: The last IP address a network contains is a special 
broadcast address. We don't want to check that one.
        for ip := IncrementIP(ipnet.IP.Mask(ipnet.Mask)); ipnet.Contains(ip) && 
ipnet.Contains(IncrementIP(DuplicateIP(ip))); ip = IncrementIP(ip) {
@@ -248,10 +248,10 @@ func lookupIps(log zerolog.Logger, ctx context.Context, 
ipnet *net.IPNet, foundI
                        case <-timeout.C:
                        }
                }(DuplicateIP(ip))
-               log.Trace().Stringer("IP", ip).Msg("Expanded CIDR")
+               localLog.Trace().Stringer("IP", ip).Msg("Expanded CIDR")
        }
 
-       log.Debug().Stringer("net", ipnet).Msg("Done expanding CIDR")
+       localLog.Debug().Stringer("net", ipnet).Msg("Done expanding CIDR")
 
        return nil
 }

Reply via email to