mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 10:06:24 +05:00
tcp listener
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,3 +1,4 @@
|
||||
*.a
|
||||
*.6
|
||||
bin/*
|
||||
bin
|
||||
.settings
|
||||
|
||||
@@ -3,8 +3,8 @@ package main
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"net/rpc"
|
||||
"net/http"
|
||||
"net/rpc"
|
||||
"time"
|
||||
)
|
||||
|
||||
@@ -16,10 +16,10 @@ var raterList *RaterList
|
||||
|
||||
func (rl *RaterList) RegisterRater(clientAddress string, replay *byte) error {
|
||||
time.Sleep(1 * time.Second) // wait a second for Rater to start serving
|
||||
client, err := rpc.DialHTTP("tcp", clientAddress)
|
||||
client, err := rpc.Dial("tcp", clientAddress)
|
||||
if err != nil {
|
||||
log.Panic("Could not connect to client!")
|
||||
}
|
||||
}
|
||||
rl.clients[clientAddress] = client
|
||||
log.Print(fmt.Sprintf("Server %v registered succesfully", clientAddress))
|
||||
return nil
|
||||
@@ -33,26 +33,26 @@ func handler(w http.ResponseWriter, r *http.Request) {
|
||||
fmt.Fprint(w, "</ol></body></html>")
|
||||
}
|
||||
|
||||
func callRater(rl *RaterList){
|
||||
func callRater(rl *RaterList) {
|
||||
var reply float64
|
||||
arg := 9.0
|
||||
|
||||
log.Print("Starting client polling.")
|
||||
for{
|
||||
for addr,client := range rl.clients {
|
||||
for {
|
||||
for addr, client := range rl.clients {
|
||||
err := client.Call("Sumer.Square", arg, &reply)
|
||||
if err != nil {
|
||||
log.Print("Closing client!")
|
||||
delete(rl.clients, addr)
|
||||
}
|
||||
fmt.Println(fmt.Sprintf("Result from rater(%v): %v", addr, reply))
|
||||
fmt.Println(fmt.Sprintf("Result from rater(%v): %v", addr, reply))
|
||||
}
|
||||
time.Sleep(5 * time.Second)
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
raterList = &RaterList{clients: make(map[string] *rpc.Client)}
|
||||
raterList = &RaterList{clients: make(map[string]*rpc.Client)}
|
||||
go callRater(raterList)
|
||||
rpc.Register(raterList)
|
||||
rpc.HandleHTTP()
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"net/rpc"
|
||||
"net/http"
|
||||
"math"
|
||||
"log"
|
||||
"flag"
|
||||
"log"
|
||||
"math"
|
||||
"net"
|
||||
"net/rpc"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -20,14 +20,14 @@ func (t *Sumer) Square(n float64, reply *float64) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func registerToServer(){
|
||||
client,err := rpc.DialHTTP("tcp", *server)
|
||||
func registerToServer() {
|
||||
client, err := rpc.DialHTTP("tcp", *server)
|
||||
if err != nil {
|
||||
log.Panic("Cannot register to server!")
|
||||
}
|
||||
var reply byte
|
||||
var reply byte
|
||||
log.Print("Registering to server ", *server)
|
||||
client.Call("RaterList.RegisterRater", *listen, &reply)
|
||||
client.Call("RaterList.RegisterRater", *listen, &reply)
|
||||
if err := client.Close(); err != nil {
|
||||
log.Panic("Could not close server registration!")
|
||||
}
|
||||
@@ -39,5 +39,10 @@ func main() {
|
||||
rpc.Register(arith)
|
||||
rpc.HandleHTTP()
|
||||
go registerToServer()
|
||||
http.ListenAndServe(*listen, nil)
|
||||
}
|
||||
addr, err1 := net.ResolveTCPAddr("tcp", *listen)
|
||||
l, err2 := net.ListenTCP("tcp", addr)
|
||||
if err1 != nil || err2 != nil {
|
||||
log.Panic("cannot create listener for specified address ", *listen)
|
||||
}
|
||||
rpc.Accept(l)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user