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 2023/05/31 15:23:15 UTC
[plc4x] branch develop updated: feat(plc4go/spi): use more local loggers
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 <sr...@apache.org>
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
}