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