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.instances = append(ra.instances, rai)
|
||||||
ra.lock.Unlock()
|
ra.lock.Unlock()
|
||||||
rc.Process(rai)
|
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) {
|
func (ra *RicochetApplication) HandleApplicationInstance(rai *ApplicationInstance) {
|
||||||
|
@ -102,10 +119,16 @@ func (ra *RicochetApplication) Broadcast(do func(rai *ApplicationInstance)) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ra *RicochetApplication) Shutdown() {
|
func (ra *RicochetApplication) Shutdown() {
|
||||||
|
ra.lock.Lock()
|
||||||
ra.l.Close()
|
ra.l.Close()
|
||||||
for _, instance := range ra.instances {
|
for _, instance := range ra.instances {
|
||||||
instance.Connection.Conn.Close()
|
instance.Connection.Conn.Close()
|
||||||
}
|
}
|
||||||
|
ra.lock.Unlock()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ra *RicochetApplication) ConnectionCount() int {
|
||||||
|
return len(ra.instances)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ra *RicochetApplication) Run(l net.Listener) {
|
func (ra *RicochetApplication) Run(l net.Listener) {
|
||||||
|
|
Reference in New Issue