liuxiaolong
2020-05-13 920190f5d718f16293b5ea522f359de82319cc03
cluster.go
@@ -1,5 +1,5 @@
package androidSync
//package main
import (
   sdb "basic.com/Android/syncdb.git"
   "basic.com/valib/logger.git"
@@ -13,22 +13,26 @@
   syncClusterKeyPrefix = "bjbasic123"
)
const (
   defaultSqliteDBPath = "./testdb.db"
   defaultSqliteDBPath = "/sdcard/testdb.db"
   dBNameCluster      = "cluster"
   dBNameClusterNode  = "cluster_node"
   dBNameTables       = "dbTables"
   dBNameTablePersons = "dbtablepersons"
   dbNameOrg = "org"
   dbNamePerson = "person"
   dbNamePersonCameraImagePath = "person_camera_image_path"
   dbNamePersonIdentity = "person_identity"
)
var syncTables = []string{dBNameCluster, dBNameClusterNode, dBNameTables, dBNameTablePersons}
var syncTables = []string{ dBNameClusterNode, dBNameCluster, dBNameTablePersons, dBNameTables, dbNameOrg, dbNamePersonCameraImagePath, dbNamePersonIdentity, dbNamePerson }
var agent *sdb.Agent
var members *memberlist.Memberlist
var sqliteDBPath string = defaultSqliteDBPath
func init(){
   var logFile = "./logger/androidSync.log"
   var logSaveDays = 15   // 日志初始化
func InitCluster() bool {
   var logFile = "/sdcard/androidSync.log"
   var logSaveDays = 15
   logger.Config(logFile, logger.DebugLevel)
   logger.SetSaveDays(logSaveDays)
   err := sdb.InitDbConn(sqliteDBPath)
@@ -36,18 +40,13 @@
      logger.Error("sdb.InitDbConn ERROR: sqliteDBPath:", sqliteDBPath)
      os.Exit(-1)
   }
   return true
}
/*
   设置数据库路径
 */
func setDBPath(path string){
   sqliteDBPath = path
}
/*
   获取数据库路径
*/
func getDBPath() string {
   return sqliteDBPath
}
@@ -57,12 +56,6 @@
   sdb.CloseSearchNode(ml)
}
/*
   创建查询集群的临时节点,需要传入集群密码,6字节,数字或字母
   每个一秒调用一次GetSearchNodes,拿到搜索到的节点信息数据
   最后调用CloseSearchNode,关闭临时创建的搜索节点
   pwd = password must six bytes
*/
func CreateSearchNodeByPwd(pwd string) bool{
   pwdFull := syncClusterKeyPrefix + pwd
@@ -78,10 +71,7 @@
   return true
}
/*
   创建查询集群的临时节点,需要传入集群密码,16字节
   key = password
*/
func createSearchNode(key string) bool {
   var err error
   members, err = sdb.CreateSearchNode(key)
@@ -93,11 +83,7 @@
   return true
}
/*
   阻塞方式创建搜索集群的节点,会直接返回搜索到的节点
   map[string]NodeInfo
   nodes[NodeInfo.NodeID] = NodeInfo
 */
func createSearchNodeWhitClose(key string, delay int) []byte {
   nodes := sdb.CreateSearchNodeWhitClose(key, time.Duration(delay))
   strNodes, err := json.Marshal(nodes)
@@ -108,9 +94,7 @@
   return strNodes
}
/*
   关闭临时创建的节点
*/
func CloseSearchNode() bool {
   err := sdb.CloseSearchNode(members)
   if err != nil {
@@ -120,22 +104,6 @@
   return true
}
/*
   获取搜索到的节点信息
json vector
[
{Node1},
{Node2},
...
{Noden}
]
type NodeInfo struct {
   ClusterID   string `json:"clusterID"`
   NodeID      string `json:"nodeID"`
   NodeAddress string `json:"nodeAddress"`
   IsAlive     int    `json:"isAlive"`  //StatusNone:0, StatusAlive:1, StatusLeaving:2, StatusLeft:3, StatusFailed:4
}
*/
func GetSearchNodes() []byte {
   nodes := sdb.GetSearchNodes()
   strNodes, err := json.Marshal(nodes)
@@ -145,3 +113,12 @@
   }
   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;
}