integrated session manager in cgr-rater

This commit is contained in:
Radu Ioan Fericean
2012-05-10 13:42:20 +03:00
parent 9009aeede2
commit c4fe8a6c5f
3 changed files with 32 additions and 16 deletions

View File

@@ -28,22 +28,24 @@ import (
)
var (
balancer = flag.String("balancer", "127.0.0.1:2001", "balancer address host:port")
tor = flag.Int("tor", 0, "Type of record")
cstmid = flag.String("cstmid", "vdf", "Customer identificator")
subject = flag.String("subject", "rif", "The client who made the call")
dest = flag.String("dest", "0256", "Destination prefix")
ts = flag.String("ts", "2012-02-09T00:00:00Z", "Time start")
te = flag.String("te", "2012-02-09T00:10:00Z", "Time end")
amount = flag.Float64("amount", 100, "Amount for different operations")
server = flag.String("server", "127.0.0.1:2001", "server address host:port")
tor = flag.Int("tor", 0, "Type of record")
cstmid = flag.String("cstmid", "vdf", "Customer identificator")
subject = flag.String("subject", "rif", "The client who made the call")
dest = flag.String("dest", "0256", "Destination prefix")
ts = flag.String("ts", "2012-02-09T00:00:00Z", "Time start")
te = flag.String("te", "2012-02-09T00:10:00Z", "Time end")
amount = flag.Float64("amount", 100, "Amount for different operations")
)
func main() {
flag.Parse()
client, _ := jsonrpc.Dial("tcp", "localhost:2001")
client, err := jsonrpc.Dial("tcp", *server)
if err != nil {
log.Fatal("Could not connect to server " + *server)
}
defer client.Close()
var err error
timestart, err := time.Parse(time.RFC3339, *ts)
if err != nil {
log.Fatal("Time start format is invalid: ", err)

View File

@@ -21,6 +21,7 @@ package main
import (
"flag"
"fmt"
"github.com/rif/cgrates/sessionmanager"
"github.com/rif/cgrates/timespans"
"log"
"net"
@@ -31,10 +32,10 @@ import (
)
var (
balancer = flag.String("balancer", "127.0.0.1:2000", "balancer address host:port")
listen = flag.String("listen", "127.0.0.1:1234", "listening address host:port")
json = flag.Bool("json", false, "use json for rpc encoding")
storage Responder
balancer = flag.String("balancer", "127.0.0.1:2000", "balancer address host:port")
listen = flag.String("listen", "127.0.0.1:1234", "listening address host:port")
standalone = flag.Bool("standalone", false, "start standalone server (no balancer), and use json for rpc encoding")
storage Responder
)
type Responder struct {
@@ -146,7 +147,12 @@ func main() {
log.Printf("Cannot open storage: %v", err)
os.Exit(1)
}
if !*json {
if standalone {
sm = &sessionmanager.SessionManager{}
sm.Connect("localhost:8021", "ClueCon")
sm.SetSessionDelegate(new(DirectSessionDelegate))
sm.StartEventLoop()
} else {
go RegisterToServer(balancer, listen)
go StopSingnalHandler(balancer, listen, getter)
}
@@ -176,7 +182,7 @@ func main() {
continue
}
log.Printf("connection started: %v", conn.RemoteAddr())
if *json {
if *standalone {
log.Print("json encoding")
go jsonrpc.ServeConn(conn)
} else {

View File

@@ -46,6 +46,14 @@ func (sm *SessionManager) Connect(address, pass string) {
fmt.Fprint(conn, "event json all\n\n")
}
func (sm *SessionManager) StartEventLoop() {
go func() {
for {
sm.ReadNextEvent()
}
}()
}
func (sm *SessionManager) SetSessionDelegate(ed SessionDelegate) {
sm.sessionDelegate = ed
}