修改:简化工程包结构
git-svn-id: svn://47.119.165.148/zhub@132 e63fbceb-bcc3-4977-ac22-735b83d8d0f4
This commit is contained in:
79
zsub/config.go
Normal file
79
zsub/config.go
Normal file
@@ -0,0 +1,79 @@
|
||||
package zsub
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"io"
|
||||
"log"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var (
|
||||
config = make(map[string]string)
|
||||
LogDebug bool
|
||||
DataDir = ""
|
||||
)
|
||||
|
||||
func LoadConf(path string) {
|
||||
f, err := os.Open(path)
|
||||
if err != nil {
|
||||
log.Panicln(err)
|
||||
}
|
||||
|
||||
reader := bufio.NewReader(f)
|
||||
space := ""
|
||||
for {
|
||||
bytes, err := reader.ReadBytes('\n')
|
||||
if err == io.EOF {
|
||||
break
|
||||
}
|
||||
line := string(bytes)
|
||||
line = strings.Trim(line, " \r\n")
|
||||
if len(line) == 0 {
|
||||
continue
|
||||
}
|
||||
if strings.Contains(line, "#") {
|
||||
line = line[0:strings.Index(line, "#")]
|
||||
}
|
||||
|
||||
switch {
|
||||
case strings.EqualFold(line, ""):
|
||||
case strings.Index(line, "[") == 0 && strings.Index(line, "]") > 0:
|
||||
space = line[1:strings.Index(line, "]")]
|
||||
space = strings.Trim(space, " ")
|
||||
case strings.Index(line, "=") > 0:
|
||||
arr := strings.Split(line, "=")
|
||||
if len(arr) < 2 {
|
||||
continue
|
||||
}
|
||||
|
||||
config[space+"."+strings.Trim(arr[0], " ")] = strings.Trim(arr[1], " ")
|
||||
default:
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
LogDebug = strings.EqualFold(config["log.level"], "debug")
|
||||
DataDir = GetStr("data.dir", "data")
|
||||
os.MkdirAll(DataDir, os.ModeDir)
|
||||
}
|
||||
|
||||
func GetStr(key string, def string) string {
|
||||
if len(config[key]) == 0 {
|
||||
return def
|
||||
}
|
||||
return config[key]
|
||||
}
|
||||
|
||||
func GetInt(key string, def int) int {
|
||||
if len(config[key]) == 0 {
|
||||
return def
|
||||
}
|
||||
n, err := strconv.Atoi(config[key])
|
||||
if err != nil {
|
||||
log.Println(err, "return def;")
|
||||
return def
|
||||
}
|
||||
return n
|
||||
}
|
||||
61
zsub/monitor.go
Normal file
61
zsub/monitor.go
Normal file
@@ -0,0 +1,61 @@
|
||||
package zsub
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"os"
|
||||
"path"
|
||||
)
|
||||
|
||||
func init() {
|
||||
// 1.日志文件 定期分割归档
|
||||
|
||||
}
|
||||
|
||||
func StartHttp() {
|
||||
dir, _ := os.Getwd()
|
||||
webDir := path.Join(dir, "/public")
|
||||
|
||||
http.Handle("/", http.FileServer(http.Dir(webDir)))
|
||||
http.HandleFunc("/info", info)
|
||||
http.HandleFunc("/cleanup", cleanup)
|
||||
http.HandleFunc("/retimer", retimer)
|
||||
http.HandleFunc("/topic/publish", publish)
|
||||
|
||||
http.ListenAndServe(":1217", nil)
|
||||
}
|
||||
|
||||
func publish(w http.ResponseWriter, r *http.Request) {
|
||||
topic := r.FormValue("topic")
|
||||
value := r.FormValue("value")
|
||||
zsub.Publish(topic, value)
|
||||
renderJson(w, "+ok")
|
||||
}
|
||||
|
||||
// retimer 重载定时调度
|
||||
func retimer(w http.ResponseWriter, r *http.Request) {
|
||||
zsub.ReloadTimer()
|
||||
renderJson(w, "+reload timer ok")
|
||||
}
|
||||
|
||||
func cleanup(w http.ResponseWriter, r *http.Request) {
|
||||
zsub.Clearup()
|
||||
renderJson(w, "+OK")
|
||||
}
|
||||
|
||||
func info(w http.ResponseWriter, r *http.Request) {
|
||||
info := Info()
|
||||
renderJson(w, info)
|
||||
}
|
||||
|
||||
func renderJson(w http.ResponseWriter, d interface{}) {
|
||||
var bytes []byte
|
||||
|
||||
if str, ok := d.(string); ok {
|
||||
bytes = []byte(str)
|
||||
} else {
|
||||
bytes, _ = json.Marshal(d)
|
||||
w.Header().Set("content-type", "application/json; charset=utf-8;")
|
||||
}
|
||||
w.Write(bytes)
|
||||
}
|
||||
@@ -6,7 +6,6 @@ import (
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
"zhub/conf"
|
||||
)
|
||||
|
||||
var funChan = make(chan func(), 1000)
|
||||
@@ -30,7 +29,7 @@ func msgAccept(v Message) {
|
||||
return
|
||||
}
|
||||
|
||||
if conf.LogDebug {
|
||||
if LogDebug {
|
||||
log.Println("[", v.Conn.sn, "] rcmd: "+strings.Join(rcmd, " "))
|
||||
}
|
||||
|
||||
|
||||
23
zsub/zdb.go
23
zsub/zdb.go
@@ -10,7 +10,6 @@ import (
|
||||
"strings"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
"zhub/conf"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -50,11 +49,11 @@ func (s *ZSub) dataStorage() {
|
||||
s.delayup = false
|
||||
}()
|
||||
|
||||
err := os.Remove(conf.DataDir + "/delay.z")
|
||||
err := os.Remove(DataDir + "/delay.z")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
file, err := os.OpenFile(conf.DataDir+"/delay.z", os.O_CREATE|os.O_WRONLY, os.ModeAppend)
|
||||
file, err := os.OpenFile(DataDir+"/delay.z", os.O_CREATE|os.O_WRONLY, os.ModeAppend)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
@@ -75,7 +74,7 @@ func (s *ZSub) dataStorage() {
|
||||
|
||||
// ========================== lock save ===========================
|
||||
func() {
|
||||
err := os.Remove(conf.DataDir + "/lock.z")
|
||||
err := os.Remove(DataDir + "/lock.z")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
@@ -86,12 +85,12 @@ func (s *ZSub) dataStorage() {
|
||||
break // 只记录获得锁的记录
|
||||
}
|
||||
}
|
||||
Append(str, conf.DataDir+"/lock.z")
|
||||
Append(str, DataDir+"/lock.z")
|
||||
}()
|
||||
}
|
||||
|
||||
func (s *ZSub) loadDelay() {
|
||||
f, err := os.Open(conf.DataDir + "/delay.z")
|
||||
f, err := os.Open(DataDir + "/delay.z")
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@@ -126,7 +125,7 @@ func (s *ZSub) loadDelay() {
|
||||
}
|
||||
|
||||
func (s *ZSub) loadLock() {
|
||||
f, err := os.Open(conf.DataDir + "/lock.z")
|
||||
f, err := os.Open(DataDir + "/lock.z")
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@@ -172,12 +171,12 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
conf.Load("app.conf")
|
||||
LoadConf("app.conf")
|
||||
_db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8",
|
||||
conf.GetStr("ztimer.db.user", "root"),
|
||||
conf.GetStr("ztimer.db.pwd", "123456"),
|
||||
conf.GetStr("ztimer.db.addr", "127.0.0.1:3306"),
|
||||
conf.GetStr("ztimer.db.database", "zhub"),
|
||||
GetStr("ztimer.db.user", "root"),
|
||||
GetStr("ztimer.db.pwd", "123456"),
|
||||
GetStr("ztimer.db.addr", "127.0.0.1:3306"),
|
||||
GetStr("ztimer.db.database", "zhub"),
|
||||
))
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
|
||||
@@ -12,7 +12,6 @@ import (
|
||||
"sync/atomic"
|
||||
"time"
|
||||
"unicode/utf8"
|
||||
"zhub/conf"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -251,7 +250,7 @@ ServerStart
|
||||
2、init server
|
||||
*/
|
||||
func ServerStart(addr string) {
|
||||
conf.GetStr("data.dir", "data")
|
||||
GetStr("data.dir", "data")
|
||||
|
||||
go func() {
|
||||
for {
|
||||
@@ -523,7 +522,3 @@ func (s *ZSub) noSubscribe(topic string) bool {
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func ZSubx() *ZSub {
|
||||
return zsub
|
||||
}
|
||||
|
||||
@@ -13,7 +13,6 @@ import (
|
||||
"strings"
|
||||
"text/template"
|
||||
"time"
|
||||
"zhub/conf"
|
||||
)
|
||||
|
||||
type ZTimer struct {
|
||||
@@ -167,10 +166,10 @@ func executeShell(command string) (string, error, string) {
|
||||
|
||||
func (s *ZSub) ReloadTimer() {
|
||||
db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8",
|
||||
conf.GetStr("ztimer.db.user", "root"),
|
||||
conf.GetStr("ztimer.db.pwd", "123456"),
|
||||
conf.GetStr("ztimer.db.addr", "127.0.0.1:3306"),
|
||||
conf.GetStr("ztimer.db.database", "zhub"),
|
||||
GetStr("ztimer.db.user", "root"),
|
||||
GetStr("ztimer.db.pwd", "123456"),
|
||||
GetStr("ztimer.db.addr", "127.0.0.1:3306"),
|
||||
GetStr("ztimer.db.database", "zhub"),
|
||||
))
|
||||
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user