From 021c71f50ba9e47b9f4477d2c9932df9eb3a8144 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sun, 4 Feb 2024 16:05:01 +0100 Subject: [PATCH] api/client.go: add Transaction callback. --- api/client.go | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/api/client.go b/api/client.go index 4b5a9ff..ae6130d 100644 --- a/api/client.go +++ b/api/client.go @@ -18,10 +18,11 @@ type Client struct { // waitgroup for worker threads. wg sync.WaitGroup - OnError func(error) - OnAction func(message.ActionTrace) - OnHeartbeat func(message.HeartBeat) - OnTableDelta func(message.TableDelta) + OnError func(error) + OnTransaction func(message.TransactionTrace) + OnAction func(message.ActionTrace) + OnHeartbeat func(message.HeartBeat) + OnTableDelta func(message.TableDelta) } func NewClient(reader Reader, decoder message.Decoder) *Client { @@ -57,6 +58,14 @@ func (c *Client) decode(payload []byte, msg any) bool { return true } +// Transaction handler +func (c *Client) transactionHandler(payload []byte) { + var trans message.TransactionTrace + if ok := c.decode(payload, &trans); ok { + c.OnTransaction(trans) + } +} + // Action handler func (c *Client) actHandler(payload []byte) { var act message.ActionTrace @@ -86,6 +95,7 @@ func (c *Client) Subscribe(channel Channel) error { handler handler callback any }{ + TransactionChannel.Type(): {c.transactionHandler, c.OnTransaction}, HeartbeatChannel.Type(): {c.hbHandler, c.OnHeartbeat}, ActionChannel{}.Channel().Type(): {c.actHandler, c.OnAction}, TableDeltaChannel{}.Channel().Type(): {c.tableDeltaHandler, c.OnTableDelta},