mirror of
https://github.com/go-i2p/go-i2p.git
synced 2025-07-05 14:13:30 -04:00
* add Router.Start()
* remove Router.Run()
This commit is contained in:
@ -12,6 +12,7 @@ type Router struct {
|
|||||||
cfg *config.RouterConfig
|
cfg *config.RouterConfig
|
||||||
ndb netdb.StdNetDB
|
ndb netdb.StdNetDB
|
||||||
closeChnl chan bool
|
closeChnl chan bool
|
||||||
|
running bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// create router with default configuration
|
// create router with default configuration
|
||||||
@ -29,20 +30,37 @@ func FromConfig(c *config.RouterConfig) (r *Router, err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Wait blocks until router is fully stopped
|
||||||
func (r *Router) Wait() {
|
func (r *Router) Wait() {
|
||||||
<-r.closeChnl
|
<-r.closeChnl
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Stop starts stopping internal state of router
|
||||||
func (r *Router) Stop() {
|
func (r *Router) Stop() {
|
||||||
r.closeChnl <- true
|
r.closeChnl <- true
|
||||||
|
r.running = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Close closes any internal state and finallizes router resources so that nothing can start up again
|
||||||
func (r *Router) Close() error {
|
func (r *Router) Close() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Start starts router mainloop
|
||||||
|
func (r *Router) Start() {
|
||||||
|
if r.running {
|
||||||
|
log.WithFields(log.Fields{
|
||||||
|
"at": "(Router) Start",
|
||||||
|
"reason": "router is already running",
|
||||||
|
}).Error("Error Starting router")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
r.running = true
|
||||||
|
go r.mainloop()
|
||||||
|
}
|
||||||
|
|
||||||
// run i2p router mainloop
|
// run i2p router mainloop
|
||||||
func (r *Router) Run() {
|
func (r *Router) mainloop() {
|
||||||
r.ndb = netdb.StdNetDB(r.cfg.NetDb.Path)
|
r.ndb = netdb.StdNetDB(r.cfg.NetDb.Path)
|
||||||
// make sure the netdb is ready
|
// make sure the netdb is ready
|
||||||
err := r.ndb.Ensure()
|
err := r.ndb.Ensure()
|
||||||
@ -60,5 +78,6 @@ func (r *Router) Run() {
|
|||||||
"at": "(Router) Run",
|
"at": "(Router) Run",
|
||||||
"reason": err.Error(),
|
"reason": err.Error(),
|
||||||
}).Error("Netdb Startup failed")
|
}).Error("Netdb Startup failed")
|
||||||
|
r.Stop()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
4
main.go
4
main.go
@ -20,9 +20,9 @@ func main() {
|
|||||||
// TODO: graceful shutdown
|
// TODO: graceful shutdown
|
||||||
r.Stop()
|
r.Stop()
|
||||||
})
|
})
|
||||||
go r.Run()
|
r.Start()
|
||||||
defer r.Close()
|
|
||||||
r.Wait()
|
r.Wait()
|
||||||
|
r.Close()
|
||||||
} else {
|
} else {
|
||||||
log.Errorf("failed to create i2p router: %s", err)
|
log.Errorf("failed to create i2p router: %s", err)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user