package client import ( cdr "git.loafle.net/commons/di-go/registry" "git.loafle.net/commons/logging-go" crc "git.loafle.net/commons/rpc-go/client" crpj "git.loafle.net/commons/rpc-go/protocol/json" crr "git.loafle.net/commons/rpc-go/registry" occp "git.loafle.net/overflow/commons-go/config/probe" occa "git.loafle.net/overflow/commons-go/core/annotation" "git.loafle.net/overflow/container-go" occ "git.loafle.net/overflow/container-go/client" "git.loafle.net/overflow/container_discovery/crawler" "git.loafle.net/overflow/container_discovery/service" ) func New(portNumber int) *crc.Client { rpcWriteChan := make(chan []byte, 256) rpcClientCodec := crpj.NewClientCodec() cdr.RegisterResource(container.CONTAINER_CRAWLERS, crawler.GetCrawlers()) cdr.RegisterResource(container.CONTAINER_RPC_WRITE_CHAN, rpcWriteChan) cdr.RegisterResource(container.CONTAINER_RPC_CLIENT_CODEC, rpcClientCodec) services, err := cdr.GetInstancesByAnnotationType(occa.RPCServiceAnnotationType) if nil != err { logging.Logger().Panic(err) } rpcRegistry := crr.NewRPCRegistry() rpcRegistry.RegisterServices(services...) connector, err := occ.NewConnector(occp.ContainerDiscovery, portNumber) if nil != err { logging.Logger().Panic(err) } ch := &ClientHandlers{} ch.Name = occp.ContainerDiscovery.String() ch.Connector = connector ch.RPCCodec = rpcClientCodec ch.RPCInvoker = rpcRegistry ch.Services = services ch.OrderedServices = service.OrderedServices return &crc.Client{ ClientHandler: ch, } }