Skip to content

Commit

Permalink
feat(plc4go): add new WithCustomLogger option
Browse files Browse the repository at this point in the history
to use it call config.WithCustomLogger(log)
  • Loading branch information
sruehl committed Jun 1, 2023
1 parent 577d61e commit 3193782
Show file tree
Hide file tree
Showing 23 changed files with 213 additions and 79 deletions.
5 changes: 3 additions & 2 deletions plc4go/internal/ads/Connection.go
Expand Up @@ -23,6 +23,7 @@ import (
"context"
"encoding/binary"
"fmt"
"github.com/apache/plc4x/plc4go/spi/options"
"strconv"
"strings"

Expand Down Expand Up @@ -54,7 +55,7 @@ type Connection struct {
subscriptions map[uint32]apiModel.PlcSubscriptionHandle
}

func NewConnection(messageCodec spi.MessageCodec, configuration model.Configuration, options map[string][]string) (*Connection, error) {
func NewConnection(messageCodec spi.MessageCodec, configuration model.Configuration, options map[string][]string, _options ...options.WithOption) (*Connection, error) {
driverContext, err := NewDriverContext(configuration)
if err != nil {
return nil, err
Expand All @@ -68,7 +69,7 @@ func NewConnection(messageCodec spi.MessageCodec, configuration model.Configurat
if traceEnabledOption, ok := options["traceEnabled"]; ok {
if len(traceEnabledOption) == 1 {
// TODO: Connection Id is probably "" all the time.
connection.tracer = spi.NewTracer(driverContext.connectionId)
connection.tracer = spi.NewTracer(driverContext.connectionId, _options...)
}
}
tagHandler := NewTagHandlerWithDriverContext(driverContext)
Expand Down
9 changes: 7 additions & 2 deletions plc4go/internal/ads/Driver.go
Expand Up @@ -21,6 +21,7 @@ package ads

import (
"context"
"github.com/rs/zerolog"
"net/url"
"strconv"

Expand All @@ -37,10 +38,14 @@ import (

type Driver struct {
_default.DefaultDriver

log zerolog.Logger // TODO: use it
}

func NewDriver() plc4go.PlcDriver {
driver := &Driver{}
func NewDriver(_options ...options.WithOption) plc4go.PlcDriver {
driver := &Driver{
log: options.ExtractCustomLogger(_options...),
}
driver.DefaultDriver = _default.NewDefaultDriver(driver, "ads", "Beckhoff TwinCat ADS", "tcp", NewTagHandler())
return driver
}
Expand Down
5 changes: 3 additions & 2 deletions plc4go/internal/bacnetip/Connection.go
Expand Up @@ -22,6 +22,7 @@ package bacnetip
import (
"context"
"fmt"
"github.com/apache/plc4x/plc4go/spi/options"
"github.com/apache/plc4x/plc4go/spi/transactions"
"github.com/apache/plc4x/plc4go/spi/utils"
"github.com/pkg/errors"
Expand All @@ -47,15 +48,15 @@ type Connection struct {
tracer *spi.Tracer
}

func NewConnection(messageCodec spi.MessageCodec, tagHandler spi.PlcTagHandler, tm transactions.RequestTransactionManager, options map[string][]string) *Connection {
func NewConnection(messageCodec spi.MessageCodec, tagHandler spi.PlcTagHandler, tm transactions.RequestTransactionManager, options map[string][]string, _options ...options.WithOption) *Connection {
connection := &Connection{
invokeIdGenerator: InvokeIdGenerator{currentInvokeId: 0},
messageCodec: messageCodec,
tm: tm,
}
if traceEnabledOption, ok := options["traceEnabled"]; ok {
if len(traceEnabledOption) == 1 {
connection.tracer = spi.NewTracer(connection.connectionId)
connection.tracer = spi.NewTracer(connection.connectionId, _options...)
}
}
connection.DefaultConnection = _default.NewDefaultConnection(connection,
Expand Down
7 changes: 6 additions & 1 deletion plc4go/internal/bacnetip/Driver.go
Expand Up @@ -23,6 +23,7 @@ import (
"context"
"fmt"
"github.com/apache/plc4x/plc4go/spi/transactions"
"github.com/rs/zerolog"
"math"
"net"
"net/url"
Expand All @@ -46,16 +47,20 @@ type Driver struct {
tm transactions.RequestTransactionManager
awaitSetupComplete bool
awaitDisconnectComplete bool

log zerolog.Logger // TODO: use it
}

func NewDriver() plc4go.PlcDriver {
func NewDriver(_options ...options.WithOption) plc4go.PlcDriver {
driver := &Driver{
applicationManager: ApplicationManager{
applications: map[string]*ApplicationLayerMessageCodec{},
},
tm: transactions.NewRequestTransactionManager(math.MaxInt),
awaitSetupComplete: true,
awaitDisconnectComplete: true,

log: options.ExtractCustomLogger(_options...),
}
driver.DefaultDriver = _default.NewDefaultDriver(driver, "bacnet-ip", "BACnet/IP", "udp", NewTagHandler())
return driver
Expand Down
4 changes: 3 additions & 1 deletion plc4go/internal/cbus/Connection.go
Expand Up @@ -78,10 +78,12 @@ func NewConnection(messageCodec *MessageCodec, configuration Configuration, driv
configuration: configuration,
driverContext: driverContext,
tm: tm,

log: options.ExtractCustomLogger(_options...),
}
if traceEnabledOption, ok := connectionOptions["traceEnabled"]; ok {
if len(traceEnabledOption) == 1 {
connection.tracer = spi.NewTracer(connection.connectionId)
connection.tracer = spi.NewTracer(connection.connectionId, _options...)
}
}
connection.DefaultConnection = _default.NewDefaultConnection(
Expand Down
8 changes: 7 additions & 1 deletion plc4go/internal/eip/EipDriver.go
Expand Up @@ -21,7 +21,9 @@ package eip

import (
"context"
"github.com/apache/plc4x/plc4go/spi/options"
"github.com/apache/plc4x/plc4go/spi/transactions"
"github.com/rs/zerolog"
"net/url"

"github.com/apache/plc4x/plc4go/pkg/api"
Expand All @@ -36,13 +38,17 @@ type Driver struct {
tm transactions.RequestTransactionManager
awaitSetupComplete bool
awaitDisconnectComplete bool

log zerolog.Logger // TODO: use it
}

func NewDriver() plc4go.PlcDriver {
func NewDriver(_options ...options.WithOption) plc4go.PlcDriver {
driver := &Driver{
tm: transactions.NewRequestTransactionManager(1),
awaitSetupComplete: true,
awaitDisconnectComplete: true,

log: options.ExtractCustomLogger(_options...),
}
driver.DefaultDriver = _default.NewDefaultDriver(driver, "eip", "EthernetIP", "tcp", NewTagHandler())
return driver
Expand Down
2 changes: 1 addition & 1 deletion plc4go/internal/knxnetip/Connection.go
Expand Up @@ -190,7 +190,7 @@ func NewConnection(transportInstance transports.TransportInstance, options map[s

if traceEnabledOption, ok := options["traceEnabled"]; ok {
if len(traceEnabledOption) == 1 {
connection.tracer = spi.NewTracer(connection.connectionId)
connection.tracer = spi.NewTracer(connection.connectionId, _options...)
}
}
// If a building key was provided, save that in a dedicated variable
Expand Down
9 changes: 7 additions & 2 deletions plc4go/internal/knxnetip/Driver.go
Expand Up @@ -21,6 +21,7 @@ package knxnetip

import (
"context"
"github.com/rs/zerolog"
"net/url"

"github.com/apache/plc4x/plc4go/pkg/api"
Expand All @@ -34,10 +35,14 @@ import (

type Driver struct {
_default.DefaultDriver

log zerolog.Logger // TODO: use it
}

func NewDriver() *Driver {
driver := &Driver{}
func NewDriver(_options ...options.WithOption) *Driver {
driver := &Driver{
log: options.ExtractCustomLogger(_options...),
}
driver.DefaultDriver = _default.NewDefaultDriver(driver, "knxnet-ip", "KNXNet/IP", "udp", NewTagHandler())
return driver
}
Expand Down
2 changes: 1 addition & 1 deletion plc4go/internal/modbus/Connection.go
Expand Up @@ -63,7 +63,7 @@ func NewConnection(unitIdentifier uint8, messageCodec spi.MessageCodec, options
}
if traceEnabledOption, ok := options["traceEnabled"]; ok {
if len(traceEnabledOption) == 1 {
connection.tracer = spi.NewTracer(connection.connectionId)
connection.tracer = spi.NewTracer(connection.connectionId, _options...)
}
}
connection.DefaultConnection = _default.NewDefaultConnection(connection,
Expand Down
10 changes: 8 additions & 2 deletions plc4go/internal/modbus/ModbusAsciiDriver.go
Expand Up @@ -25,19 +25,25 @@ import (
"github.com/apache/plc4x/plc4go/pkg/api"
"github.com/apache/plc4x/plc4go/protocols/modbus/readwrite/model"
_default "github.com/apache/plc4x/plc4go/spi/default"
"github.com/apache/plc4x/plc4go/spi/options"
"github.com/apache/plc4x/plc4go/spi/transports"
"github.com/pkg/errors"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
"net/url"
"strconv"
)

type ModbusAsciiDriver struct {
_default.DefaultDriver

log zerolog.Logger // TODO: use it
}

func NewModbusAsciiDriver() *ModbusAsciiDriver {
driver := &ModbusAsciiDriver{}
func NewModbusAsciiDriver(_options ...options.WithOption) *ModbusAsciiDriver {
driver := &ModbusAsciiDriver{
log: options.ExtractCustomLogger(_options...),
}
driver.DefaultDriver = _default.NewDefaultDriver(driver, "modbus-ascii", "Modbus ASCII", "serial", NewTagHandler())
return driver
}
Expand Down
10 changes: 8 additions & 2 deletions plc4go/internal/modbus/ModbusRtuDriver.go
Expand Up @@ -25,19 +25,25 @@ import (
"github.com/apache/plc4x/plc4go/pkg/api"
"github.com/apache/plc4x/plc4go/protocols/modbus/readwrite/model"
_default "github.com/apache/plc4x/plc4go/spi/default"
"github.com/apache/plc4x/plc4go/spi/options"
"github.com/apache/plc4x/plc4go/spi/transports"
"github.com/pkg/errors"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
"net/url"
"strconv"
)

type ModbusRtuDriver struct {
_default.DefaultDriver

log zerolog.Logger // TODO: use it
}

func NewModbusRtuDriver() *ModbusRtuDriver {
driver := &ModbusRtuDriver{}
func NewModbusRtuDriver(_options ...options.WithOption) *ModbusRtuDriver {
driver := &ModbusRtuDriver{
log: options.ExtractCustomLogger(_options...),
}
driver.DefaultDriver = _default.NewDefaultDriver(driver, "modbus-rtu", "Modbus RTU", "serial", NewTagHandler())
return driver
}
Expand Down
10 changes: 8 additions & 2 deletions plc4go/internal/modbus/ModbusTcpDriver.go
Expand Up @@ -25,19 +25,25 @@ import (
"github.com/apache/plc4x/plc4go/pkg/api"
"github.com/apache/plc4x/plc4go/protocols/modbus/readwrite/model"
_default "github.com/apache/plc4x/plc4go/spi/default"
"github.com/apache/plc4x/plc4go/spi/options"
"github.com/apache/plc4x/plc4go/spi/transports"
"github.com/pkg/errors"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
"net/url"
"strconv"
)

type ModbusTcpDriver struct {
_default.DefaultDriver

log zerolog.Logger // TODO: use it
}

func NewModbusTcpDriver() *ModbusTcpDriver {
driver := &ModbusTcpDriver{}
func NewModbusTcpDriver(_options ...options.WithOption) *ModbusTcpDriver {
driver := &ModbusTcpDriver{
log: options.ExtractCustomLogger(_options...),
}
driver.DefaultDriver = _default.NewDefaultDriver(driver, "modbus-tcp", "Modbus TCP", "tcp", NewTagHandler())
return driver
}
Expand Down
5 changes: 3 additions & 2 deletions plc4go/internal/s7/Connection.go
Expand Up @@ -22,6 +22,7 @@ package s7
import (
"context"
"fmt"
"github.com/apache/plc4x/plc4go/spi/options"
"github.com/apache/plc4x/plc4go/spi/transactions"
"reflect"
"strings"
Expand Down Expand Up @@ -67,7 +68,7 @@ type Connection struct {
tracer *spi.Tracer
}

func NewConnection(messageCodec spi.MessageCodec, configuration Configuration, driverContext DriverContext, tagHandler spi.PlcTagHandler, tm transactions.RequestTransactionManager, options map[string][]string) *Connection {
func NewConnection(messageCodec spi.MessageCodec, configuration Configuration, driverContext DriverContext, tagHandler spi.PlcTagHandler, tm transactions.RequestTransactionManager, options map[string][]string, _options ...options.WithOption) *Connection {
connection := &Connection{
tpduGenerator: TpduGenerator{currentTpduId: 10},
messageCodec: messageCodec,
Expand All @@ -77,7 +78,7 @@ func NewConnection(messageCodec spi.MessageCodec, configuration Configuration, d
}
if traceEnabledOption, ok := options["traceEnabled"]; ok {
if len(traceEnabledOption) == 1 {
connection.tracer = spi.NewTracer(connection.connectionId)
connection.tracer = spi.NewTracer(connection.connectionId, _options...)
}
}
connection.DefaultConnection = _default.NewDefaultConnection(connection,
Expand Down
8 changes: 7 additions & 1 deletion plc4go/internal/s7/Driver.go
Expand Up @@ -21,7 +21,9 @@ package s7

import (
"context"
"github.com/apache/plc4x/plc4go/spi/options"
"github.com/apache/plc4x/plc4go/spi/transactions"
"github.com/rs/zerolog"
"net/url"

"github.com/apache/plc4x/plc4go/pkg/api"
Expand All @@ -36,13 +38,17 @@ type Driver struct {
tm transactions.RequestTransactionManager
awaitSetupComplete bool
awaitDisconnectComplete bool

log zerolog.Logger // TODO: use it
}

func NewDriver() plc4go.PlcDriver {
func NewDriver(_options ...options.WithOption) plc4go.PlcDriver {
driver := &Driver{
tm: transactions.NewRequestTransactionManager(1),
awaitSetupComplete: true,
awaitDisconnectComplete: true,

log: options.ExtractCustomLogger(_options...),
}
driver.DefaultDriver = _default.NewDefaultDriver(driver, "s7", "Siemens S7 (Basic)", "tcp", NewTagHandler())
return driver
Expand Down
19 changes: 13 additions & 6 deletions plc4go/internal/simulated/Connection.go
Expand Up @@ -29,9 +29,11 @@ import (
"github.com/apache/plc4x/plc4go/spi"
_default "github.com/apache/plc4x/plc4go/spi/default"
spiModel "github.com/apache/plc4x/plc4go/spi/model"
"github.com/apache/plc4x/plc4go/spi/options"
"github.com/apache/plc4x/plc4go/spi/utils"

"github.com/pkg/errors"
"github.com/rs/zerolog"
)

type Connection struct {
Expand All @@ -42,20 +44,25 @@ type Connection struct {
connected bool
connectionId string
tracer *spi.Tracer

log zerolog.Logger
}

func NewConnection(device *Device, tagHandler spi.PlcTagHandler, valueHandler spi.PlcValueHandler, options map[string][]string) *Connection {
func NewConnection(device *Device, tagHandler spi.PlcTagHandler, valueHandler spi.PlcValueHandler, connectionOptions map[string][]string, _options ...options.WithOption) *Connection {
localLogger := options.ExtractCustomLogger(_options...)
connection := &Connection{
device: device,
tagHandler: tagHandler,
valueHandler: valueHandler,
options: options,
options: connectionOptions,
connected: false,
connectionId: utils.GenerateId(4),
connectionId: utils.GenerateId(localLogger, 4),

log: localLogger,
}
if traceEnabledOption, ok := options["traceEnabled"]; ok {
if traceEnabledOption, ok := connectionOptions["traceEnabled"]; ok {
if len(traceEnabledOption) == 1 {
connection.tracer = spi.NewTracer(connection.connectionId)
connection.tracer = spi.NewTracer(connection.connectionId, _options...)
}
}
return connection
Expand All @@ -77,7 +84,7 @@ func (c *Connection) Connect() <-chan plc4go.PlcConnectionConnectResult {
return c.ConnectWithContext(context.Background())
}

func (c *Connection) ConnectWithContext(ctx context.Context) <-chan plc4go.PlcConnectionConnectResult {
func (c *Connection) ConnectWithContext(_ context.Context) <-chan plc4go.PlcConnectionConnectResult {
ch := make(chan plc4go.PlcConnectionConnectResult, 1)
go func() {
defer func() {
Expand Down

0 comments on commit 3193782

Please sign in to comment.