mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 10:06:24 +05:00
redis storage implemented
This commit is contained in:
@@ -26,7 +26,7 @@ func callRater() {
|
||||
client:= <-raterList.Balancer
|
||||
err = client.Call("Storage.Get", "test", &reply)
|
||||
if err != nil {
|
||||
log.Print("Got en error from rater... recovering")
|
||||
log.Printf("Got en error from rater: %v", err)
|
||||
}
|
||||
}
|
||||
fmt.Println(fmt.Sprintf("Result: %v", reply))
|
||||
@@ -34,7 +34,7 @@ func callRater() {
|
||||
|
||||
func testCallRater(){
|
||||
for {
|
||||
go callRater()
|
||||
callRater()
|
||||
time.Sleep(1 * time.Second)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,7 +54,6 @@ func (rl *RaterList) startBalance() {
|
||||
go func(){
|
||||
for {
|
||||
rl.balancer_mutex.Lock()
|
||||
log.Print("balancing")
|
||||
for addr, client := range rl.Clients {
|
||||
log.Printf("using server %s:", addr)
|
||||
rl.Balancer <- client
|
||||
|
||||
6
src/loader/kyoto/Makefile
Normal file
6
src/loader/kyoto/Makefile
Normal file
@@ -0,0 +1,6 @@
|
||||
include $(GOROOT)/src/Make.inc
|
||||
|
||||
TARG=kyoto_loader
|
||||
GOFILES=kyoto_loader.go
|
||||
|
||||
include $(GOROOT)/src/Make.cmd
|
||||
BIN
src/loader/kyoto/kyoto_loader
Executable file
BIN
src/loader/kyoto/kyoto_loader
Executable file
Binary file not shown.
20
src/loader/kyoto/kyoto_loader.go
Normal file
20
src/loader/kyoto/kyoto_loader.go
Normal file
@@ -0,0 +1,20 @@
|
||||
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.Set("test", "12223")
|
||||
fmt.Println("Done!")
|
||||
}
|
||||
|
||||
6
src/loader/redis/Makefile
Normal file
6
src/loader/redis/Makefile
Normal file
@@ -0,0 +1,6 @@
|
||||
include $(GOROOT)/src/Make.inc
|
||||
|
||||
TARG=redis_loader
|
||||
GOFILES=redis_loader.go
|
||||
|
||||
include $(GOROOT)/src/Make.cmd
|
||||
BIN
src/loader/redis/redis_loader
Executable file
BIN
src/loader/redis/redis_loader
Executable file
Binary file not shown.
12
src/loader/redis/redis_loader.go
Normal file
12
src/loader/redis/redis_loader.go
Normal file
@@ -0,0 +1,12 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/simonz05/godis"
|
||||
)
|
||||
|
||||
func main() {
|
||||
r := godis.New("", 10, "")
|
||||
r.Set("test", 12224)
|
||||
fmt.Println("Done!")
|
||||
}
|
||||
@@ -6,5 +6,6 @@ GOFILES=\
|
||||
registration/registration.go\
|
||||
storage/interface.go\
|
||||
storage/kyoto_storage.go\
|
||||
storage/redis_storage.go\
|
||||
|
||||
include $(GOROOT)/src/Make.cmd
|
||||
|
||||
@@ -19,9 +19,7 @@ type Storage struct {
|
||||
}
|
||||
|
||||
func NewStorage(nsg StorageGetter) *Storage{
|
||||
s := &Storage{sg: nsg}
|
||||
s.sg.Open("storage.kch")
|
||||
return s
|
||||
return &Storage{sg: nsg}
|
||||
}
|
||||
|
||||
func (s *Storage) Get(args string, reply *string) (err error) {
|
||||
@@ -31,8 +29,15 @@ func (s *Storage) Get(args string, reply *string) (err error) {
|
||||
|
||||
func main() {
|
||||
flag.Parse()
|
||||
kyoto := KyotoStorage{}
|
||||
storage := NewStorage(kyoto)
|
||||
//getter, err := NewKyotoStorage("storage.kch")
|
||||
//defer getter.Close()
|
||||
getter, err := NewRedisStorage("tcp:127.0.0.1:6379")
|
||||
defer getter.Close()
|
||||
if err != nil {
|
||||
log.Printf("Cannot open storage file: %v", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
storage := NewStorage(getter)
|
||||
rpc.Register(storage)
|
||||
rpc.HandleHTTP()
|
||||
go RegisterToServer(server, listen)
|
||||
|
||||
BIN
src/rater/storage.kch
Normal file
BIN
src/rater/storage.kch
Normal file
Binary file not shown.
@@ -1,7 +1,6 @@
|
||||
package main
|
||||
|
||||
type StorageGetter interface {
|
||||
Open(string) error
|
||||
Close()
|
||||
Get(key string) (string, error)
|
||||
}
|
||||
|
||||
@@ -8,12 +8,12 @@ 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 NewKyotoStorage(filaName string) (KyotoStorage, error) {
|
||||
ndb, err := kc.Open(filaName, kc.READ)
|
||||
return KyotoStorage{db: ndb}, err
|
||||
}
|
||||
|
||||
|
||||
func (ks KyotoStorage) Close() {
|
||||
ks.db.Close()
|
||||
}
|
||||
|
||||
@@ -1,7 +1,25 @@
|
||||
package main
|
||||
package main
|
||||
|
||||
import (
|
||||
|
||||
"github.com/simonz05/godis"
|
||||
)
|
||||
|
||||
type RedisStorage struct {
|
||||
db *godis.Client
|
||||
}
|
||||
|
||||
func NewRedisStorage(address string) (RedisStorage, error) {
|
||||
ndb:= godis.New(address, 10, "")
|
||||
return RedisStorage{db: ndb}, nil
|
||||
}
|
||||
|
||||
|
||||
func (rs RedisStorage) Close() {
|
||||
rs.db.Quit()
|
||||
}
|
||||
|
||||
func (rs RedisStorage) Get(key string) (string, error) {
|
||||
elem, err := rs.db.Get(key)
|
||||
return elem.String(), err
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user