diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000..ff1d75af0
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+*.a
+*.6
+bin/*
\ No newline at end of file
diff --git a/src/cmd/cgrates.go b/src/cmd/cgrates.go
deleted file mode 100644
index c1433c983..000000000
--- a/src/cmd/cgrates.go
+++ /dev/null
@@ -1,17 +0,0 @@
-package main
-
-import (
- "flag"
- "fmt"
- "log"
-)
-
-var (
- host = flag.String("host", "localhost:8080", "target host:port")
-)
-
-func main() {
- flag.Parse()
- fmt.Println(*host)
- log.Print("Bye!")
-}
diff --git a/src/cmd/inquirer.go b/src/cmd/inquirer.go
new file mode 100644
index 000000000..d4a234e83
--- /dev/null
+++ b/src/cmd/inquirer.go
@@ -0,0 +1,62 @@
+package main
+
+import (
+ "fmt"
+ "log"
+ "net/rpc"
+ "net/http"
+ "time"
+)
+
+type RaterList struct {
+ clients map[string]*rpc.Client
+}
+
+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)
+ 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
+}
+
+func handler(w http.ResponseWriter, r *http.Request) {
+ fmt.Fprint(w, "
")
+ for addr, _ := range raterList.clients {
+ fmt.Fprint(w, fmt.Sprintf("- %s
", addr))
+ }
+ fmt.Fprint(w, "
")
+}
+
+func callRater(rl *RaterList){
+ var reply float64
+ arg := 9.0
+
+ log.Print("Starting client polling.")
+ 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))
+ }
+ time.Sleep(5 * time.Second)
+ }
+}
+
+func main() {
+ raterList = &RaterList{clients: make(map[string] *rpc.Client)}
+ go callRater(raterList)
+ rpc.Register(raterList)
+ rpc.HandleHTTP()
+ http.HandleFunc("/", handler)
+ log.Print("The server is listening...")
+ http.ListenAndServe(":2000", nil)
+}
diff --git a/src/cmd/rater.go b/src/cmd/rater.go
new file mode 100644
index 000000000..fbae1a67d
--- /dev/null
+++ b/src/cmd/rater.go
@@ -0,0 +1,43 @@
+package main
+
+import (
+ "net/rpc"
+ "net/http"
+ "math"
+ "log"
+ "flag"
+)
+
+var (
+ server = flag.String("server", "127.0.0.1:2000", "target host:port")
+ listen = flag.String("listen", "127.0.0.1:1234", "target host:port")
+)
+
+type Sumer int
+
+func (t *Sumer) Square(n float64, reply *float64) error {
+ *reply = math.Sqrt(n)
+ return nil
+}
+
+func registerToServer(){
+ client,err := rpc.DialHTTP("tcp", *server)
+ if err != nil {
+ log.Panic("Cannot register to server!")
+ }
+ var reply byte
+ log.Print("Registering to server ", *server)
+ client.Call("RaterList.RegisterRater", *listen, &reply)
+ if err := client.Close(); err != nil {
+ log.Panic("Could not close server registration!")
+ }
+}
+
+func main() {
+ flag.Parse()
+ arith := new(Sumer)
+ rpc.Register(arith)
+ rpc.HandleHTTP()
+ go registerToServer()
+ http.ListenAndServe(*listen, nil)
+}
\ No newline at end of file