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" dbNameOrg = "org" dbNamePerson = "person" dbNamePersonIdentity = "person_identity" ) var syncTables = []string{ dBNameClusterNode, dBNameCluster, dBNameTablePersons, dBNameTables, dbNameOrg, dbNamePersonIdentity, dbNamePerson } 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 } func GetClusters(key string) []byte { clusters := sdb.CreateSearchNodeWhitClose(key, 2*time.Second); clustersJson, err := json.Marshal(clusters) if err != nil { logger.Error("json.Marshal:", err) return nil } return clustersJson; }