This is an automated email from the ASF dual-hosted git repository.

sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 215605fe8ad9846f46d42fd898edc2c8bedd1d91
Author: Sebastian Rühl <[email protected]>
AuthorDate: Thu Nov 20 14:12:18 2025 +0100

    feat(plc4go/spi): add transactionInfo to RequestTransaction
---
 plc4go/internal/ads/DiscoveryMessageCodec.go       |   4 +-
 plc4go/internal/ads/MessageCodec.go                |   4 +-
 .../bacnetip/ApplicationLayerMessageCodec.go       |   6 +-
 plc4go/internal/bacnetip/MessageCodec.go           |   4 +-
 plc4go/internal/bacnetip/Reader.go                 |   2 +-
 plc4go/internal/cbus/CBusMessageMapper_test.go     |  44 ++++-----
 plc4go/internal/cbus/MessageCodec.go               |   4 +-
 plc4go/internal/cbus/MessageCodec_test.go          |   6 +-
 plc4go/internal/cbus/Reader.go                     |   2 +-
 plc4go/internal/cbus/Writer.go                     |   2 +-
 plc4go/internal/eip/MessageCodec.go                |   4 +-
 plc4go/internal/eip/Reader.go                      |   2 +-
 plc4go/internal/knxnetip/MessageCodec.go           |   4 +-
 plc4go/internal/modbus/MessageCodec.go             |   4 +-
 plc4go/internal/opcua/MessageCodec.go              |   4 +-
 plc4go/internal/s7/MessageCodec.go                 |   4 +-
 plc4go/internal/s7/Reader.go                       |   2 +-
 plc4go/internal/s7/Writer.go                       |   2 +-
 plc4go/spi/MessageCodec.go                         |   6 +-
 plc4go/spi/default/DefaultCodec.go                 |  16 +--
 plc4go/spi/default/DefaultCodec_test.go            |  38 ++++----
 plc4go/spi/default/defaultExpectation.go           |  40 ++++----
 plc4go/spi/default/mocks_test.go                   | 108 ++++++++++-----------
 plc4go/spi/mocks_test.go                           |  46 ++++-----
 plc4go/spi/transactions/RequestTransaction.go      |  14 +--
 .../spi/transactions/RequestTransactionManager.go  |   6 +-
 .../transactions/RequestTransactionManager_test.go |   2 +-
 plc4go/spi/transactions/mocks_test.go              |   2 +-
 .../transactions/requestTransaction_plc4xgen.go    |   4 +
 29 files changed, 196 insertions(+), 190 deletions(-)

diff --git a/plc4go/internal/ads/DiscoveryMessageCodec.go 
b/plc4go/internal/ads/DiscoveryMessageCodec.go
index 1688760948..5315de9473 100644
--- a/plc4go/internal/ads/DiscoveryMessageCodec.go
+++ b/plc4go/internal/ads/DiscoveryMessageCodec.go
@@ -54,8 +54,8 @@ func (m *DiscoveryMessageCodec) GetCodec() spi.MessageCodec {
        return m
 }
 
