multiserver/end.go

60 lines
888 B
Go
Raw Normal View History

2021-01-24 05:00:26 -08:00
package main
import (
2021-03-29 09:57:30 -07:00
"bytes"
"log"
"os"
2021-01-09 03:26:30 -08:00
"time"
"github.com/anon55555/mt/rudp"
)
2021-01-17 12:43:23 -08:00
// End disconnects (from) all Peers and stops the process
func End(crash, reconnect bool) {
log.Print("Ending")
2021-01-09 03:26:30 -08:00
data := make([]byte, 7)
data[0] = uint8(0x00)
2021-01-14 10:06:40 -08:00
data[1] = uint8(ToClientAccessDenied)
if crash {
2021-01-14 10:06:40 -08:00
data[2] = uint8(AccessDeniedCrash)
} else {
2021-01-14 10:06:40 -08:00
data[2] = uint8(AccessDeniedShutdown)
}
data[3] = uint8(0x00)
data[4] = uint8(0x00)
if reconnect {
data[5] = uint8(0x01)
} else {
data[5] = uint8(0x00)
}
data[6] = uint8(0x00)
2021-01-09 03:26:30 -08:00
2021-03-29 09:57:30 -07:00
r := bytes.NewReader(data)
for _, clt := range Conns() {
_, err := clt.Send(rudp.Pkt{Reader: r})
if err != nil {
log.Print(err)
}
2021-01-09 03:26:30 -08:00
2021-01-13 12:48:42 -08:00
clt.Close()
}
2021-01-09 03:26:30 -08:00
2021-03-09 09:06:05 -08:00
rpcSrvMu.Lock()
for srv := range rpcSrvs {
srv.Close()
}
rpcSrvMu.Unlock()
time.Sleep(time.Second)
2021-01-09 03:26:30 -08:00
2021-03-06 11:33:25 -08:00
Announce(AnnounceDelete)
if crash {
os.Exit(1)
} else {
os.Exit(0)
}
}