github.com/sixexorg/magnetic-ring@v0.0.0-20191119090307-31705a21e419/txpool/orgchain/txpool_actor.go (about) 1 package orgchain 2 3 import ( 4 "fmt" 5 "reflect" 6 7 "github.com/ontio/ontology-eventbus/actor" 8 "github.com/sixexorg/magnetic-ring/common" 9 "github.com/sixexorg/magnetic-ring/log" 10 ) 11 12 type TxPoolActor struct { 13 txnpool *SubPool 14 } 15 16 func (this *TxPoolActor) setPool(s *SubPool) { 17 this.txnpool = s 18 } 19 20 func NewTxActor(s *SubPool) *TxPoolActor { 21 actor := &TxPoolActor{} 22 actor.setPool(s) 23 24 return actor 25 } 26 27 func (tpa *TxPoolActor) Receive(context actor.Context) { 28 switch msg := context.Message().(type) { 29 case TxReq: 30 fmt.Println("📩 txpool actor receive") 31 log.Info("magnetic actor receive transaction", "tx", msg.Tx.Hash()) 32 33 err := tpa.txnpool.TxEnqueue(msg.Tx) 34 resp := TxResp{} 35 if err != nil { 36 resp.Hash = common.Hash{} 37 resp.Desc = err.Error() 38 if msg.RespChan != nil { 39 msg.RespChan <- &resp 40 } 41 return 42 } 43 44 log.Info("txpool_actor keep msg", "txhash", msg.Tx.Hash()) 45 46 resp.Hash = msg.Tx.Hash() 47 resp.Desc = "" 48 if msg.RespChan != nil { 49 msg.RespChan <- &resp 50 } 51 52 case MustPackTxsReq: 53 tpa.txnpool.AppendMustPackTx(msg.Txs...) 54 55 default: 56 log.Info("orgtxpoolactor.go txpool-tx actor: unknown msg", "msg", msg, "type", reflect.TypeOf(msg)) 57 } 58 }