github.com/sixexorg/magnetic-ring@v0.0.0-20191119090307-31705a21e419/txpool/mainchain/txpool_actor.go (about) 1 package mainchain 2 3 import ( 4 "reflect" 5 6 "github.com/ontio/ontology-eventbus/actor" 7 "github.com/sixexorg/magnetic-ring/bactor" 8 "github.com/sixexorg/magnetic-ring/common" 9 "github.com/sixexorg/magnetic-ring/log" 10 ) 11 12 type TxPoolActor struct { 13 txnpool *TxPool 14 } 15 16 func (this *TxPoolActor) setPool(s *TxPool) { 17 this.txnpool = s 18 } 19 20 func NewTxActor(s *TxPool) *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 31 log.Debug("magnetic actor receive transaction", "tx", msg.Tx.Hash()) 32 33 err := tpa.txnpool.TxEnqueue(msg.Tx) 34 resp := TxResp{} 35 empt := common.Hash{} 36 if err != nil { 37 resp.Hash = empt.String() 38 resp.Desc = err.Error() 39 if msg.RespChan != nil { 40 msg.RespChan <- &resp 41 } 42 return 43 } 44 45 log.Debug("txpool_actor keep msg", "txhash", msg.Tx.Hash()) 46 47 resp.Hash = empt.String() 48 resp.Desc = "" 49 50 if msg.RespChan != nil { 51 msg.RespChan <- &resp 52 } 53 54 case bactor.HeightChange: 55 log.Info("func txpool Receive", "oldTargetHeight", tpa.txnpool.stateValidator.TargetHeight, "txlen", tpa.txnpool.stateValidator.GetTxLen()) 56 tpa.txnpool.RefreshValidator() 57 58 case MustPackTxsReq: 59 tpa.txnpool.AppendMustPackTx(msg.Txs...) 60 61 default: 62 log.Info("txpool_actor.go txpool-tx actor: unknown msg", "msg", msg, "type", reflect.TypeOf(msg)) 63 } 64 }