enable single servers with cli/client
parent
aa1fdd367d
commit
f912272912
|
|
@ -3,30 +3,24 @@ package main
|
|||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"local/args"
|
||||
"log"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func main() {
|
||||
rConcernS, ok := os.LookupEnv("RCONCERN")
|
||||
if !ok {
|
||||
rConcernS = "1"
|
||||
}
|
||||
wConcernS, ok := os.LookupEnv("WCONCERN")
|
||||
if !ok {
|
||||
wConcernS = "1"
|
||||
}
|
||||
rConcern, err := strconv.Atoi(rConcernS)
|
||||
if err != nil {
|
||||
as := args.NewArgSet()
|
||||
as.Append(args.STRING, "addr", "csv addr(s) of server(s)", "http://localhost:21412")
|
||||
as.Append(args.INT, "r", "read concern", 1)
|
||||
as.Append(args.INT, "w", "write concern", 1)
|
||||
if err := as.Parse(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
wConcern, err := strconv.Atoi(wConcernS)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
client, err := New(rConcern, wConcern, strings.Split(os.Getenv("ADDR"), ",")...)
|
||||
rConcern := as.Get("r").GetInt()
|
||||
wConcern := as.Get("w").GetInt()
|
||||
addrs := as.Get("addr").GetString()
|
||||
client, err := New(rConcern, wConcern, strings.Split(addrs, ",")...)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
|
@ -48,6 +42,9 @@ func do(client *Client, line string) {
|
|||
}
|
||||
}()
|
||||
switch strings.ToLower(strings.Split(line, " ")[0]) {
|
||||
case "help":
|
||||
log.Printf("get key1")
|
||||
log.Printf("set key1 value value value...")
|
||||
case "get":
|
||||
get(client, line)
|
||||
case "set":
|
||||
|
|
|
|||
|
|
@ -88,7 +88,13 @@ func New(rConcern, wConcern int, addrs ...string) (*Client, error) {
|
|||
func (c *Client) scatterGather(key string, forEach func(addr string, each chan result), try, need int) ([]byte, error) {
|
||||
final := make(chan result)
|
||||
each := make(chan result)
|
||||
members, err := c.hash.GetClosestN([]byte(key), try)
|
||||
var members []consistent.Member
|
||||
var err error
|
||||
if try > 1 {
|
||||
members, err = c.hash.GetClosestN([]byte(key), try)
|
||||
} else {
|
||||
members = append(members, c.hash.LocateKey([]byte(key)))
|
||||
}
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,18 +1,29 @@
|
|||
package config
|
||||
|
||||
import (
|
||||
"local/args"
|
||||
"local/storage"
|
||||
"os"
|
||||
)
|
||||
|
||||
func New() error {
|
||||
as := args.NewArgSet()
|
||||
as.Append(args.STRING, "addr", "address/path to database/file", "")
|
||||
as.Append(args.STRING, "user", "username to database", "")
|
||||
as.Append(args.STRING, "pass", "password to database", "")
|
||||
as.Append(args.STRING, "port", "port to listen on", "21412")
|
||||
as.Append(args.STRING, "db", "database type code", storage.MAP.String())
|
||||
as.Append(args.STRING, "ns", "namespace", storage.DefaultNamespace)
|
||||
if err := as.Parse(); err != nil {
|
||||
return err
|
||||
}
|
||||
config = Config{
|
||||
db: orEnv(storage.MAP.String(), "DB", "DATABASE"),
|
||||
Addr: orEnv("", "ADDR", "FILE"),
|
||||
Username: orEnv("", "USER", "USERNAME"),
|
||||
Password: orEnv("", "PASS", "PASSWORD"),
|
||||
Port: orEnv("21412", "PORT", "LISTEN"),
|
||||
DefaultNamespace: orEnv(storage.DefaultNamespace, "NS", "NAMESPACE"),
|
||||
db: as.Get("db").GetString(),
|
||||
Addr: as.Get("addr").GetString(),
|
||||
Username: as.Get("user").GetString(),
|
||||
Password: as.Get("pass").GetString(),
|
||||
Port: as.Get("port").GetString(),
|
||||
DefaultNamespace: as.Get("ns").GetString(),
|
||||
}
|
||||
storage.DefaultNamespace = config.DefaultNamespace
|
||||
DB, err := storage.New(storage.TypeFromString(config.db), config.Addr, config.Username, config.Password)
|
||||
|
|
|
|||
Loading…
Reference in New Issue