package androidSync
|
//package main
|
import (
|
sdb "basic.com/Android/syncdb.git"
|
"basic.com/valib/logger.git"
|
"encoding/json"
|
"github.com/hashicorp/memberlist"
|
"os"
|
"time"
|
)
|
|
const (
|
syncClusterKeyPrefix = "bjbasic123"
|
)
|
const (
|
defaultSqliteDBPath = "/sdcard/testdb.db"
|
|
dBNameCluster = "cluster"
|
dBNameClusterNode = "cluster_node"
|
dBNameTables = "dbTables"
|
dBNameTablePersons = "dbtablepersons"
|
)
|
|
var syncTables = []string{dBNameCluster, dBNameClusterNode, dBNameTables, dBNameTablePersons}
|
var agent *sdb.Agent
|
var members *memberlist.Memberlist
|
var sqliteDBPath string = defaultSqliteDBPath
|
|
func InitCluster() bool {
|
var logFile = "/sdcard/androidSync.log"
|
var logSaveDays = 15
|
logger.Config(logFile, logger.DebugLevel)
|
logger.SetSaveDays(logSaveDays)
|
err := sdb.InitDbConn(sqliteDBPath)
|
if err != nil{
|
logger.Error("sdb.InitDbConn ERROR: sqliteDBPath:", sqliteDBPath)
|
os.Exit(-1)
|
}
|
return true
|
}
|
|
func setDBPath(path string){
|
sqliteDBPath = path
|
}
|
|
func getDBPath() string {
|
return sqliteDBPath
|
}
|
|
func clearSearchResult(ml *memberlist.Memberlist) {
|
time.Sleep(10 * time.Second)
|
sdb.CloseSearchNode(ml)
|
}
|
|
func CreateSearchNodeByPwd(pwd string) bool{
|
|
pwdFull := syncClusterKeyPrefix + pwd
|
var err error
|
members, err = sdb.CreateSearchNode(pwdFull)
|
if err != nil {
|
logger.Error("sdb.CreateSearchNode:", err)
|
return false
|
}
|
|
go clearSearchResult(members)
|
|
return true
|
}
|
|
|
func createSearchNode(key string) bool {
|
var err error
|
members, err = sdb.CreateSearchNode(key)
|
if err != nil {
|
logger.Error("sdb.CreateSearchNode:", err)
|
return false
|
}
|
|
return true
|
}
|
|
|
func createSearchNodeWhitClose(key string, delay int) []byte {
|
nodes := sdb.CreateSearchNodeWhitClose(key, time.Duration(delay))
|
strNodes, err := json.Marshal(nodes)
|
if err != nil {
|
logger.Error("json.Marshal:", err)
|
return nil
|
}
|
return strNodes
|
}
|
|
|
func CloseSearchNode() bool {
|
err := sdb.CloseSearchNode(members)
|
if err != nil {
|
logger.Error("sdb.CloseSearchNode:", err)
|
return false
|
}
|
return true
|
}
|
|
func GetSearchNodes() []byte {
|
nodes := sdb.GetSearchNodes()
|
strNodes, err := json.Marshal(nodes)
|
if err != nil {
|
logger.Error("json.Marshal:", err)
|
return nil
|
}
|
return strNodes
|
}
|