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 {
