diff --git a/src/inquirer/inquirer.go b/src/inquirer/inquirer.go index 8ec2c3a0c..a6485cd78 100644 --- a/src/inquirer/inquirer.go +++ b/src/inquirer/inquirer.go @@ -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) } } diff --git a/src/inquirer/registration/registration.go b/src/inquirer/registration/registration.go index d54e78494..48949bdde 100644 --- a/src/inquirer/registration/registration.go +++ b/src/inquirer/registration/registration.go @@ -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 diff --git a/src/loader/kyoto/Makefile b/src/loader/kyoto/Makefile new file mode 100644 index 000000000..cfb0ae812 --- /dev/null +++ b/src/loader/kyoto/Makefile @@ -0,0 +1,6 @@ +include $(GOROOT)/src/Make.inc + +TARG=kyoto_loader +GOFILES=kyoto_loader.go + +include $(GOROOT)/src/Make.cmd diff --git a/src/loader/kyoto/kyoto_loader b/src/loader/kyoto/kyoto_loader new file mode 100755 index 000000000..186103a2e Binary files /dev/null and b/src/loader/kyoto/kyoto_loader differ diff --git a/src/loader/kyoto/kyoto_loader.go b/src/loader/kyoto/kyoto_loader.go new file mode 100644 index 000000000..acb2a37ae --- /dev/null +++ b/src/loader/kyoto/kyoto_loader.go @@ -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!") +} + diff --git a/src/loader/redis/Makefile b/src/loader/redis/Makefile new file mode 100644 index 000000000..0ba0c40a8 --- /dev/null +++ b/src/loader/redis/Makefile @@ -0,0 +1,6 @@ +include $(GOROOT)/src/Make.inc + +TARG=redis_loader +GOFILES=redis_loader.go + +include $(GOROOT)/src/Make.cmd diff --git a/src/loader/redis/redis_loader b/src/loader/redis/redis_loader new file mode 100755 index 000000000..5309355b5 Binary files /dev/null and b/src/loader/redis/redis_loader differ diff --git a/src/loader/redis/redis_loader.go b/src/loader/redis/redis_loader.go new file mode 100644 index 000000000..546457d78 --- /dev/null +++ b/src/loader/redis/redis_loader.go @@ -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!") +} diff --git a/src/rater/Makefile b/src/rater/Makefile index 211f7241b..f22328f21 100644 --- a/src/rater/Makefile +++ b/src/rater/Makefile @@ -6,5 +6,6 @@ GOFILES=\ registration/registration.go\ storage/interface.go\ storage/kyoto_storage.go\ + storage/redis_storage.go\ include $(GOROOT)/src/Make.cmd diff --git a/src/rater/rater.go b/src/rater/rater.go index 720108832..8f1ccc50e 100644 --- a/src/rater/rater.go +++ b/src/rater/rater.go @@ -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) diff --git a/src/rater/storage.kch b/src/rater/storage.kch new file mode 100644 index 000000000..64541140e Binary files /dev/null and b/src/rater/storage.kch differ diff --git a/src/rater/storage/interface.go b/src/rater/storage/interface.go index 43214e274..e4f0ad6cd 100644 --- a/src/rater/storage/interface.go +++ b/src/rater/storage/interface.go @@ -1,7 +1,6 @@ package main type StorageGetter interface { - Open(string) error Close() Get(key string) (string, error) } diff --git a/src/rater/storage/kyoto_storage.go b/src/rater/storage/kyoto_storage.go index eecccba5b..0c313842d 100644 --- a/src/rater/storage/kyoto_storage.go +++ b/src/rater/storage/kyoto_storage.go @@ -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() } diff --git a/src/rater/storage/redis_storage.go b/src/rater/storage/redis_storage.go index b1833b55c..55acc80db 100644 --- a/src/rater/storage/redis_storage.go +++ b/src/rater/storage/redis_storage.go @@ -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 +}