diff --git a/ship_processor.go b/app/ship_processor.go similarity index 86% rename from ship_processor.go rename to app/ship_processor.go index 062667e..b40904c 100644 --- a/ship_processor.go +++ b/app/ship_processor.go @@ -1,4 +1,4 @@ -package main +package app import ( "encoding/hex" @@ -9,12 +9,27 @@ import ( "eosio-ship-trace-reader/transport" "eosio-ship-trace-reader/transport/message" "github.com/eoscanada/eos-go/ship" + shipclient "github.com/eosswedenorg-go/antelope-ship-client" ) type ShipProcessor struct { ns transport.Namespace abi *abi.AbiManager publisher transport.Publisher + shClient *shipclient.ShipClient +} + +func SpawnProccessor(shClient *shipclient.ShipClient, ns transport.Namespace, publisher transport.Publisher, abi *abi.AbiManager) { + processor := &ShipProcessor{ + ns: ns, + abi: abi, + publisher: publisher, + shClient: shClient, + } + + // Attach handlers + shClient.BlockHandler = processor.processBlock + shClient.TraceHandler = processor.processTraces } func (processor *ShipProcessor) queueMessage(channel transport.ChannelInterface, payload []byte) bool { diff --git a/types.go b/app/types.go similarity index 97% rename from types.go rename to app/types.go index 0e35cbe..99a90cc 100644 --- a/types.go +++ b/app/types.go @@ -1,4 +1,4 @@ -package main +package app import ( eos "github.com/eoscanada/eos-go" diff --git a/main.go b/main.go index c3628c9..2b586e0 100644 --- a/main.go +++ b/main.go @@ -10,6 +10,7 @@ import ( "github.com/go-redis/redis/v8" log "github.com/sirupsen/logrus" + "eosio-ship-trace-reader/app" "eosio-ship-trace-reader/config" "eosio-ship-trace-reader/transport" "eosio-ship-trace-reader/transport/redis_pubsub" @@ -236,19 +237,17 @@ func main() { } } - processor := ShipProcessor{ - ns: transport.Namespace{ + shClient = shipclient.NewClient(conf.StartBlockNum, conf.EndBlockNum, conf.IrreversibleOnly) + + app.SpawnProccessor( + shClient, + transport.Namespace{ Prefix: conf.Redis.Prefix, ChainID: chainInfo.ChainID.String(), }, - publisher: redis_pubsub.New(rdb), - abi: abi.NewAbiManager(rdb, eosClient, conf.Redis.CacheID), - } - - // Construct ship client - shClient = shipclient.NewClient(conf.StartBlockNum, conf.EndBlockNum, conf.IrreversibleOnly) - shClient.BlockHandler = processor.processBlock - shClient.TraceHandler = processor.processTraces + redis_pubsub.New(rdb), + abi.NewAbiManager(rdb, eosClient, conf.Redis.CacheID), + ) // Run the application run()