Merge branch 'appinstance-cleanup' of dan/libricochet-go into master

This commit is contained in:
Sarah Jamie Lewis 2018-06-23 16:02:58 +00:00 committed by Gogs
commit c1907d5a9f
1 changed files with 23 additions and 0 deletions

View File

@ -53,6 +53,23 @@ func (ra *RicochetApplication) handleConnection(conn net.Conn) {
ra.instances = append(ra.instances, rai)
ra.lock.Unlock()
rc.Process(rai)
// rc.Process ends when the connection ends.
// Remove it from the application's list of instances
ra.lock.Lock()
for i, x := range ra.instances {
if x == rai {
if i == 0 {
ra.instances = ra.instances[1:]
} else if i == len(ra.instances)-1 {
ra.instances = ra.instances[:i-1]
} else {
ra.instances = append(ra.instances[:i-1], ra.instances[i+1:]...)
}
break
}
}
ra.lock.Unlock()
}
func (ra *RicochetApplication) HandleApplicationInstance(rai *ApplicationInstance) {
@ -102,10 +119,16 @@ func (ra *RicochetApplication) Broadcast(do func(rai *ApplicationInstance)) {
}
func (ra *RicochetApplication) Shutdown() {
ra.lock.Lock()
ra.l.Close()
for _, instance := range ra.instances {
instance.Connection.Conn.Close()
}
ra.lock.Unlock()
}
func (ra *RicochetApplication) ConnectionCount() int {
return len(ra.instances)
}
func (ra *RicochetApplication) Run(l net.Listener) {