github.com/sixexorg/magnetic-ring@v0.0.0-20191119090307-31705a21e419/bactor/bactor.go (about)

     1  package bactor
     2  
     3  import (
     4  	"sync"
     5  
     6  	"github.com/ontio/ontology-eventbus/actor"
     7  	"github.com/sixexorg/magnetic-ring/errors"
     8  )
     9  
    10  var (
    11  	actorMap = map[BactorType]*actor.PID{}
    12  	am       sync.Mutex
    13  )
    14  
    15  const (
    16  	TXPOOLACTOR         = BactorType("TXPOOLACTOR")
    17  	CONSENSUSACTOR      = BactorType("CONSENACTOR")
    18  	P2PACTOR            = BactorType("P2PACTOR")
    19  	MAINRADARACTOR      = BactorType("NOTIFY2P2PACTOR")
    20  	CYCLEACTOR          = BactorType("CYCLEACTOR")
    21  	STARTBROADCASTSATOR = BactorType("STARTBROADCAST2PACTOR")
    22  )
    23  
    24  type BactorType string
    25  
    26  func RegistActorPid(module BactorType, pid *actor.PID) {
    27  	am.Lock()
    28  	defer am.Unlock()
    29  	actorMap[module] = pid
    30  }
    31  func GetActorPid(module BactorType) (*actor.PID, error) {
    32  	am.Lock()
    33  	defer am.Unlock()
    34  	var pid *actor.PID
    35  	var ok bool
    36  
    37  	if pid, ok = actorMap[module]; !ok {
    38  		return nil, errors.ERR_ACTOR_NOTREG
    39  	}
    40  	return pid, nil
    41  }