作者:xconns-co
项目:go-route
func newPonger(rot router.Router, done chan<- bool) {
//attach chans to router
pingChan := make(chan *Msg)
pongChan := make(chan *Msg)
rot.AttachSendChan(router.StrID("pong"), pongChan)
rot.AttachRecvChan(router.StrID("ping"), pingChan)
//start ponger
pong := &Ponger{pongChan, pingChan, done}
go pong.Run()
}
作者:xconns-co
项目:go-route
func newPinger(rot router.Router, done chan<- bool, numRuns int) {
//attach chans to router
pingChan := make(chan Msg)
pongChan := make(chan Msg)
rot.AttachSendChan(router.StrID("ping"), pingChan)
rot.AttachRecvChan(router.StrID("pong"), pongChan)
//start pinger
ping := &Pinger{pingChan, pongChan, done, numRuns}
go ping.Run()
}
作者:xconns-co
项目:go-route
func (dt *DbTask) init(r router.Router, sn string, role ServantRole) {
dt.rot = r
dt.role = role
dt.servName = sn
dt.random = rand.New(rand.NewSource(time.Now().UnixNano()))
dt.dbRespChans = make(map[string](chan string))
dt.dbReqChan = make(chan *DbReq)
dt.sysCmdChan = make(chan string)
//output_intf or send chans
dt.FaultRaiser = router.NewFaultRaiser(router.StrID("/Fault/DB/Exception"), r, "DbTask")
//input_intf or recv chans
r.AttachRecvChan(router.StrID("/Sys/Command"), dt.sysCmdChan)
//use a bindChan to keep dbReqChan open when all clients detach & exit
bc := make(chan *router.BindEvent, 1)
r.AttachRecvChan(router.StrID("/DB/Request"), dt.dbReqChan, bc)
}
作者:xconns-co
项目:go-route
func newPonger(rot router.Router, done chan<- bool) {
//attach chans to router
pingChan := make(chan *Msg)
pongChan := make(chan *Msg)
//bindChan := make(chan *router.BindEvent, 1)
rot.AttachSendChan(router.StrID("pong"), pongChan /*, bindChan*/)
rot.AttachRecvChan(router.StrID("ping"), pingChan)
//wait for pinger connecting
/*
for {
if (<-bindChan).Count > 0 {
break
}
}
*/
//start ponger
pong := &Ponger{pongChan, pingChan, done}
go pong.Run()
}