| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | package coreimport (	"sync"	"google.golang.org/grpc")// ServiceRegistryCallback is a callback function for registering services.type ServiceRegistryCallback func(s *grpc.Server)// Commander is a feature that accepts commands from external source.type Commander interface {	Feature	// RegisterService registers a service into this Commander.	RegisterService(ServiceRegistryCallback)}type syncCommander struct {	sync.RWMutex	Commander}func (c *syncCommander) RegisterService(callback ServiceRegistryCallback) {	c.RLock()	defer c.RUnlock()	if c.Commander == nil {		return	}	c.Commander.RegisterService(callback)}func (c *syncCommander) Start() error {	c.RLock()	defer c.RUnlock()	if c.Commander == nil {		return nil	}	return c.Commander.Start()}func (c *syncCommander) Close() error {	c.RLock()	defer c.RUnlock()	if c.Commander == nil {		return nil	}	return c.Commander.Close()}func (c *syncCommander) Set(commander Commander) {	c.Lock()	defer c.Unlock()	c.Commander = commander}
 |