-func (m *DiscoveryMessageCodec) Send(ctx context.Context, interactionId 
string, message spi.Message) error {
-       m.log.Trace().Str("interactionId", interactionId).Msg("Sending message")
+func (m *DiscoveryMessageCodec) Send(ctx context.Context, interactionInfo 
string, message spi.Message) error {
+       m.log.Trace().Str("interactionInfo", interactionInfo).Msg("Sending 
message")
        // Cast the message to the correct type of struct
        tcpPaket := message.(model.AdsDiscovery)
        // Serialize the request
diff --git a/plc4go/internal/ads/MessageCodec.go 
b/plc4go/internal/ads/MessageCodec.go
index b263adb443..14fe68c2e7 100644
--- a/plc4go/internal/ads/MessageCodec.go
+++ b/plc4go/internal/ads/MessageCodec.go
@@ -67,8 +67,8 @@ func (m *MessageCodec) GetCodec() spi.MessageCodec {
        return m
 }
 
-func (m *MessageCodec) Send(ctx context.Context, interactionId string, message 
spi.Message) error {
-       m.log.Trace().Str("interactionId", interactionId).Msg("Sending message")
+func (m *MessageCodec) Send(ctx context.Context, interactionInfo string, 
message spi.Message) error {
+       m.log.Trace().Str("interactionInfo", interactionInfo).Msg("Sending 
message")
        // Cast the message to the correct type of struct
        tcpPaket := message.(model.AmsTCPPacket)
        // Serialize the request
diff --git a/plc4go/internal/bacnetip/ApplicationLayerMessageCodec.go 
b/plc4go/internal/bacnetip/ApplicationLayerMessageCodec.go
index 77491c3e53..2685e3a202 100644
--- a/plc4go/internal/bacnetip/ApplicationLayerMessageCodec.go
+++ b/plc4go/internal/bacnetip/ApplicationLayerMessageCodec.go
@@ -112,7 +112,7 @@ func (m *ApplicationLayerMessageCodec) IsRunning() bool {
        return m.messageCode.IsRunning()
 }
 
-func (m *ApplicationLayerMessageCodec) Send(ctx context.Context, interactionId 
string, message spi.Message) error {
+func (m *ApplicationLayerMessageCodec) Send(ctx context.Context, 
interactionInfo string, message spi.Message) error {
        address, err := pdu.NewAddress(comp.NewArgs(m.remoteAddress))
        if err != nil {
                return err
@@ -141,12 +141,12 @@ func (m *ApplicationLayerMessageCodec) Send(ctx 
context.Context, interactionId s
        return nil
 }
 
-func (m *ApplicationLayerMessageCodec) Expect(ctx context.Context, 
interactionId string, acceptsMessage spi.AcceptsMessage, handleMessage 
spi.HandleMessage, handleError spi.HandleError) {
+func (m *ApplicationLayerMessageCodec) Expect(ctx context.Context, 
interactionInfo string, acceptsMessage spi.AcceptsMessage, handleMessage 
spi.HandleMessage, handleError spi.HandleError) {
        // TODO: implement me
        panic("not yet implemented")
 }
 
-func (m *ApplicationLayerMessageCodec) SendRequest(ctx context.Context, 
interactionId string, message spi.Message, acceptsMessage spi.AcceptsMessage, 
handleMessage spi.HandleMessage, handleError spi.HandleError) error {
+func (m *ApplicationLayerMessageCodec) SendRequest(ctx context.Context, 
interactionInfo string, message spi.Message, acceptsMessage spi.AcceptsMessage, 
handleMessage spi.HandleMessage, handleError spi.HandleError) error {
        address, err := pdu.NewAddress(comp.NewArgs(m.remoteAddress))
        if err != nil {
                return err
diff --git a/plc4go/internal/bacnetip/MessageCodec.go 
b/plc4go/internal/bacnetip/MessageCodec.go
index f94e3f2bff..09faf9c1af 100644
--- a/plc4go/internal/bacnetip/MessageCodec.go
+++ b/plc4go/internal/bacnetip/MessageCodec.go
@@ -50,8 +50,8 @@ func (m *MessageCodec) GetCodec() spi.MessageCodec {
        return m
 }
 
-func (m *MessageCodec) Send(ctx context.Context, interactionId string, message 
spi.Message) error {
-       m.log.Trace().Str("interactionId", interactionId).Msg("Sending message")
+func (m *MessageCodec) Send(ctx context.Context, interactionInfo string, 
message spi.Message) error {
+       m.log.Trace().Str("interactionInfo", interactionInfo).Msg("Sending 
message")
        // Cast the message to the correct type of struct
        bvlcPacket := message.(model.BVLC)
        // Serialize the request
diff --git a/plc4go/internal/bacnetip/Reader.go 
b/plc4go/internal/bacnetip/Reader.go
index dc55115712..2ae7e3c650 100644
--- a/plc4go/internal/bacnetip/Reader.go
+++ b/plc4go/internal/bacnetip/Reader.go
@@ -134,7 +134,7 @@ func (m *Reader) Read(ctx context.Context, readRequest 
apiModel.PlcReadRequest)
                )
 
                // Start a new request-transaction (Is ended in the 
response-handler)
-               transaction := m.tm.StartTransaction()
+               transaction := m.tm.StartTransaction("read")
                transaction.Submit(func(transactionContext context.Context, 
transaction transactions.RequestTransaction) {
                        ctx, cancel := context.WithCancel(ctx)
                        context.AfterFunc(transactionContext, cancel)
diff --git a/plc4go/internal/cbus/CBusMessageMapper_test.go 
b/plc4go/internal/cbus/CBusMessageMapper_test.go
index f542c78d73..da609e5870 100644
--- a/plc4go/internal/cbus/CBusMessageMapper_test.go
+++ b/plc4go/internal/cbus/CBusMessageMapper_test.go
@@ -1423,7 +1423,7 @@ func TestMapEncodedReply(t *testing.T) {
                                t.Cleanup(func() {
                                        assert.NoError(t, 
transactionManager.Close())
                                })
-                               transaction := 
transactionManager.StartTransaction()
+                               transaction := 
transactionManager.StartTransaction(t.Name())
                                t.Logf("Submitting No-Op to transaction\n%v", 
transaction)
                                transaction.Submit(func(context.Context, 
transactions.RequestTransaction) {
                                        // NO-OP
@@ -1500,7 +1500,7 @@ func TestMapEncodedReply(t *testing.T) {
                                t.Cleanup(func() {
                                        assert.NoError(t, 
transactionManager.Close())
                                })
-                               transaction := 
transactionManager.StartTransaction()
+                               transaction := 
transactionManager.StartTransaction(t.Name())
                                t.Logf("Submitting No-Op to transaction %v", 
transaction)
                                transaction.Submit(func(context.Context, 
transactions.RequestTransaction) {
                                        // NO-OP
@@ -1594,7 +1594,7 @@ func TestMapEncodedReply(t *testing.T) {
                                t.Cleanup(func() {
                                        assert.NoError(t, 
transactionManager.Close())
                                })
-                               transaction := 
transactionManager.StartTransaction()
+                               transaction := 
transactionManager.StartTransaction(t.Name())
                                transaction.Submit(func(context.Context, 
transactions.RequestTransaction) {
                                        // NO-OP
                                })
@@ -1677,7 +1677,7 @@ func TestMapEncodedReply(t *testing.T) {
                                t.Cleanup(func() {
                                        assert.NoError(t, 
transactionManager.Close())
                                })
-                               transaction := 
transactionManager.StartTransaction()
+                               transaction := 
transactionManager.StartTransaction(t.Name())
                                transaction.Submit(func(context.Context, 
transactions.RequestTransaction) {
                                        // NO-OP
                                })
@@ -1743,7 +1743,7 @@ func TestMapEncodedReply(t *testing.T) {
                                t.Cleanup(func() {
                                        assert.NoError(t, 
transactionManager.Close())
                                })
-                               transaction := 
transactionManager.StartTransaction()
+                               transaction := 
transactionManager.StartTransaction(t.Name())
                                transaction.Submit(func(context.Context, 
transactions.RequestTransaction) {
                                        // NO-OP
                                })
@@ -1812,7 +1812,7 @@ func TestMapEncodedReply(t *testing.T) {
                                t.Cleanup(func() {
                                        assert.NoError(t, 
transactionManager.Close())
                                })
-                               transaction := 
transactionManager.StartTransaction()
+                               transaction := 
transactionManager.StartTransaction(t.Name())
                                transaction.Submit(func(context.Context, 
transactions.RequestTransaction) {
                                        // NO-OP
                                })
@@ -1900,7 +1900,7 @@ func TestMapEncodedReply(t *testing.T) {
                                t.Cleanup(func() {
                                        assert.NoError(t, 
transactionManager.Close())
                                })
-                               transaction := 
transactionManager.StartTransaction()
+                               transaction := 
transactionManager.StartTransaction(t.Name())
                                transaction.Submit(func(context.Context, 
transactions.RequestTransaction) {
                                        // NO-OP
                                })
@@ -2006,7 +2006,7 @@ func TestMapEncodedReply(t *testing.T) {
                                t.Cleanup(func() {
                                        assert.NoError(t, 
transactionManager.Close())
                                })
-                               transaction := 
transactionManager.StartTransaction()
+                               transaction := 
transactionManager.StartTransaction(t.Name())
                                transaction.Submit(func(context.Context, 
transactions.RequestTransaction) {
                                        // NO-OP
                                })
@@ -2076,7 +2076,7 @@ func TestMapEncodedReply(t *testing.T) {
                                t.Cleanup(func() {
                                        assert.NoError(t, 
transactionManager.Close())
                                })
-                               transaction := 
transactionManager.StartTransaction()
+                               transaction := 
transactionManager.StartTransaction(t.Name())
                                transaction.Submit(func(context.Context, 
transactions.RequestTransaction) {
                                        // NO-OP
                                })
@@ -2142,7 +2142,7 @@ func TestMapEncodedReply(t *testing.T) {
                                t.Cleanup(func() {
                                        assert.NoError(t, 
transactionManager.Close())
                                })
-                               transaction := 
transactionManager.StartTransaction()
+                               transaction := 
transactionManager.StartTransaction(t.Name())
                                transaction.Submit(func(context.Context, 
transactions.RequestTransaction) {
                                        // NO-OP
                                })
@@ -2208,7 +2208,7 @@ func TestMapEncodedReply(t *testing.T) {
                                t.Cleanup(func() {
                                        assert.NoError(t, 
transactionManager.Close())
                                })
-                               transaction := 
transactionManager.StartTransaction()
+                               transaction := 
transactionManager.StartTransaction(t.Name())
                                transaction.Submit(func(context.Context, 
transactions.RequestTransaction) {
                                        // NO-OP
                                })
@@ -2274,7 +2274,7 @@ func TestMapEncodedReply(t *testing.T) {
                                t.Cleanup(func() {
                                        assert.NoError(t, 
transactionManager.Close())
                                })
-                               transaction := 
transactionManager.StartTransaction()
+                               transaction := 
transactionManager.StartTransaction(t.Name())
                                transaction.Submit(func(context.Context, 
transactions.RequestTransaction) {
                                        // NO-OP
                                })
@@ -2340,7 +2340,7 @@ func TestMapEncodedReply(t *testing.T) {
                                t.Cleanup(func() {
                                        assert.NoError(t, 
transactionManager.Close())
                                })
-                               transaction := 
transactionManager.StartTransaction()
+                               transaction := 
transactionManager.StartTransaction(t.Name())
                                transaction.Submit(func(context.Context, 
transactions.RequestTransaction) {
                                        // NO-OP
                                })
@@ -2426,7 +2426,7 @@ func TestMapEncodedReply(t *testing.T) {
                                t.Cleanup(func() {
                                        assert.NoError(t, 
transactionManager.Close())
                                })
-                               transaction := 
transactionManager.StartTransaction()
+                               transaction := 
transactionManager.StartTransaction(t.Name())
                                transaction.Submit(func(context.Context, 
transactions.RequestTransaction) {
                                        // NO-OP
                                })
@@ -2492,7 +2492,7 @@ func TestMapEncodedReply(t *testing.T) {
                                t.Cleanup(func() {
                                        assert.NoError(t, 
transactionManager.Close())
                                })
-                               transaction := 
transactionManager.StartTransaction()
+                               transaction := 
transactionManager.StartTransaction(t.Name())
                                transaction.Submit(func(context.Context, 
transactions.RequestTransaction) {
                                        // NO-OP
                                })
@@ -2558,7 +2558,7 @@ func TestMapEncodedReply(t *testing.T) {
                                t.Cleanup(func() {
                                        assert.NoError(t, 
transactionManager.Close())
                                })
-                               transaction := 
transactionManager.StartTransaction()
+                               transaction := 
transactionManager.StartTransaction(t.Name())
                                transaction.Submit(func(context.Context, 
transactions.RequestTransaction) {
                                        // NO-OP
                                })
@@ -2624,7 +2624,7 @@ func TestMapEncodedReply(t *testing.T) {
                                t.Cleanup(func() {
                                        assert.NoError(t, 
transactionManager.Close())
                                })
-                               transaction := 
transactionManager.StartTransaction()
+                               transaction := 
transactionManager.StartTransaction(t.Name())
                                transaction.Submit(func(context.Context, 
transactions.RequestTransaction) {
                                        // NO-OP
                                })
@@ -2690,7 +2690,7 @@ func TestMapEncodedReply(t *testing.T) {
                                t.Cleanup(func() {
                                        assert.NoError(t, 
transactionManager.Close())
                                })
-                               transaction := 
transactionManager.StartTransaction()
+                               transaction := 
transactionManager.StartTransaction(t.Name())
                                transaction.Submit(func(context.Context, 
transactions.RequestTransaction) {
                                        // NO-OP
                                })
@@ -2756,7 +2756,7 @@ func TestMapEncodedReply(t *testing.T) {
                                t.Cleanup(func() {
                                        assert.NoError(t, 
transactionManager.Close())
                                })
-                               transaction := 
transactionManager.StartTransaction()
+                               transaction := 
transactionManager.StartTransaction(t.Name())
                                transaction.Submit(func(context.Context, 
transactions.RequestTransaction) {
                                        // NO-OP
                                })
@@ -2838,7 +2838,7 @@ func TestMapEncodedReply(t *testing.T) {
                                t.Cleanup(func() {
                                        assert.NoError(t, 
transactionManager.Close())
                                })
-                               transaction := 
transactionManager.StartTransaction()
+                               transaction := 
transactionManager.StartTransaction(t.Name())
                                transaction.Submit(func(context.Context, 
transactions.RequestTransaction) {
                                        // NO-OP
                                })
@@ -2904,7 +2904,7 @@ func TestMapEncodedReply(t *testing.T) {
                                t.Cleanup(func() {
                                        assert.NoError(t, 
transactionManager.Close())
                                })
-                               transaction := 
transactionManager.StartTransaction()
+                               transaction := 
transactionManager.StartTransaction(t.Name())
                                transaction.Submit(func(context.Context, 
transactions.RequestTransaction) {
                                        // NO-OP
                                })
@@ -2970,7 +2970,7 @@ func TestMapEncodedReply(t *testing.T) {
                                t.Cleanup(func() {
                                        assert.NoError(t, 
transactionManager.Close())
                                })
-                               transaction := 
transactionManager.StartTransaction()
+                               transaction := 
transactionManager.StartTransaction(t.Name())
                                transaction.Submit(func(context.Context, 
transactions.RequestTransaction) {
                                        // NO-OP
                                })
diff --git a/plc4go/internal/cbus/MessageCodec.go 
b/plc4go/internal/cbus/MessageCodec.go
index 10b65ea2c8..68210bd707 100644
--- a/plc4go/internal/cbus/MessageCodec.go
+++ b/plc4go/internal/cbus/MessageCodec.go
@@ -98,8 +98,8 @@ func (m *MessageCodec) Disconnect() error {
        return err
 }
 
-func (m *MessageCodec) Send(ctx context.Context, interactionId string, message 
spi.Message) error {
-       m.log.Trace().Str("interactionId", interactionId).Interface("message", 
message).Msg("Sending message")
+func (m *MessageCodec) Send(ctx context.Context, interactionInfo string, 
message spi.Message) error {
+       m.log.Trace().Str("interactionInfo", 
interactionInfo).Interface("message", message).Msg("Sending message")
        // Cast the message to the correct type of struct
        cbusMessage, ok := message.(readWriteModel.CBusMessage)
        if !ok {
diff --git a/plc4go/internal/cbus/MessageCodec_test.go 
b/plc4go/internal/cbus/MessageCodec_test.go
index 100c058932..70797cc52a 100644
--- a/plc4go/internal/cbus/MessageCodec_test.go
+++ b/plc4go/internal/cbus/MessageCodec_test.go
@@ -48,9 +48,9 @@ func TestMessageCodec_Send(t *testing.T) {
                monitoredSALs  chan readWriteModel.MonitoredSAL
        }
        type args struct {
-               ctx           context.Context
-               interactionId string
-               message       spi.Message
+               ctx             context.Context
+               interactionInfo string
+               message         spi.Message
        }
        tests := []struct {
                name    string
diff --git a/plc4go/internal/cbus/Reader.go b/plc4go/internal/cbus/Reader.go
index 0639e33462..442ad46edb 100644
--- a/plc4go/internal/cbus/Reader.go
+++ b/plc4go/internal/cbus/Reader.go
@@ -126,7 +126,7 @@ func (m *Reader) readSync(ctx context.Context, readRequest 
apiModel.PlcReadReque
 
 func (m *Reader) createMessageTransactionAndWait(ctx context.Context, 
messageToSend readWriteModel.CBusMessage, addResponseCode func(name string, 
responseCode apiModel.PlcResponseCode), tagName string, addPlcValue func(name 
string, plcValue apiValues.PlcValue)) {
        // Start a new request-transaction (Is ended in the response-handler)
-       transaction := m.tm.StartTransaction()
+       transaction := m.tm.StartTransaction("read")
        transaction.Submit(func(transactionContext context.Context, transaction 
transactions.RequestTransaction) {
                ctx, cancel := context.WithCancel(ctx)
                context.AfterFunc(transactionContext, cancel)
diff --git a/plc4go/internal/cbus/Writer.go b/plc4go/internal/cbus/Writer.go
index fa8b225fb8..3e595fa349 100644
--- a/plc4go/internal/cbus/Writer.go
+++ b/plc4go/internal/cbus/Writer.go
@@ -112,7 +112,7 @@ func (m *Writer) Write(ctx context.Context, writeRequest 
apiModel.PlcWriteReques
                        }
                        tagNameCopy := tagName
                        // Start a new request-transaction (Is ended in the 
response-handler)
-                       transaction := m.tm.StartTransaction()
+                       transaction := m.tm.StartTransaction("write")
                        transaction.Submit(func(transactionContext 
context.Context, transaction transactions.RequestTransaction) {
                                ctx, cancel := context.WithCancel(ctx)
                                context.AfterFunc(transactionContext, cancel)
diff --git a/plc4go/internal/eip/MessageCodec.go 
b/plc4go/internal/eip/MessageCodec.go
index 0ca7459d79..68cfaec457 100644
--- a/plc4go/internal/eip/MessageCodec.go
+++ b/plc4go/internal/eip/MessageCodec.go
@@ -55,8 +55,8 @@ func (m *MessageCodec) GetCodec() spi.MessageCodec {
        return m
 }
 
-func (m *MessageCodec) Send(ctx context.Context, interactionId string, message 
spi.Message) error {
-       m.log.Trace().Str("interactionId", interactionId).Msg("Sending message")
+func (m *MessageCodec) Send(ctx context.Context, interactionInfo string, 
message spi.Message) error {
+       m.log.Trace().Str("interactionInfo", interactionInfo).Msg("Sending 
message")
        // Cast the message to the correct type of struct
        eipPacket := message.(model.EipPacket)
        // Serialize the request
diff --git a/plc4go/internal/eip/Reader.go b/plc4go/internal/eip/Reader.go
index 70f0628e0e..37703f8e9a 100644
--- a/plc4go/internal/eip/Reader.go
+++ b/plc4go/internal/eip/Reader.go
@@ -106,7 +106,7 @@ func (m *Reader) Read(ctx context.Context, readRequest 
apiModel.PlcReadRequest)
                                0,
                                typeIds,
                        )
-                       transaction := m.tm.StartTransaction()
+                       transaction := m.tm.StartTransaction("read")
                        transaction.Submit(func(transactionContext 
context.Context, transaction transactions.RequestTransaction) {
                                ctx, cancel := context.WithCancel(ctx)
                                context.AfterFunc(transactionContext, cancel)
diff --git a/plc4go/internal/knxnetip/MessageCodec.go 
b/plc4go/internal/knxnetip/MessageCodec.go
index c7778606ac..f5aa902781 100644
--- a/plc4go/internal/knxnetip/MessageCodec.go
+++ b/plc4go/internal/knxnetip/MessageCodec.go
@@ -62,8 +62,8 @@ func (m *MessageCodec) GetCodec() spi.MessageCodec {
        return m
 }
 
-func (m *MessageCodec) Send(ctx context.Context, interactionId string, message 
spi.Message) error {
-       m.log.Trace().Str("interactionId", interactionId).Msg("Sending message")
+func (m *MessageCodec) Send(ctx context.Context, interactionInfo string, 
message spi.Message) error {
+       m.log.Trace().Str("interactionInfo", interactionInfo).Msg("Sending 
message")
        // Cast the message to the correct type of struct
        knxMessage := message.(model.KnxNetIpMessage)
        // Serialize the request
diff --git a/plc4go/internal/modbus/MessageCodec.go 
b/plc4go/internal/modbus/MessageCodec.go
index 8ccdebb235..90c82cbe73 100644
--- a/plc4go/internal/modbus/MessageCodec.go
+++ b/plc4go/internal/modbus/MessageCodec.go
@@ -58,8 +58,8 @@ func (m *MessageCodec) GetCodec() spi.MessageCodec {
        return m
 }
 
-func (m *MessageCodec) Send(ctx context.Context, interactionId string, message 
spi.Message) error {
-       m.log.Trace().Str("interactionId", interactionId).Msg("Sending message")
+func (m *MessageCodec) Send(ctx context.Context, interactionInfo string, 
message spi.Message) error {
+       m.log.Trace().Str("interactionInfo", interactionInfo).Msg("Sending 
message")
        // Cast the message to the correct type of struct
        tcpAdu := message.(model.ModbusTcpADU)
        // Serialize the request
diff --git a/plc4go/internal/opcua/MessageCodec.go 
b/plc4go/internal/opcua/MessageCodec.go
index 596014abd5..a2f307a526 100644
--- a/plc4go/internal/opcua/MessageCodec.go
+++ b/plc4go/internal/opcua/MessageCodec.go
@@ -60,8 +60,8 @@ func (m *MessageCodec) GetCodec() spi.MessageCodec {
        return m
 }
 
-func (m *MessageCodec) Send(ctx context.Context, interactionId string, message 
spi.Message) error {
-       m.log.Trace().Str("interactionId", interactionId).Interface("message", 
message).Msg("Sending message")
+func (m *MessageCodec) Send(ctx context.Context, interactionInfo string, 
message spi.Message) error {
+       m.log.Trace().Str("interactionInfo", 
interactionInfo).Interface("message", message).Msg("Sending message")
        // Cast the message to the correct type of struct
        opcuaApu, ok := message.(readWriteModel.OpcuaAPU)
        if !ok {
diff --git a/plc4go/internal/s7/MessageCodec.go 
b/plc4go/internal/s7/MessageCodec.go
index 67a5b28974..924cf45908 100644
--- a/plc4go/internal/s7/MessageCodec.go
+++ b/plc4go/internal/s7/MessageCodec.go
@@ -55,8 +55,8 @@ func (m *MessageCodec) GetCodec() spi.MessageCodec {
        return m
 }
 
-func (m *MessageCodec) Send(ctx context.Context, interactionId string, message 
spi.Message) error {
-       m.log.Trace().Str("interactionId", interactionId).Msg("Sending message")
+func (m *MessageCodec) Send(ctx context.Context, interactionInfo string, 
message spi.Message) error {
+       m.log.Trace().Str("interactionInfo", interactionInfo).Msg("Sending 
message")
        // Cast the message to the correct type of struct
        tpktPacket := message.(model.TPKTPacket)
        // Serialize the request
diff --git a/plc4go/internal/s7/Reader.go b/plc4go/internal/s7/Reader.go
index f9f3943e77..04a6a22cef 100644
--- a/plc4go/internal/s7/Reader.go
+++ b/plc4go/internal/s7/Reader.go
@@ -113,7 +113,7 @@ func (m *Reader) Read(ctx context.Context, readRequest 
apiModel.PlcReadRequest)
                        ),
                )
                // Start a new request-transaction (Is ended in the 
response-handler)
-               transaction := m.tm.StartTransaction()
+               transaction := m.tm.StartTransaction("read")
                transaction.Submit(func(transactionContext context.Context, 
transaction transactions.RequestTransaction) {
                        ctx, cancel := context.WithCancel(ctx)
                        context.AfterFunc(transactionContext, cancel)
diff --git a/plc4go/internal/s7/Writer.go b/plc4go/internal/s7/Writer.go
index be58225801..13796ec2d9 100644
--- a/plc4go/internal/s7/Writer.go
+++ b/plc4go/internal/s7/Writer.go
@@ -106,7 +106,7 @@ func (m *Writer) Write(ctx context.Context, writeRequest 
apiModel.PlcWriteReques
                )
 
                // Start a new request-transaction (Is ended in the 
response-handler)
-               transaction := m.tm.StartTransaction()
+               transaction := m.tm.StartTransaction("write")
                transaction.Submit(func(transactionContext context.Context, 
transaction transactions.RequestTransaction) {
                        ctx, cancel := context.WithCancel(ctx)
                        context.AfterFunc(transactionContext, cancel)
diff --git a/plc4go/spi/MessageCodec.go b/plc4go/spi/MessageCodec.go
index fcc0eadb7e..dc59382ff4 100644
--- a/plc4go/spi/MessageCodec.go
+++ b/plc4go/spi/MessageCodec.go
@@ -55,12 +55,12 @@ type MessageCodec interface {
        IsRunning() bool
 
        // Send is sending a given message
-       Send(ctx context.Context, interactionId string, message Message) error
+       Send(ctx context.Context, interactionInfo string, message Message) error
        // Expect Wait for a given timespan (defined by ctx or defaulting to 
default receive timeout) for a message to come
        // in, which returns 'true' for 'acceptMessage' and is then forwarded 
to the 'handleMessage' function
-       Expect(ctx context.Context, interactionId string, acceptsMessage 
AcceptsMessage, handleMessage HandleMessage, handleError HandleError)
+       Expect(ctx context.Context, interactionInfo string, acceptsMessage 
AcceptsMessage, handleMessage HandleMessage, handleError HandleError)
        // SendRequest A combination that sends a message first and then waits 
for a response. !!!Important note: the callbacks are blocking calls
-       SendRequest(ctx context.Context, interactionId string, message Message, 
acceptsMessage AcceptsMessage, handleMessage HandleMessage, handleError 
HandleError) error
+       SendRequest(ctx context.Context, interactionInfo string, message 
Message, acceptsMessage AcceptsMessage, handleMessage HandleMessage, 
handleError HandleError) error
 
        // GetDefaultIncomingMessageChannel gives back the chan where 
unexpected messages arrive
        GetDefaultIncomingMessageChannel() chan Message
diff --git a/plc4go/spi/default/DefaultCodec.go 
b/plc4go/spi/default/DefaultCodec.go
index a80bf6a305..11f7d6c4aa 100644
--- a/plc4go/spi/default/DefaultCodec.go
+++ b/plc4go/spi/default/DefaultCodec.go
@@ -41,7 +41,7 @@ import (
 // DefaultCodecRequirements adds required methods to MessageCodec that are 
needed when using DefaultCodec
 type DefaultCodecRequirements interface {
        GetCodec() spi.MessageCodec
-       Send(ctx context.Context, interactionId string, message spi.Message) 
error
+       Send(ctx context.Context, interactionInfo string, message spi.Message) 
error
        Receive(ctx context.Context) (spi.Message, error)
 }
 
@@ -206,16 +206,16 @@ func (m *defaultCodec) IsRunning() bool {
        return m.running.Load()
 }
 
-func (m *defaultCodec) Expect(ctx context.Context, interactionId string, 
acceptsMessage spi.AcceptsMessage, handleMessage spi.HandleMessage, handleError 
spi.HandleError) {
+func (m *defaultCodec) Expect(ctx context.Context, interactionInfo string, 
acceptsMessage spi.AcceptsMessage, handleMessage spi.HandleMessage, handleError 
spi.HandleError) {
        m.expectationsChangeMutex.Lock()
        defer m.expectationsChangeMutex.Unlock()
        ttl := m.receiveTimeout
        if deadline, ok := ctx.Deadline(); ok {
                ttl = time.Until(deadline)
        }
-       expectation := newDefaultExpectation(ctx, interactionId, ttl, 
acceptsMessage, handleMessage, handleError)
+       expectation := newDefaultExpectation(ctx, interactionInfo, ttl, 
acceptsMessage, handleMessage, handleError)
        m.expectations = append(m.expectations, expectation)
-       m.log.Debug().Str("interactionId", 
interactionId).Stringer("expectation", expectation).Msg("Added expectation")
+       m.log.Debug().Str("interactionInfo", 
interactionInfo).Stringer("expectation", expectation).Msg("Added expectation")
        select {
        case m.notifyExpireWorker <- struct{}{}:
        default:
@@ -226,13 +226,13 @@ func (m *defaultCodec) Expect(ctx context.Context, 
interactionId string, accepts
        }
 }
 
-func (m *defaultCodec) SendRequest(ctx context.Context, interactionId string, 
message spi.Message, acceptsMessage spi.AcceptsMessage, handleMessage 
spi.HandleMessage, handleError spi.HandleError) error {
+func (m *defaultCodec) SendRequest(ctx context.Context, interactionInfo 
string, message spi.Message, acceptsMessage spi.AcceptsMessage, handleMessage 
spi.HandleMessage, handleError spi.HandleError) error {
        if err := ctx.Err(); err != nil {
                return errors.Wrap(err, "Not sending message as context is 
aborted")
        }
-       m.Expect(ctx, interactionId, acceptsMessage, handleMessage, 
handleError) // We register the expectation first to avoid getting a response 
between sending and adding the expect
-       m.log.Trace().Str("interactionId", interactionId).Msg("Sending request")
-       return m.Send(ctx, interactionId, message)
+       m.Expect(ctx, interactionInfo, acceptsMessage, handleMessage, 
handleError) // We register the expectation first to avoid getting a response 
between sending and adding the expect
+       m.log.Trace().Str("interactionInfo", interactionInfo).Msg("Sending 
request")
+       return m.Send(ctx, interactionInfo, message)
 }
 
 func (m *defaultCodec) TimeoutExpectations(now time.Time) time.Duration {
diff --git a/plc4go/spi/default/DefaultCodec_test.go 
b/plc4go/spi/default/DefaultCodec_test.go
index 2918ba97c5..d55ea4a578 100644
--- a/plc4go/spi/default/DefaultCodec_test.go
+++ b/plc4go/spi/default/DefaultCodec_test.go
@@ -497,12 +497,12 @@ func Test_defaultCodec_Expect(t *testing.T) {
                customMessageHandling         CustomMessageHandler
        }
        type args struct {
-               ctx            context.Context
-               interactionId  string
-               acceptsMessage spi.AcceptsMessage
-               handleMessage  spi.HandleMessage
-               handleError    spi.HandleError
-               ttl            time.Duration
+               ctx             context.Context
+               interactionInfo string
+               acceptsMessage  spi.AcceptsMessage
+               handleMessage   spi.HandleMessage
+               handleError     spi.HandleError
+               ttl             time.Duration
        }
        tests := []struct {
                name   string
@@ -514,7 +514,7 @@ func Test_defaultCodec_Expect(t *testing.T) {
                        name: "expect it",
                        setup: func(t *testing.T, fields *fields, args *args) {
                                args.ctx = testutils.TestContext(t)
-                               args.interactionId = t.Name()
+                               args.interactionInfo = t.Name()
                                var cancelFunc context.CancelFunc
                                args.ctx, cancelFunc = 
context.WithTimeout(args.ctx, 20*time.Second)
                                t.Cleanup(cancelFunc)
@@ -536,7 +536,7 @@ func Test_defaultCodec_Expect(t *testing.T) {
                                customMessageHandling:         
tt.fields.customMessageHandling,
                                log:                           
testutils.ProduceTestingLogger(t),
                        }
-                       m.Expect(tt.args.ctx, tt.args.interactionId, 
tt.args.acceptsMessage, tt.args.handleMessage, tt.args.handleError)
+                       m.Expect(tt.args.ctx, tt.args.interactionInfo, 
tt.args.acceptsMessage, tt.args.handleMessage, tt.args.handleError)
                })
        }
 }
@@ -917,13 +917,13 @@ func Test_defaultCodec_SendRequest(t *testing.T) {
                customMessageHandling         CustomMessageHandler
        }
        type args struct {
-               ctx            context.Context
-               interactionId  string
-               message        spi.Message
-               acceptsMessage spi.AcceptsMessage
-               handleMessage  spi.HandleMessage
-               handleError    spi.HandleError
-               ttl            time.Duration
+               ctx             context.Context
+               interactionInfo string
+               message         spi.Message
+               acceptsMessage  spi.AcceptsMessage
+               handleMessage   spi.HandleMessage
+               handleError     spi.HandleError
+               ttl             time.Duration
        }
        tests := []struct {
                name    string
@@ -940,7 +940,7 @@ func Test_defaultCodec_SendRequest(t *testing.T) {
                                fields.DefaultCodecRequirements = requirements
 
                                args.ctx = testutils.TestContext(t)
-                               args.interactionId = t.Name()
+                               args.interactionInfo = t.Name()
                                var cancelFunc context.CancelFunc
                                args.ctx, cancelFunc = 
context.WithTimeout(args.ctx, 20*time.Second)
                                t.Cleanup(cancelFunc)
@@ -955,7 +955,7 @@ func Test_defaultCodec_SendRequest(t *testing.T) {
                                ctx, cancelFunc := 
context.WithCancel(testutils.TestContext(t))
                                cancelFunc()
                                args.ctx = ctx
-                               args.interactionId = t.Name()
+                               args.interactionInfo = t.Name()
                        },
                        wantErr: assert.Error,
                },
@@ -967,7 +967,7 @@ func Test_defaultCodec_SendRequest(t *testing.T) {
                                fields.DefaultCodecRequirements = requirements
 
                                args.ctx = testutils.TestContext(t)
-                               args.interactionId = t.Name()
+                               args.interactionInfo = t.Name()
                                var cancelFunc context.CancelFunc
                                args.ctx, cancelFunc = 
context.WithTimeout(args.ctx, 20*time.Second)
                                t.Cleanup(cancelFunc)
@@ -990,7 +990,7 @@ func Test_defaultCodec_SendRequest(t *testing.T) {
                                customMessageHandling:         
tt.fields.customMessageHandling,
                                log:                           
testutils.ProduceTestingLogger(t),
                        }
-                       tt.wantErr(t, m.SendRequest(tt.args.ctx, 
tt.args.interactionId, tt.args.message, tt.args.acceptsMessage, 
tt.args.handleMessage, tt.args.handleError), fmt.Sprintf("SendRequest(%v, %v, 
func(), func(), func(), %v)", tt.args.ctx, tt.args.message, tt.args.ttl))
+                       tt.wantErr(t, m.SendRequest(tt.args.ctx, 
tt.args.interactionInfo, tt.args.message, tt.args.acceptsMessage, 
tt.args.handleMessage, tt.args.handleError), fmt.Sprintf("SendRequest(%v, %v, 
func(), func(), func(), %v)", tt.args.ctx, tt.args.message, tt.args.ttl))
                })
        }
 }
diff --git a/plc4go/spi/default/defaultExpectation.go 
b/plc4go/spi/default/defaultExpectation.go
index 627c9589dd..fa1e0a3bd3 100644
--- a/plc4go/spi/default/defaultExpectation.go
+++ b/plc4go/spi/default/defaultExpectation.go
@@ -30,29 +30,29 @@ import (
 )
 
 type defaultExpectation struct {
-       Uuid           uuid.UUID
-       InteractionId  string
-       Ctx            context.Context
-       CancelFunc     context.CancelCauseFunc
-       CreationTime   time.Time
-       Expiration     time.Time
-       AcceptsMessage spi.AcceptsMessage
-       HandleMessage  spi.HandleMessage
-       HandleError    spi.HandleError
+       Uuid            uuid.UUID
+       interactionInfo string
+       Ctx             context.Context
+       CancelFunc      context.CancelCauseFunc
+       CreationTime    time.Time
+       Expiration      time.Time
+       AcceptsMessage  spi.AcceptsMessage
+       HandleMessage   spi.HandleMessage
+       HandleError     spi.HandleError
 }
 
-func newDefaultExpectation(ctx context.Context, interactionId string, ttl 
time.Duration, acceptsMessage spi.AcceptsMessage, handleMessage 
spi.HandleMessage, handleError spi.HandleError) *defaultExpectation {
+func newDefaultExpectation(ctx context.Context, interactionInfo string, ttl 
time.Duration, acceptsMessage spi.AcceptsMessage, handleMessage 
spi.HandleMessage, handleError spi.HandleError) *defaultExpectation {
        ctx, cancelFunc := context.WithCancelCause(ctx)
        return &defaultExpectation{
-               Uuid:           uuid.New(),
-               InteractionId:  interactionId,
-               Ctx:            ctx,
-               CancelFunc:     cancelFunc,
-               CreationTime:   time.Now(),
-               Expiration:     time.Now().Add(ttl),
-               AcceptsMessage: acceptsMessage,
-               HandleMessage:  handleMessage,
-               HandleError:    handleError,
+               Uuid:            uuid.New(),
+               interactionInfo: interactionInfo,
+               Ctx:             ctx,
+               CancelFunc:      cancelFunc,
+               CreationTime:    time.Now(),
+               Expiration:      time.Now().Add(ttl),
+               AcceptsMessage:  acceptsMessage,
+               HandleMessage:   handleMessage,
+               HandleError:     handleError,
        }
 }
 
@@ -85,5 +85,5 @@ func (d *defaultExpectation) GetHandleError() spi.HandleError 
{
 }
 
 func (d *defaultExpectation) String() string {
-       return fmt.Sprintf("Expectation '%s' %s (expires at %v in %s)", 
d.InteractionId, d.Uuid, d.Expiration, time.Until(d.Expiration))
+       return fmt.Sprintf("Expectation '%s' %s (expires at %v in %s)", 
d.interactionInfo, d.Uuid, d.Expiration, time.Until(d.Expiration))
 }
diff --git a/plc4go/spi/default/mocks_test.go b/plc4go/spi/default/mocks_test.go
index 51af0b4f34..96cbeece1b 100644
--- a/plc4go/spi/default/mocks_test.go
+++ b/plc4go/spi/default/mocks_test.go
@@ -431,8 +431,8 @@ func (_c *MockDefaultCodecRequirements_Receive_Call) 
RunAndReturn(run func(ctx c
 }
 
 // Send provides a mock function for the type MockDefaultCodecRequirements
-func (_mock *MockDefaultCodecRequirements) Send(ctx context.Context, 
interactionId string, message spi.Message) error {
-       ret := _mock.Called(ctx, interactionId, message)
+func (_mock *MockDefaultCodecRequirements) Send(ctx context.Context, 
interactionInfo string, message spi.Message) error {
+       ret := _mock.Called(ctx, interactionInfo, message)
 
        if len(ret) == 0 {
                panic("no return value specified for Send")
@@ -440,7 +440,7 @@ func (_mock *MockDefaultCodecRequirements) Send(ctx 
context.Context, interaction
 
        var r0 error
        if returnFunc, ok := ret.Get(0).(func(context.Context, string, 
spi.Message) error); ok {
-               r0 = returnFunc(ctx, interactionId, message)
+               r0 = returnFunc(ctx, interactionInfo, message)
        } else {
                r0 = ret.Error(0)
        }
@@ -454,13 +454,13 @@ type MockDefaultCodecRequirements_Send_Call struct {
 
 // Send is a helper method to define mock.On call
 //   - ctx context.Context
-//   - interactionId string
+//   - interactionInfo string
 //   - message spi.Message
-func (_e *MockDefaultCodecRequirements_Expecter) Send(ctx interface{}, 
interactionId interface{}, message interface{}) 
*MockDefaultCodecRequirements_Send_Call {
-       return &MockDefaultCodecRequirements_Send_Call{Call: _e.mock.On("Send", 
ctx, interactionId, message)}
+func (_e *MockDefaultCodecRequirements_Expecter) Send(ctx interface{}, 
interactionInfo interface{}, message interface{}) 
*MockDefaultCodecRequirements_Send_Call {
+       return &MockDefaultCodecRequirements_Send_Call{Call: _e.mock.On("Send", 
ctx, interactionInfo, message)}
 }
 
-func (_c *MockDefaultCodecRequirements_Send_Call) Run(run func(ctx 
context.Context, interactionId string, message spi.Message)) 
*MockDefaultCodecRequirements_Send_Call {
+func (_c *MockDefaultCodecRequirements_Send_Call) Run(run func(ctx 
context.Context, interactionInfo string, message spi.Message)) 
*MockDefaultCodecRequirements_Send_Call {
        _c.Call.Run(func(args mock.Arguments) {
                var arg0 context.Context
                if args[0] != nil {
@@ -488,7 +488,7 @@ func (_c *MockDefaultCodecRequirements_Send_Call) 
Return(err error) *MockDefault
        return _c
 }
 
-func (_c *MockDefaultCodecRequirements_Send_Call) RunAndReturn(run func(ctx 
context.Context, interactionId string, message spi.Message) error) 
*MockDefaultCodecRequirements_Send_Call {
+func (_c *MockDefaultCodecRequirements_Send_Call) RunAndReturn(run func(ctx 
context.Context, interactionInfo string, message spi.Message) error) 
*MockDefaultCodecRequirements_Send_Call {
        _c.Call.Return(run)
        return _c
 }
@@ -616,8 +616,8 @@ func (_c *MockDefaultCodec_Disconnect_Call) 
RunAndReturn(run func() error) *Mock
 }
 
 // Expect provides a mock function for the type MockDefaultCodec
-func (_mock *MockDefaultCodec) Expect(ctx context.Context, interactionId 
string, acceptsMessage spi.AcceptsMessage, handleMessage spi.HandleMessage, 
handleError spi.HandleError) {
-       _mock.Called(ctx, interactionId, acceptsMessage, handleMessage, 
handleError)
+func (_mock *MockDefaultCodec) Expect(ctx context.Context, interactionInfo 
string, acceptsMessage spi.AcceptsMessage, handleMessage spi.HandleMessage, 
handleError spi.HandleError) {
+       _mock.Called(ctx, interactionInfo, acceptsMessage, handleMessage, 
handleError)
        return
 }
 
@@ -628,15 +628,15 @@ type MockDefaultCodec_Expect_Call struct {
 
 // Expect is a helper method to define mock.On call
 //   - ctx context.Context
-//   - interactionId string
+//   - interactionInfo string
 //   - acceptsMessage spi.AcceptsMessage
 //   - handleMessage spi.HandleMessage
 //   - handleError spi.HandleError
-func (_e *MockDefaultCodec_Expecter) Expect(ctx interface{}, interactionId 
interface{}, acceptsMessage interface{}, handleMessage interface{}, handleError 
interface{}) *MockDefaultCodec_Expect_Call {
-       return &MockDefaultCodec_Expect_Call{Call: _e.mock.On("Expect", ctx, 
interactionId, acceptsMessage, handleMessage, handleError)}
+func (_e *MockDefaultCodec_Expecter) Expect(ctx interface{}, interactionInfo 
interface{}, acceptsMessage interface{}, handleMessage interface{}, handleError 
interface{}) *MockDefaultCodec_Expect_Call {
+       return &MockDefaultCodec_Expect_Call{Call: _e.mock.On("Expect", ctx, 
interactionInfo, acceptsMessage, handleMessage, handleError)}
 }
 
-func (_c *MockDefaultCodec_Expect_Call) Run(run func(ctx context.Context, 
interactionId string, acceptsMessage spi.AcceptsMessage, handleMessage 
spi.HandleMessage, handleError spi.HandleError)) *MockDefaultCodec_Expect_Call {
+func (_c *MockDefaultCodec_Expect_Call) Run(run func(ctx context.Context, 
interactionInfo string, acceptsMessage spi.AcceptsMessage, handleMessage 
spi.HandleMessage, handleError spi.HandleError)) *MockDefaultCodec_Expect_Call {
        _c.Call.Run(func(args mock.Arguments) {
                var arg0 context.Context
                if args[0] != nil {
@@ -674,7 +674,7 @@ func (_c *MockDefaultCodec_Expect_Call) Return() 
*MockDefaultCodec_Expect_Call {
        return _c
 }
 
-func (_c *MockDefaultCodec_Expect_Call) RunAndReturn(run func(ctx 
context.Context, interactionId string, acceptsMessage spi.AcceptsMessage, 
handleMessage spi.HandleMessage, handleError spi.HandleError)) 
*MockDefaultCodec_Expect_Call {
+func (_c *MockDefaultCodec_Expect_Call) RunAndReturn(run func(ctx 
context.Context, interactionInfo string, acceptsMessage spi.AcceptsMessage, 
handleMessage spi.HandleMessage, handleError spi.HandleError)) 
*MockDefaultCodec_Expect_Call {
        _c.Run(run)
        return _c
 }
@@ -816,8 +816,8 @@ func (_c *MockDefaultCodec_IsRunning_Call) RunAndReturn(run 
func() bool) *MockDe
 }
 
 // Send provides a mock function for the type MockDefaultCodec
-func (_mock *MockDefaultCodec) Send(ctx context.Context, interactionId string, 
message spi.Message) error {
-       ret := _mock.Called(ctx, interactionId, message)
+func (_mock *MockDefaultCodec) Send(ctx context.Context, interactionInfo 
string, message spi.Message) error {
+       ret := _mock.Called(ctx, interactionInfo, message)
 
        if len(ret) == 0 {
                panic("no return value specified for Send")
@@ -825,7 +825,7 @@ func (_mock *MockDefaultCodec) Send(ctx context.Context, 
interactionId string, m
 
        var r0 error
        if returnFunc, ok := ret.Get(0).(func(context.Context, string, 
spi.Message) error); ok {
-               r0 = returnFunc(ctx, interactionId, message)
+               r0 = returnFunc(ctx, interactionInfo, message)
        } else {
                r0 = ret.Error(0)
        }
@@ -839,13 +839,13 @@ type MockDefaultCodec_Send_Call struct {
 
 // Send is a helper method to define mock.On call
 //   - ctx context.Context
-//   - interactionId string
+//   - interactionInfo string
 //   - message spi.Message
-func (_e *MockDefaultCodec_Expecter) Send(ctx interface{}, interactionId 
interface{}, message interface{}) *MockDefaultCodec_Send_Call {
-       return &MockDefaultCodec_Send_Call{Call: _e.mock.On("Send", ctx, 
interactionId, message)}
+func (_e *MockDefaultCodec_Expecter) Send(ctx interface{}, interactionInfo 
interface{}, message interface{}) *MockDefaultCodec_Send_Call {
+       return &MockDefaultCodec_Send_Call{Call: _e.mock.On("Send", ctx, 
interactionInfo, message)}
 }
 
-func (_c *MockDefaultCodec_Send_Call) Run(run func(ctx context.Context, 
interactionId string, message spi.Message)) *MockDefaultCodec_Send_Call {
+func (_c *MockDefaultCodec_Send_Call) Run(run func(ctx context.Context, 
interactionInfo string, message spi.Message)) *MockDefaultCodec_Send_Call {
        _c.Call.Run(func(args mock.Arguments) {
                var arg0 context.Context
                if args[0] != nil {
@@ -873,14 +873,14 @@ func (_c *MockDefaultCodec_Send_Call) Return(err error) 
*MockDefaultCodec_Send_C
        return _c
 }
 
-func (_c *MockDefaultCodec_Send_Call) RunAndReturn(run func(ctx 
context.Context, interactionId string, message spi.Message) error) 
*MockDefaultCodec_Send_Call {
+func (_c *MockDefaultCodec_Send_Call) RunAndReturn(run func(ctx 
context.Context, interactionInfo string, message spi.Message) error) 
*MockDefaultCodec_Send_Call {
        _c.Call.Return(run)
        return _c
 }
 
 // SendRequest provides a mock function for the type MockDefaultCodec
-func (_mock *MockDefaultCodec) SendRequest(ctx context.Context, interactionId 
string, message spi.Message, acceptsMessage spi.AcceptsMessage, handleMessage 
spi.HandleMessage, handleError spi.HandleError) error {
-       ret := _mock.Called(ctx, interactionId, message, acceptsMessage, 
handleMessage, handleError)
+func (_mock *MockDefaultCodec) SendRequest(ctx context.Context, 
interactionInfo string, message spi.Message, acceptsMessage spi.AcceptsMessage, 
handleMessage spi.HandleMessage, handleError spi.HandleError) error {
+       ret := _mock.Called(ctx, interactionInfo, message, acceptsMessage, 
handleMessage, handleError)
 
        if len(ret) == 0 {
                panic("no return value specified for SendRequest")
@@ -888,7 +888,7 @@ func (_mock *MockDefaultCodec) SendRequest(ctx 
context.Context, interactionId st
 
        var r0 error
        if returnFunc, ok := ret.Get(0).(func(context.Context, string, 
spi.Message, spi.AcceptsMessage, spi.HandleMessage, spi.HandleError) error); ok 
{
-               r0 = returnFunc(ctx, interactionId, message, acceptsMessage, 
handleMessage, handleError)
+               r0 = returnFunc(ctx, interactionInfo, message, acceptsMessage, 
handleMessage, handleError)
        } else {
                r0 = ret.Error(0)
        }
@@ -902,16 +902,16 @@ type MockDefaultCodec_SendRequest_Call struct {
 
 // SendRequest is a helper method to define mock.On call
 //   - ctx context.Context
-//   - interactionId string
+//   - interactionInfo string
 //   - message spi.Message
 //   - acceptsMessage spi.AcceptsMessage
 //   - handleMessage spi.HandleMessage
 //   - handleError spi.HandleError
-func (_e *MockDefaultCodec_Expecter) SendRequest(ctx interface{}, 
interactionId interface{}, message interface{}, acceptsMessage interface{}, 
handleMessage interface{}, handleError interface{}) 
*MockDefaultCodec_SendRequest_Call {
-       return &MockDefaultCodec_SendRequest_Call{Call: 
_e.mock.On("SendRequest", ctx, interactionId, message, acceptsMessage, 
handleMessage, handleError)}
+func (_e *MockDefaultCodec_Expecter) SendRequest(ctx interface{}, 
interactionInfo interface{}, message interface{}, acceptsMessage interface{}, 
handleMessage interface{}, handleError interface{}) 
*MockDefaultCodec_SendRequest_Call {
+       return &MockDefaultCodec_SendRequest_Call{Call: 
_e.mock.On("SendRequest", ctx, interactionInfo, message, acceptsMessage, 
handleMessage, handleError)}
 }
 
-func (_c *MockDefaultCodec_SendRequest_Call) Run(run func(ctx context.Context, 
interactionId string, message spi.Message, acceptsMessage spi.AcceptsMessage, 
handleMessage spi.HandleMessage, handleError spi.HandleError)) 
*MockDefaultCodec_SendRequest_Call {
+func (_c *MockDefaultCodec_SendRequest_Call) Run(run func(ctx context.Context, 
interactionInfo string, message spi.Message, acceptsMessage spi.AcceptsMessage, 
handleMessage spi.HandleMessage, handleError spi.HandleError)) 
*MockDefaultCodec_SendRequest_Call {
        _c.Call.Run(func(args mock.Arguments) {
                var arg0 context.Context
                if args[0] != nil {
@@ -954,7 +954,7 @@ func (_c *MockDefaultCodec_SendRequest_Call) Return(err 
error) *MockDefaultCodec
        return _c
 }
 
-func (_c *MockDefaultCodec_SendRequest_Call) RunAndReturn(run func(ctx 
context.Context, interactionId string, message spi.Message, acceptsMessage 
spi.AcceptsMessage, handleMessage spi.HandleMessage, handleError 
spi.HandleError) error) *MockDefaultCodec_SendRequest_Call {
+func (_c *MockDefaultCodec_SendRequest_Call) RunAndReturn(run func(ctx 
context.Context, interactionInfo string, message spi.Message, acceptsMessage 
spi.AcceptsMessage, handleMessage spi.HandleMessage, handleError 
spi.HandleError) error) *MockDefaultCodec_SendRequest_Call {
        _c.Call.Return(run)
        return _c
 }
@@ -3730,8 +3730,8 @@ func (_c *MockMessageCodec_Disconnect_Call) 
RunAndReturn(run func() error) *Mock
 }
 
 // Expect provides a mock function for the type MockMessageCodec
-func (_mock *MockMessageCodec) Expect(ctx context.Context, interactionId 
string, acceptsMessage spi.AcceptsMessage, handleMessage spi.HandleMessage, 
handleError spi.HandleError) {
-       _mock.Called(ctx, interactionId, acceptsMessage, handleMessage, 
handleError)
+func (_mock *MockMessageCodec) Expect(ctx context.Context, interactionInfo 
string, acceptsMessage spi.AcceptsMessage, handleMessage spi.HandleMessage, 
handleError spi.HandleError) {
+       _mock.Called(ctx, interactionInfo, acceptsMessage, handleMessage, 
handleError)
        return
 }
 
@@ -3742,15 +3742,15 @@ type MockMessageCodec_Expect_Call struct {
 
 // Expect is a helper method to define mock.On call
 //   - ctx context.Context
-//   - interactionId string
+//   - interactionInfo string
 //   - acceptsMessage spi.AcceptsMessage
 //   - handleMessage spi.HandleMessage
 //   - handleError spi.HandleError
-func (_e *MockMessageCodec_Expecter) Expect(ctx interface{}, interactionId 
interface{}, acceptsMessage interface{}, handleMessage interface{}, handleError 
interface{}) *MockMessageCodec_Expect_Call {
-       return &MockMessageCodec_Expect_Call{Call: _e.mock.On("Expect", ctx, 
interactionId, acceptsMessage, handleMessage, handleError)}
+func (_e *MockMessageCodec_Expecter) Expect(ctx interface{}, interactionInfo 
interface{}, acceptsMessage interface{}, handleMessage interface{}, handleError 
interface{}) *MockMessageCodec_Expect_Call {
+       return &MockMessageCodec_Expect_Call{Call: _e.mock.On("Expect", ctx, 
interactionInfo, acceptsMessage, handleMessage, handleError)}
 }
 
-func (_c *MockMessageCodec_Expect_Call) Run(run func(ctx context.Context, 
interactionId string, acceptsMessage spi.AcceptsMessage, handleMessage 
spi.HandleMessage, handleError spi.HandleError)) *MockMessageCodec_Expect_Call {
+func (_c *MockMessageCodec_Expect_Call) Run(run func(ctx context.Context, 
interactionInfo string, acceptsMessage spi.AcceptsMessage, handleMessage 
spi.HandleMessage, handleError spi.HandleError)) *MockMessageCodec_Expect_Call {
        _c.Call.Run(func(args mock.Arguments) {
                var arg0 context.Context
                if args[0] != nil {
@@ -3788,7 +3788,7 @@ func (_c *MockMessageCodec_Expect_Call) Return() 
*MockMessageCodec_Expect_Call {
        return _c
 }
 
-func (_c *MockMessageCodec_Expect_Call) RunAndReturn(run func(ctx 
context.Context, interactionId string, acceptsMessage spi.AcceptsMessage, 
handleMessage spi.HandleMessage, handleError spi.HandleError)) 
*MockMessageCodec_Expect_Call {
+func (_c *MockMessageCodec_Expect_Call) RunAndReturn(run func(ctx 
context.Context, interactionInfo string, acceptsMessage spi.AcceptsMessage, 
handleMessage spi.HandleMessage, handleError spi.HandleError)) 
*MockMessageCodec_Expect_Call {
        _c.Run(run)
        return _c
 }
@@ -3930,8 +3930,8 @@ func (_c *MockMessageCodec_IsRunning_Call) 
RunAndReturn(run func() bool) *MockMe
 }
 
 // Send provides a mock function for the type MockMessageCodec
-func (_mock *MockMessageCodec) Send(ctx context.Context, interactionId string, 
message spi.Message) error {
-       ret := _mock.Called(ctx, interactionId, message)
+func (_mock *MockMessageCodec) Send(ctx context.Context, interactionInfo 
string, message spi.Message) error {
+       ret := _mock.Called(ctx, interactionInfo, message)
 
        if len(ret) == 0 {
                panic("no return value specified for Send")
@@ -3939,7 +3939,7 @@ func (_mock *MockMessageCodec) Send(ctx context.Context, 
interactionId string, m
 
        var r0 error
        if returnFunc, ok := ret.Get(0).(func(context.Context, string, 
spi.Message) error); ok {
-               r0 = returnFunc(ctx, interactionId, message)
+               r0 = returnFunc(ctx, interactionInfo, message)
        } else {
                r0 = ret.Error(0)
        }
@@ -3953,13 +3953,13 @@ type MockMessageCodec_Send_Call struct {
 
 // Send is a helper method to define mock.On call
 //   - ctx context.Context
-//   - interactionId string
+//   - interactionInfo string
 //   - message spi.Message
-func (_e *MockMessageCodec_Expecter) Send(ctx interface{}, interactionId 
interface{}, message interface{}) *MockMessageCodec_Send_Call {
-       return &MockMessageCodec_Send_Call{Call: _e.mock.On("Send", ctx, 
interactionId, message)}
+func (_e *MockMessageCodec_Expecter) Send(ctx interface{}, interactionInfo 
interface{}, message interface{}) *MockMessageCodec_Send_Call {
+       return &MockMessageCodec_Send_Call{Call: _e.mock.On("Send", ctx, 
interactionInfo, message)}
 }
 
-func (_c *MockMessageCodec_Send_Call) Run(run func(ctx context.Context, 
interactionId string, message spi.Message)) *MockMessageCodec_Send_Call {
+func (_c *MockMessageCodec_Send_Call) Run(run func(ctx context.Context, 
interactionInfo string, message spi.Message)) *MockMessageCodec_Send_Call {
        _c.Call.Run(func(args mock.Arguments) {
                var arg0 context.Context
                if args[0] != nil {
@@ -3987,14 +3987,14 @@ func (_c *MockMessageCodec_Send_Call) Return(err error) 
*MockMessageCodec_Send_C
        return _c
 }
 
-func (_c *MockMessageCodec_Send_Call) RunAndReturn(run func(ctx 
context.Context, interactionId string, message spi.Message) error) 
*MockMessageCodec_Send_Call {
+func (_c *MockMessageCodec_Send_Call) RunAndReturn(run func(ctx 
context.Context, interactionInfo string, message spi.Message) error) 
*MockMessageCodec_Send_Call {
        _c.Call.Return(run)
        return _c
 }
 
 // SendRequest provides a mock function for the type MockMessageCodec
-func (_mock *MockMessageCodec) SendRequest(ctx context.Context, interactionId 
string, message spi.Message, acceptsMessage spi.AcceptsMessage, handleMessage 
spi.HandleMessage, handleError spi.HandleError) error {
-       ret := _mock.Called(ctx, interactionId, message, acceptsMessage, 
handleMessage, handleError)
+func (_mock *MockMessageCodec) SendRequest(ctx context.Context, 
interactionInfo string, message spi.Message, acceptsMessage spi.AcceptsMessage, 
handleMessage spi.HandleMessage, handleError spi.HandleError) error {
+       ret := _mock.Called(ctx, interactionInfo, message, acceptsMessage, 
handleMessage, handleError)
 
        if len(ret) == 0 {
                panic("no return value specified for SendRequest")
@@ -4002,7 +4002,7 @@ func (_mock *MockMessageCodec) SendRequest(ctx 
context.Context, interactionId st
 
        var r0 error
        if returnFunc, ok := ret.Get(0).(func(context.Context, string, 
spi.Message, spi.AcceptsMessage, spi.HandleMessage, spi.HandleError) error); ok 
{
-               r0 = returnFunc(ctx, interactionId, message, acceptsMessage, 
handleMessage, handleError)
+               r0 = returnFunc(ctx, interactionInfo, message, acceptsMessage, 
handleMessage, handleError)
        } else {
                r0 = ret.Error(0)
        }
@@ -4016,16 +4016,16 @@ type MockMessageCodec_SendRequest_Call struct {
 
 // SendRequest is a helper method to define mock.On call
 //   - ctx context.Context
-//   - interactionId string
+//   - interactionInfo string
 //   - message spi.Message
 //   - acceptsMessage spi.AcceptsMessage
 //   - handleMessage spi.HandleMessage
 //   - handleError spi.HandleError
-func (_e *MockMessageCodec_Expecter) SendRequest(ctx interface{}, 
interactionId interface{}, message interface{}, acceptsMessage interface{}, 
handleMessage interface{}, handleError interface{}) 
*MockMessageCodec_SendRequest_Call {
-       return &MockMessageCodec_SendRequest_Call{Call: 
_e.mock.On("SendRequest", ctx, interactionId, message, acceptsMessage, 
handleMessage, handleError)}
+func (_e *MockMessageCodec_Expecter) SendRequest(ctx interface{}, 
interactionInfo interface{}, message interface{}, acceptsMessage interface{}, 
handleMessage interface{}, handleError interface{}) 
*MockMessageCodec_SendRequest_Call {
+       return &MockMessageCodec_SendRequest_Call{Call: 
_e.mock.On("SendRequest", ctx, interactionInfo, message, acceptsMessage, 
handleMessage, handleError)}
 }
 
-func (_c *MockMessageCodec_SendRequest_Call) Run(run func(ctx context.Context, 
interactionId string, message spi.Message, acceptsMessage spi.AcceptsMessage, 
handleMessage spi.HandleMessage, handleError spi.HandleError)) 
*MockMessageCodec_SendRequest_Call {
+func (_c *MockMessageCodec_SendRequest_Call) Run(run func(ctx context.Context, 
interactionInfo string, message spi.Message, acceptsMessage spi.AcceptsMessage, 
handleMessage spi.HandleMessage, handleError spi.HandleError)) 
*MockMessageCodec_SendRequest_Call {
        _c.Call.Run(func(args mock.Arguments) {
                var arg0 context.Context
                if args[0] != nil {
@@ -4068,7 +4068,7 @@ func (_c *MockMessageCodec_SendRequest_Call) Return(err 
error) *MockMessageCodec
        return _c
 }
 
-func (_c *MockMessageCodec_SendRequest_Call) RunAndReturn(run func(ctx 
context.Context, interactionId string, message spi.Message, acceptsMessage 
spi.AcceptsMessage, handleMessage spi.HandleMessage, handleError 
spi.HandleError) error) *MockMessageCodec_SendRequest_Call {
+func (_c *MockMessageCodec_SendRequest_Call) RunAndReturn(run func(ctx 
context.Context, interactionInfo string, message spi.Message, acceptsMessage 
spi.AcceptsMessage, handleMessage spi.HandleMessage, handleError 
spi.HandleError) error) *MockMessageCodec_SendRequest_Call {
        _c.Call.Return(run)
        return _c
 }
diff --git a/plc4go/spi/mocks_test.go b/plc4go/spi/mocks_test.go
index 9cb4800577..fdc4bbc88d 100644
--- a/plc4go/spi/mocks_test.go
+++ b/plc4go/spi/mocks_test.go
@@ -1489,8 +1489,8 @@ func (_c *MockMessageCodec_Disconnect_Call) 
RunAndReturn(run func() error) *Mock
 }
 
 // Expect provides a mock function for the type MockMessageCodec
-func (_mock *MockMessageCodec) Expect(ctx context.Context, interactionId 
string, acceptsMessage AcceptsMessage, handleMessage HandleMessage, handleError 
HandleError) {
-       _mock.Called(ctx, interactionId, acceptsMessage, handleMessage, 
handleError)
+func (_mock *MockMessageCodec) Expect(ctx context.Context, interactionInfo 
string, acceptsMessage AcceptsMessage, handleMessage HandleMessage, handleError 
HandleError) {
+       _mock.Called(ctx, interactionInfo, acceptsMessage, handleMessage, 
handleError)
        return
 }
 
@@ -1501,15 +1501,15 @@ type MockMessageCodec_Expect_Call struct {
 
 // Expect is a helper method to define mock.On call
 //   - ctx context.Context
-//   - interactionId string
+//   - interactionInfo string
 //   - acceptsMessage AcceptsMessage
 //   - handleMessage HandleMessage
 //   - handleError HandleError
-func (_e *MockMessageCodec_Expecter) Expect(ctx interface{}, interactionId 
interface{}, acceptsMessage interface{}, handleMessage interface{}, handleError 
interface{}) *MockMessageCodec_Expect_Call {
-       return &MockMessageCodec_Expect_Call{Call: _e.mock.On("Expect", ctx, 
interactionId, acceptsMessage, handleMessage, handleError)}
+func (_e *MockMessageCodec_Expecter) Expect(ctx interface{}, interactionInfo 
interface{}, acceptsMessage interface{}, handleMessage interface{}, handleError 
interface{}) *MockMessageCodec_Expect_Call {
+       return &MockMessageCodec_Expect_Call{Call: _e.mock.On("Expect", ctx, 
interactionInfo, acceptsMessage, handleMessage, handleError)}
 }
 
-func (_c *MockMessageCodec_Expect_Call) Run(run func(ctx context.Context, 
interactionId string, acceptsMessage AcceptsMessage, handleMessage 
HandleMessage, handleError HandleError)) *MockMessageCodec_Expect_Call {
+func (_c *MockMessageCodec_Expect_Call) Run(run func(ctx context.Context, 
interactionInfo string, acceptsMessage AcceptsMessage, handleMessage 
HandleMessage, handleError HandleError)) *MockMessageCodec_Expect_Call {
        _c.Call.Run(func(args mock.Arguments) {
                var arg0 context.Context
                if args[0] != nil {
@@ -1547,7 +1547,7 @@ func (_c *MockMessageCodec_Expect_Call) Return() 
*MockMessageCodec_Expect_Call {
        return _c
 }
 
-func (_c *MockMessageCodec_Expect_Call) RunAndReturn(run func(ctx 
context.Context, interactionId string, acceptsMessage AcceptsMessage, 
handleMessage HandleMessage, handleError HandleError)) 
*MockMessageCodec_Expect_Call {
+func (_c *MockMessageCodec_Expect_Call) RunAndReturn(run func(ctx 
context.Context, interactionInfo string, acceptsMessage AcceptsMessage, 
handleMessage HandleMessage, handleError HandleError)) 
*MockMessageCodec_Expect_Call {
        _c.Run(run)
        return _c
 }
@@ -1643,8 +1643,8 @@ func (_c *MockMessageCodec_IsRunning_Call) 
RunAndReturn(run func() bool) *MockMe
 }
 
 // Send provides a mock function for the type MockMessageCodec
-func (_mock *MockMessageCodec) Send(ctx context.Context, interactionId string, 
message Message) error {
-       ret := _mock.Called(ctx, interactionId, message)
+func (_mock *MockMessageCodec) Send(ctx context.Context, interactionInfo 
string, message Message) error {
+       ret := _mock.Called(ctx, interactionInfo, message)
 
        if len(ret) == 0 {
                panic("no return value specified for Send")
@@ -1652,7 +1652,7 @@ func (_mock *MockMessageCodec) Send(ctx context.Context, 
interactionId string, m
 
        var r0 error
        if returnFunc, ok := ret.Get(0).(func(context.Context, string, Message) 
error); ok {
-               r0 = returnFunc(ctx, interactionId, message)
+               r0 = returnFunc(ctx, interactionInfo, message)
        } else {
                r0 = ret.Error(0)
        }
@@ -1666,13 +1666,13 @@ type MockMessageCodec_Send_Call struct {
 
 // Send is a helper method to define mock.On call
 //   - ctx context.Context
-//   - interactionId string
+//   - interactionInfo string
 //   - message Message
-func (_e *MockMessageCodec_Expecter) Send(ctx interface{}, interactionId 
interface{}, message interface{}) *MockMessageCodec_Send_Call {
-       return &MockMessageCodec_Send_Call{Call: _e.mock.On("Send", ctx, 
interactionId, message)}
+func (_e *MockMessageCodec_Expecter) Send(ctx interface{}, interactionInfo 
interface{}, message interface{}) *MockMessageCodec_Send_Call {
+       return &MockMessageCodec_Send_Call{Call: _e.mock.On("Send", ctx, 
interactionInfo, message)}
 }
 
-func (_c *MockMessageCodec_Send_Call) Run(run func(ctx context.Context, 
interactionId string, message Message)) *MockMessageCodec_Send_Call {
+func (_c *MockMessageCodec_Send_Call) Run(run func(ctx context.Context, 
interactionInfo string, message Message)) *MockMessageCodec_Send_Call {
        _c.Call.Run(func(args mock.Arguments) {
                var arg0 context.Context
                if args[0] != nil {
@@ -1700,14 +1700,14 @@ func (_c *MockMessageCodec_Send_Call) Return(err error) 
*MockMessageCodec_Send_C
        return _c
 }
 
-func (_c *MockMessageCodec_Send_Call) RunAndReturn(run func(ctx 
context.Context, interactionId string, message Message) error) 
*MockMessageCodec_Send_Call {
+func (_c *MockMessageCodec_Send_Call) RunAndReturn(run func(ctx 
context.Context, interactionInfo string, message Message) error) 
*MockMessageCodec_Send_Call {
        _c.Call.Return(run)
        return _c
 }
 
 // SendRequest provides a mock function for the type MockMessageCodec
-func (_mock *MockMessageCodec) SendRequest(ctx context.Context, interactionId 
string, message Message, acceptsMessage AcceptsMessage, handleMessage 
HandleMessage, handleError HandleError) error {
-       ret := _mock.Called(ctx, interactionId, message, acceptsMessage, 
handleMessage, handleError)
+func (_mock *MockMessageCodec) SendRequest(ctx context.Context, 
interactionInfo string, message Message, acceptsMessage AcceptsMessage, 
handleMessage HandleMessage, handleError HandleError) error {
+       ret := _mock.Called(ctx, interactionInfo, message, acceptsMessage, 
handleMessage, handleError)
 
        if len(ret) == 0 {
                panic("no return value specified for SendRequest")
@@ -1715,7 +1715,7 @@ func (_mock *MockMessageCodec) SendRequest(ctx 
context.Context, interactionId st
 
        var r0 error
        if returnFunc, ok := ret.Get(0).(func(context.Context, string, Message, 
AcceptsMessage, HandleMessage, HandleError) error); ok {
-               r0 = returnFunc(ctx, interactionId, message, acceptsMessage, 
handleMessage, handleError)
+               r0 = returnFunc(ctx, interactionInfo, message, acceptsMessage, 
handleMessage, handleError)
        } else {
                r0 = ret.Error(0)
        }
@@ -1729,16 +1729,16 @@ type MockMessageCodec_SendRequest_Call struct {
 
 // SendRequest is a helper method to define mock.On call
 //   - ctx context.Context
-//   - interactionId string
+//   - interactionInfo string
 //   - message Message
 //   - acceptsMessage AcceptsMessage
 //   - handleMessage HandleMessage
 //   - handleError HandleError
-func (_e *MockMessageCodec_Expecter) SendRequest(ctx interface{}, 
interactionId interface{}, message interface{}, acceptsMessage interface{}, 
handleMessage interface{}, handleError interface{}) 
*MockMessageCodec_SendRequest_Call {
-       return &MockMessageCodec_SendRequest_Call{Call: 
_e.mock.On("SendRequest", ctx, interactionId, message, acceptsMessage, 
handleMessage, handleError)}
+func (_e *MockMessageCodec_Expecter) SendRequest(ctx interface{}, 
interactionInfo interface{}, message interface{}, acceptsMessage interface{}, 
handleMessage interface{}, handleError interface{}) 
*MockMessageCodec_SendRequest_Call {
+       return &MockMessageCodec_SendRequest_Call{Call: 
_e.mock.On("SendRequest", ctx, interactionInfo, message, acceptsMessage, 
handleMessage, handleError)}
 }
 
-func (_c *MockMessageCodec_SendRequest_Call) Run(run func(ctx context.Context, 
interactionId string, message Message, acceptsMessage AcceptsMessage, 
handleMessage HandleMessage, handleError HandleError)) 
*MockMessageCodec_SendRequest_Call {
+func (_c *MockMessageCodec_SendRequest_Call) Run(run func(ctx context.Context, 
interactionInfo string, message Message, acceptsMessage AcceptsMessage, 
handleMessage HandleMessage, handleError HandleError)) 
*MockMessageCodec_SendRequest_Call {
        _c.Call.Run(func(args mock.Arguments) {
                var arg0 context.Context
                if args[0] != nil {
@@ -1781,7 +1781,7 @@ func (_c *MockMessageCodec_SendRequest_Call) Return(err 
error) *MockMessageCodec
        return _c
 }
 
-func (_c *MockMessageCodec_SendRequest_Call) RunAndReturn(run func(ctx 
context.Context, interactionId string, message Message, acceptsMessage 
AcceptsMessage, handleMessage HandleMessage, handleError HandleError) error) 
*MockMessageCodec_SendRequest_Call {
+func (_c *MockMessageCodec_SendRequest_Call) RunAndReturn(run func(ctx 
context.Context, interactionInfo string, message Message, acceptsMessage 
AcceptsMessage, handleMessage HandleMessage, handleError HandleError) error) 
*MockMessageCodec_SendRequest_Call {
        _c.Call.Return(run)
        return _c
 }
diff --git a/plc4go/spi/transactions/RequestTransaction.go 
b/plc4go/spi/transactions/RequestTransaction.go
index 4b0aa6467b..f006de1bc1 100644
--- a/plc4go/spi/transactions/RequestTransaction.go
+++ b/plc4go/spi/transactions/RequestTransaction.go
@@ -56,8 +56,9 @@ type RequestTransaction interface {
 
 //go:generate go tool plc4xGenerator -type=requestTransaction
 type requestTransaction struct {
-       parent        *requestTransactionManager `ignore:"true"`
-       transactionId int32
+       parent          *requestTransactionManager `ignore:"true"`
+       transactionId   int32
+       transactionInfo string
 
        /** The initial operation to perform to kick off the request */
        operation        pool.Runnable `ignore:"true"` // TODO: maybe we can 
treat this as a function some day if we are able to check the definition in gen
@@ -69,11 +70,12 @@ type requestTransaction struct {
        log zerolog.Logger
 }
 
-func newRequestTransaction(localLog zerolog.Logger, parent 
*requestTransactionManager, transactionId int32) *requestTransaction {
+func newRequestTransaction(localLog zerolog.Logger, parent 
*requestTransactionManager, transactionId int32, transactionInfo string) 
*requestTransaction {
        return &requestTransaction{
-               parent:        parent,
-               transactionId: transactionId,
-               log:           localLog.With().Int32("transactionId", 
transactionId).Logger(),
+               parent:          parent,
+               transactionId:   transactionId,
+               transactionInfo: transactionInfo,
+               log:             localLog.With().Int32("transactionId", 
transactionId).Str("transactionInfo", transactionInfo).Logger(),
        }
 }
 
diff --git a/plc4go/spi/transactions/RequestTransactionManager.go 
b/plc4go/spi/transactions/RequestTransactionManager.go
index 71ce3485a6..5d94b2649d 100644
--- a/plc4go/spi/transactions/RequestTransactionManager.go
+++ b/plc4go/spi/transactions/RequestTransactionManager.go
@@ -70,7 +70,7 @@ type RequestTransactionManager interface {
        // SetNumberOfConcurrentRequests sets the number of concurrent requests 
that will be sent out to a device
        SetNumberOfConcurrentRequests(numberOfConcurrentRequests int)
        // StartTransaction starts a RequestTransaction
-       StartTransaction() RequestTransaction
+       StartTransaction(transactionInfo string) RequestTransaction
 }
 
 // NewRequestTransactionManager creates a new RequestTransactionManager
@@ -198,7 +198,7 @@ func (r *requestTransactionManager) processWorklog() {
        }
 }
 
-func (r *requestTransactionManager) StartTransaction() RequestTransaction {
+func (r *requestTransactionManager) StartTransaction(transactionInfo string) 
RequestTransaction {
        r.transactionMutex.Lock()
        defer r.transactionMutex.Unlock()
        currentTransactionId := r.currentTransactionId
@@ -207,7 +207,7 @@ func (r *requestTransactionManager) StartTransaction() 
RequestTransaction {
        if !r.traceTransactionManagerTransactions {
                transactionLogger = zerolog.Nop()
        }
-       transaction := newRequestTransaction(transactionLogger, r, 
currentTransactionId)
+       transaction := newRequestTransaction(transactionLogger, r, 
currentTransactionId, transactionInfo)
        if r.shutdown.Load() {
                transaction.completed = true
                
transaction.setCompletionFuture(&completedFuture{errors.New("request 
transaction manager in shutdown")})
diff --git a/plc4go/spi/transactions/RequestTransactionManager_test.go 
b/plc4go/spi/transactions/RequestTransactionManager_test.go
index 52164fec0a..383992e9e8 100644
--- a/plc4go/spi/transactions/RequestTransactionManager_test.go
+++ b/plc4go/spi/transactions/RequestTransactionManager_test.go
@@ -218,7 +218,7 @@ func Test_requestTransactionManager_StartTransaction(t 
*testing.T) {
                        if tt.manipulator != nil {
                                tt.manipulator(t, r)
                        }
-                       if got := r.StartTransaction(); !assert.True(t, 
tt.wantAssert(t, got)) {
+                       if got := r.StartTransaction("defaultTransation"); 
!assert.True(t, tt.wantAssert(t, got)) {
                                t.Errorf("StartTransaction() = %v", got)
                        }
                })
diff --git a/plc4go/spi/transactions/mocks_test.go 
b/plc4go/spi/transactions/mocks_test.go
index 986d16a3c9..31afd727d1 100644
--- a/plc4go/spi/transactions/mocks_test.go
+++ b/plc4go/spi/transactions/mocks_test.go
@@ -495,7 +495,7 @@ func (_c 
*MockRequestTransactionManager_SetNumberOfConcurrentRequests_Call) RunA
 }
 
 // StartTransaction provides a mock function for the type 
MockRequestTransactionManager
-func (_mock *MockRequestTransactionManager) StartTransaction() 
RequestTransaction {
+func (_mock *MockRequestTransactionManager) StartTransaction(string) 
RequestTransaction {
        ret := _mock.Called()
 
        if len(ret) == 0 {
diff --git a/plc4go/spi/transactions/requestTransaction_plc4xgen.go 
b/plc4go/spi/transactions/requestTransaction_plc4xgen.go
index f49954786b..5922dbe8d6 100644
--- a/plc4go/spi/transactions/requestTransaction_plc4xgen.go
+++ b/plc4go/spi/transactions/requestTransaction_plc4xgen.go
@@ -53,6 +53,10 @@ func (d *requestTransaction) SerializeWithWriteBuffer(ctx 
context.Context, write
                return err
        }
 
+       if err := writeBuffer.WriteString("transactionInfo", 
uint32(len(d.transactionInfo)*8), d.transactionInfo); err != nil {
+               return err
+       }
+
        if completionFutureLoaded := d.completionFuture.Load(); 
completionFutureLoaded != nil && *completionFutureLoaded != nil {
                completionFuture := *completionFutureLoaded
                if serializableField, ok := 
completionFuture.(utils.Serializable); ok {

Reply via email to