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" crcodec "git.loafle.net/commons/rpc-go/codec" 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 { connector, err := occ.NewConnector(occp.ContainerDiscovery, portNumber) if nil != err { logging.Logger().Panic(err) } rpcClientCodec := crpj.NewCustomClientCodec(crcodec.NewCompressionCodecSelector(connector.GetCompressionThreshold())) ch := &ClientHandlers{} ch.Name = occp.ContainerDiscovery.String() ch.Connector = connector ch.RPCCodec = rpcClientCodec c := &crc.Client{ ClientHandler: ch, } cdr.RegisterResource(container.CONTAINER_CRAWLERS, crawler.GetCrawlers()) cdr.RegisterResource(container.CONTAINER_RPC_CLIENT, c) services, err := cdr.GetInstancesByAnnotationType(occa.RPCServiceAnnotationType) if nil != err { logging.Logger().Panic(err) } rpcRegistry := crr.NewRPCRegistry() rpcRegistry.RegisterServices(services...) ch.RPCInvoker = rpcRegistry ch.Services = services ch.OrderedServices = service.OrderedServices return c }