Make it possible to request stop of message loop

Add a `RequestStopMessageLoop()` method to `Ricochet` to be able to
stop handling new connections. Right now, ProcessMessages is an infinite
loop.
This commit is contained in:
Wladimir J. van der Laan 2016-11-03 17:30:16 +01:00
parent f2788c929f
commit c16dce9f60
1 changed files with 9 additions and 0 deletions

View File

@ -93,10 +93,19 @@ func (r *Ricochet) processNewConnection(conn net.Conn, service RicochetService)
func (r *Ricochet) ProcessMessages(service RicochetService) { func (r *Ricochet) ProcessMessages(service RicochetService) {
for { for {
oc := <-r.newconns oc := <-r.newconns
if oc == nil {
return
}
go r.processConnection(oc, service) go r.processConnection(oc, service)
} }
} }
// Request that the ProcessMessages loop is stopped after handling all currently
// queued new connections.
func (r *Ricochet) RequestStopMessageLoop() {
r.newconns <- nil
}
// ProcessConnection starts a blocking process loop which continually waits for // ProcessConnection starts a blocking process loop which continually waits for
// new messages to arrive from the connection and uses the given RicochetService // new messages to arrive from the connection and uses the given RicochetService
// to process them. // to process them.