Merge branch 'appinstance-cleanup' of dan/libricochet-go into master
This commit is contained in:
commit
c1907d5a9f
|
@ -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) {
|
||||
|
|
Reference in New Issue