This commit is contained in:
crusader 2018-04-19 23:45:39 +09:00
parent de8a590fd5
commit 0720771a87
3 changed files with 23 additions and 8 deletions

View File

@ -4,6 +4,8 @@ import (
"sync"
"time"
"git.loafle.net/commons/logging-go"
"git.loafle.net/commons/util-go/net/cidr"
ocdm "git.loafle.net/overflow/commons-go/discovery/model"
)
@ -150,6 +152,7 @@ func (d *defaultDiscoverer) innerDiscoverZone(wg *sync.WaitGroup, dataChan chan
},
func(result interface{}) {
z := result.(*ocdm.Zone)
logging.Logger().Debugf("zone discovered: %v", z)
dataChan <- retainDiscoveryData(DiscoveryDataTypeZone, time.Now(), z, nil)
if nil != dz.DiscoveryHost {
cr, _ := cidr.NewCIDRRanger(z.Network)
@ -159,7 +162,7 @@ func (d *defaultDiscoverer) innerDiscoverZone(wg *sync.WaitGroup, dataChan chan
DiscoveryPort: dz.DiscoveryHost.DiscoveryPort,
}
wg.Add(1)
d.innerDiscoverHost(wg, dataChan, z, dh)
go d.innerDiscoverHost(wg, dataChan, z, dh)
}
},
func(err error) {
@ -179,10 +182,11 @@ func (d *defaultDiscoverer) innerDiscoverHost(wg *sync.WaitGroup, dataChan chan
},
func(result interface{}) {
h := result.(*ocdm.Host)
logging.Logger().Debugf("host discovered: %v", h)
dataChan <- retainDiscoveryData(DiscoveryDataTypeHost, time.Now(), h, nil)
if nil != dh.DiscoveryPort {
wg.Add(1)
d.innerDiscoverPort(wg, dataChan, h, dh.DiscoveryPort)
go d.innerDiscoverPort(wg, dataChan, h, dh.DiscoveryPort)
}
},
func(err error) {
@ -202,10 +206,11 @@ func (d *defaultDiscoverer) innerDiscoverPort(wg *sync.WaitGroup, dataChan chan
},
func(result interface{}) {
p := result.(*ocdm.Port)
logging.Logger().Debugf("port discovered: %v", p)
dataChan <- retainDiscoveryData(DiscoveryDataTypePort, time.Now(), p, nil)
if nil != dp.DiscoveryService {
wg.Add(1)
d.innerDiscoverSerice(wg, dataChan, p, dp.DiscoveryService)
go d.innerDiscoverSerice(wg, dataChan, p, dp.DiscoveryService)
}
},
func(err error) {
@ -225,6 +230,7 @@ func (d *defaultDiscoverer) innerDiscoverSerice(wg *sync.WaitGroup, dataChan cha
},
func(result interface{}) {
s := result.(*ocdm.Service)
logging.Logger().Debugf("service discovered: %v", s)
dataChan <- retainDiscoveryData(DiscoveryDataTypeService, time.Now(), s, nil)
},
func(err error) {

View File

@ -3,6 +3,7 @@ package server
import (
cdr "git.loafle.net/commons/di-go/registry"
logging "git.loafle.net/commons/logging-go"
crpj "git.loafle.net/commons/rpc-go/protocol/json"
crr "git.loafle.net/commons/rpc-go/registry"
cssn "git.loafle.net/commons/server-go/socket/net"
occa "git.loafle.net/overflow/commons-go/core/annotation"
@ -13,7 +14,10 @@ import (
)
func New(pidFilePath string) *cssn.Server {
rpcWriteChan := make(chan *container.RPCNotification, 256)
cdr.RegisterResource(container.CONTAINER_CRAWLERS, crawler.GetCrawlers())
cdr.RegisterResource(container.CONTAINER_RPC_WRITE_CHAN, rpcWriteChan)
services, err := cdr.GetInstancesByAnnotationType(occa.RPCServiceAnnotationType)
if nil != err {
@ -25,6 +29,8 @@ func New(pidFilePath string) *cssn.Server {
ds := &servlet.DiscoveryServlets{}
ds.RPCInvoker = rpcRegistry
ds.RPCWriteChan = rpcWriteChan
ds.RPCServerCodec = crpj.NewServerCodec()
sh := &ServerHandlers{}
sh.Name = "Container Discovery"

View File

@ -7,6 +7,7 @@ import (
cda "git.loafle.net/commons/di-go/annotation"
cdr "git.loafle.net/commons/di-go/registry"
"git.loafle.net/commons/logging-go"
ocdm "git.loafle.net/overflow/commons-go/discovery/model"
ocs "git.loafle.net/overflow/container-go/service"
"git.loafle.net/overflow/container_discovery/internal/discoverer"
@ -49,7 +50,7 @@ func (s *DiscoveryService) DestroyService() {
}
func (s *DiscoveryService) DiscoverZone(requesterID string, dz *ocdm.DiscoveryZone) error {
s.handleDiscovery(requesterID, func(dataChan chan *discoverer.DiscoveryData) {
go s.handleDiscovery(requesterID, func(dataChan chan *discoverer.DiscoveryData) {
s.discoverer.DiscoverZone(dataChan, dz)
})
@ -57,7 +58,7 @@ func (s *DiscoveryService) DiscoverZone(requesterID string, dz *ocdm.DiscoveryZo
}
func (s *DiscoveryService) DiscoverHost(requesterID string, zone *ocdm.Zone, dh *ocdm.DiscoveryHost) error {
s.handleDiscovery(requesterID, func(dataChan chan *discoverer.DiscoveryData) {
go s.handleDiscovery(requesterID, func(dataChan chan *discoverer.DiscoveryData) {
s.discoverer.DiscoverHost(dataChan, zone, dh)
})
@ -65,7 +66,7 @@ func (s *DiscoveryService) DiscoverHost(requesterID string, zone *ocdm.Zone, dh
}
func (s *DiscoveryService) DiscoverPort(requesterID string, host *ocdm.Host, dp *ocdm.DiscoveryPort) error {
s.handleDiscovery(requesterID, func(dataChan chan *discoverer.DiscoveryData) {
go s.handleDiscovery(requesterID, func(dataChan chan *discoverer.DiscoveryData) {
s.discoverer.DiscoverPort(dataChan, host, dp)
})
@ -73,7 +74,7 @@ func (s *DiscoveryService) DiscoverPort(requesterID string, host *ocdm.Host, dp
}
func (s *DiscoveryService) DiscoverService(requesterID string, port *ocdm.Port, ds *ocdm.DiscoveryService) error {
s.handleDiscovery(requesterID, func(dataChan chan *discoverer.DiscoveryData) {
go s.handleDiscovery(requesterID, func(dataChan chan *discoverer.DiscoveryData) {
s.discoverer.DiscoverSerice(dataChan, port, ds)
})
@ -116,7 +117,7 @@ func (s *DiscoveryService) handleDiscovery(requesterID string, discoveryFunc fun
s.discoverer.Release(dataChan)
}()
discoveryFunc(dataChan)
go discoveryFunc(dataChan)
for {
select {
@ -126,8 +127,10 @@ func (s *DiscoveryService) handleDiscovery(requesterID string, discoveryFunc fun
}
switch data.Type {
case discoverer.DiscoveryDataTypeStart:
logging.Logger().Debugf("DiscoveryService.DiscoveryStart: %s", data.Time.String())
s.ProbeService.Send("DiscoveryService.DiscoveryStart", requesterID, data.Time)
case discoverer.DiscoveryDataTypeStop:
logging.Logger().Debugf("DiscoveryService.DiscoveryStop: %s", data.Time.String())
s.ProbeService.Send("DiscoveryService.DiscoveryStop", requesterID, data.Time)
data.Release()
return nil