package syncdb
|
|
import (
|
"fmt"
|
"io/ioutil"
|
"log"
|
"os"
|
"strings"
|
|
"basic.com/pubsub/syncdb.git/command/agent"
|
|
sdb "basic.com/pubsub/syncdb.git/db"
|
|
"github.com/hashicorp/serf/serf"
|
"github.com/mitchellh/cli"
|
)
|
|
func Doquery() {
|
//members: get name of first member
|
serfins := agent.OAgent.Serf()
|
raw := serfins.Members()
|
var specmembername string
|
for _, m := range raw {
|
if m.Addr.String() != agent.OAgent.SerfConfig().MemberlistConfig.BindAddr {
|
specmembername = m.Name
|
break
|
}
|
}
|
fmt.Println(specmembername)
|
|
//query: get db file.
|
params := serf.QueryParam{
|
FilterNodes: strings.Fields(specmembername),
|
}
|
|
resp, err := agent.OAgent.Query("109node", []byte("get db file"), ¶ms)
|
if err == nil || !strings.Contains(err.Error(), "cannot contain") {
|
fmt.Println("err: ", err)
|
}
|
|
go func() {
|
respCh := resp.ResponseCh()
|
for {
|
select {
|
case r := <-respCh:
|
|
fmt.Println("x length is: ", len(r.Payload))
|
|
// // byte to file.
|
sdb.Dbconn.Close()
|
sdb.Dbconn = nil
|
err = ioutil.WriteFile("test.db", r.Payload, 0644)
|
if err != nil {
|
fmt.Println("query byte to file error!", err)
|
}
|
err := sdb.GetConn()
|
if err != nil {
|
fmt.Println("create db conn of test.db error: ", err)
|
}
|
return
|
}
|
}
|
}()
|
}
|
|
func Doevent() {
|
// event : use to send command to operate db.
|
err := agent.OAgent.UserEvent("109node", []byte("CREATE TABLE foo (id INTEGER NOT NULL PRIMARY KEY, name TEXT)"), false)
|
if err == nil || !strings.Contains(err.Error(), "cannot contain") {
|
fmt.Println("err: ", err)
|
}
|
}
|
|
func Init() {
|
log.SetOutput(ioutil.Discard)
|
|
// Get the command line args. We shortcut "--version" and "-v" to
|
// just show the version.
|
args := os.Args[1:]
|
for _, arg := range args {
|
if arg == "-v" || arg == "--version" {
|
newArgs := make([]string, len(args)+1)
|
newArgs[0] = "version"
|
copy(newArgs[1:], args)
|
args = newArgs
|
break
|
}
|
}
|
|
go func() {
|
cli := &cli.CLI{
|
Args: args,
|
Commands: Commands,
|
HelpFunc: cli.BasicHelpFunc("serf"),
|
}
|
|
exitCode, err := cli.Run()
|
if err != nil {
|
fmt.Fprintf(os.Stderr, "Error executing CLI: %s\n", err.Error())
|
os.Exit(1)
|
}
|
|
fmt.Println("================ run over ======================")
|
|
os.Exit(exitCode)
|
}()
|
}
|