mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 10:06:24 +05:00
unregistering from server
This commit is contained in:
@@ -25,6 +25,14 @@ func (rl *RaterList) RegisterRater(clientAddress string, replay *byte) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (rl *RaterList) UnRegisterRater(clientAddress string, replay *byte) error {
|
||||
client := rl.clients[clientAddress]
|
||||
client.Close()
|
||||
delete(rl.clients, clientAddress)
|
||||
log.Print(fmt.Sprintf("Server %v unregistered succesfully", clientAddress))
|
||||
return nil
|
||||
}
|
||||
|
||||
func handler(w http.ResponseWriter, r *http.Request) {
|
||||
fmt.Fprint(w, "<html><body><ol>")
|
||||
for addr, _ := range raterList.clients {
|
||||
|
||||
@@ -6,6 +6,9 @@ import (
|
||||
"math"
|
||||
"net"
|
||||
"net/rpc"
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -20,6 +23,31 @@ func (t *Sumer) Square(n float64, reply *float64) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func stopSingnalHandler() {
|
||||
sig := <-signal.Incoming
|
||||
if usig, ok := sig.(os.UnixSignal); ok {
|
||||
switch usig {
|
||||
case syscall.SIGTERM, syscall.SIGINT, syscall.SIGQUIT:
|
||||
log.Printf("Caught signal %v, unregistering from server\n", usig)
|
||||
unregisterFromServer()
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func unregisterFromServer() {
|
||||
client, err := rpc.DialHTTP("tcp", *server)
|
||||
if err != nil {
|
||||
log.Panic("Cannot register to server!")
|
||||
}
|
||||
var reply byte
|
||||
log.Print("Unregistering from server ", *server)
|
||||
client.Call("RaterList.UnRegisterRater", *listen, &reply)
|
||||
if err := client.Close(); err != nil {
|
||||
log.Panic("Could not close server unregistration!")
|
||||
}
|
||||
}
|
||||
|
||||
func registerToServer() {
|
||||
client, err := rpc.DialHTTP("tcp", *server)
|
||||
if err != nil {
|
||||
@@ -39,6 +67,7 @@ func main() {
|
||||
rpc.Register(arith)
|
||||
rpc.HandleHTTP()
|
||||
go registerToServer()
|
||||
go stopSingnalHandler()
|
||||
addr, err1 := net.ResolveTCPAddr("tcp", *listen)
|
||||
l, err2 := net.ListenTCP("tcp", addr)
|
||||
if err1 != nil || err2 != nil {
|
||||
|
||||
Reference in New Issue
Block a user