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() }
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() }
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) }
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() }