mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 10:06:24 +05:00
implemented kyoto cabinet storage
This commit is contained in:
17
.project
17
.project
@@ -1,17 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>cgrates</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>com.googlecode.goclipse.goBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>goclipse.goNature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
@@ -20,12 +20,11 @@ func handler(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
func callRater() {
|
||||
var reply float64
|
||||
arg := 9.0
|
||||
var reply string
|
||||
err := errors.New("") //not nil value
|
||||
for err != nil {
|
||||
client:= <-raterList.Balancer
|
||||
err = client.Call("Sumer.Square", arg, &reply)
|
||||
err = client.Call("Storage.Get", "test", &reply)
|
||||
if err != nil {
|
||||
log.Print("Got en error from rater... recovering")
|
||||
}
|
||||
|
||||
19
src/loader/kyoto_loader.go
Normal file
19
src/loader/kyoto_loader.go
Normal file
@@ -0,0 +1,19 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/fsouza/gokabinet/kc"
|
||||
"flag"
|
||||
)
|
||||
|
||||
var (
|
||||
fileName = flag.String("fileName", "storage.kch", "kyoto storage file")
|
||||
)
|
||||
func main() {
|
||||
flag.Parse()
|
||||
db, _ := kc.Open(*fileName, kc.WRITE)
|
||||
defer db.Close()
|
||||
|
||||
db.SetInt("test", 12121))
|
||||
}
|
||||
|
||||
@@ -4,5 +4,7 @@ TARG=rater
|
||||
GOFILES=\
|
||||
rater.go\
|
||||
registration/registration.go\
|
||||
storage/interface.go\
|
||||
storage/kyoto_storage.go\
|
||||
|
||||
include $(GOROOT)/src/Make.cmd
|
||||
|
||||
@@ -3,7 +3,6 @@ package main
|
||||
import (
|
||||
"flag"
|
||||
"log"
|
||||
"math"
|
||||
"net"
|
||||
"net/rpc"
|
||||
"os"
|
||||
@@ -12,19 +11,29 @@ import (
|
||||
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")
|
||||
storage Storage
|
||||
)
|
||||
|
||||
type Sumer int
|
||||
|
||||
func (t *Sumer) Square(n float64, reply *float64) error {
|
||||
*reply = math.Sqrt(n)
|
||||
return nil
|
||||
type Storage struct {
|
||||
sg StorageGetter
|
||||
}
|
||||
|
||||
func main() {
|
||||
func NewStorage(nsg StorageGetter) *Storage{
|
||||
s := &Storage{sg: nsg}
|
||||
s.sg.Open("storage.kch")
|
||||
return s
|
||||
}
|
||||
|
||||
func (s *Storage) Get(args string, reply *string) (err error) {
|
||||
*reply, err = s.sg.Get(args)
|
||||
return err
|
||||
}
|
||||
|
||||
func main() {
|
||||
flag.Parse()
|
||||
arith := new(Sumer)
|
||||
rpc.Register(arith)
|
||||
kyoto := KyotoStorage{}
|
||||
storage := NewStorage(kyoto)
|
||||
rpc.Register(storage)
|
||||
rpc.HandleHTTP()
|
||||
go RegisterToServer(server, listen)
|
||||
go StopSingnalHandler(server, listen)
|
||||
|
||||
7
src/rater/storage/interface.go
Normal file
7
src/rater/storage/interface.go
Normal file
@@ -0,0 +1,7 @@
|
||||
package main
|
||||
|
||||
type StorageGetter interface {
|
||||
Open(string) error
|
||||
Close()
|
||||
Get(key string) (string, error)
|
||||
}
|
||||
24
src/rater/storage/kyoto_storage.go
Normal file
24
src/rater/storage/kyoto_storage.go
Normal file
@@ -0,0 +1,24 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"github.com/fsouza/gokabinet/kc"
|
||||
)
|
||||
|
||||
type KyotoStorage struct {
|
||||
db *kc.DB
|
||||
}
|
||||
|
||||
func (ks KyotoStorage) Open(fileName string) error {
|
||||
db, err := kc.Open(fileName, kc.READ)
|
||||
ks.db = db
|
||||
return err
|
||||
}
|
||||
|
||||
func (ks KyotoStorage) Close() {
|
||||
ks.db.Close()
|
||||
}
|
||||
|
||||
func (ks KyotoStorage) Get(key string) (value string, err error) {
|
||||
return ks.db.Get(key)
|
||||
}
|
||||
|
||||
7
src/rater/storage/redis_storage.go
Normal file
7
src/rater/storage/redis_storage.go
Normal file
@@ -0,0 +1,7 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user