1
0
mirror of https://github.com/astaxie/beego.git synced 2024-11-26 09:11:28 +00:00

Update conn.go

使用json直接初始化相关变量,代码更简单。如果把协议的首字母改大写会更简单,但不好改谢大的协议。
This commit is contained in:
1fei 2013-12-19 18:13:10 +08:00
parent 0269a66940
commit 9076ce7d17

View File

@ -10,45 +10,29 @@ import (
type ConnWriter struct { type ConnWriter struct {
lg *log.Logger lg *log.Logger
innerWriter io.WriteCloser innerWriter io.WriteCloser
reconnectOnMsg bool ReconnectOnMsg bool `json:"reconnectOnMsg"`
reconnect bool Reconnect bool `json:"reconnect"`
net string Net string `json:"net"`
addr string Addr string `json:"addr"`
level int Level int `json:"level"`
} }
func NewConn() LoggerInterface { func NewConn() LoggerInterface {
conn := new(ConnWriter) conn := new(ConnWriter)
conn.level = LevelTrace conn.Level = LevelTrace
return conn return conn
} }
func (c *ConnWriter) Init(jsonconfig string) error { func (c *ConnWriter) Init(jsonconfig string) error {
var m map[string]interface{} err := json.Unmarshal([]byte(jsonconfig), c)
err := json.Unmarshal([]byte(jsonconfig), &m)
if err != nil { if err != nil {
return err return err
} }
if rom, ok := m["reconnectOnMsg"]; ok {
c.reconnectOnMsg = rom.(bool)
}
if rc, ok := m["reconnect"]; ok {
c.reconnect = rc.(bool)
}
if nt, ok := m["net"]; ok {
c.net = nt.(string)
}
if addr, ok := m["addr"]; ok {
c.addr = addr.(string)
}
if lv, ok := m["level"]; ok {
c.level = int(lv.(float64))
}
return nil return nil
} }
func (c *ConnWriter) WriteMsg(msg string, level int) error { func (c *ConnWriter) WriteMsg(msg string, level int) error {
if level < c.level { if level < c.Level {
return nil return nil
} }
if c.neddedConnectOnMsg() { if c.neddedConnectOnMsg() {
@ -58,7 +42,7 @@ func (c *ConnWriter) WriteMsg(msg string, level int) error {
} }
} }
if c.reconnectOnMsg { if c.ReconnectOnMsg {
defer c.innerWriter.Close() defer c.innerWriter.Close()
} }
c.lg.Println(msg) c.lg.Println(msg)
@ -82,7 +66,7 @@ func (c *ConnWriter) connect() error {
c.innerWriter = nil c.innerWriter = nil
} }
conn, err := net.Dial(c.net, c.addr) conn, err := net.Dial(c.Net, c.Addr)
if err != nil { if err != nil {
return err return err
} }
@ -97,8 +81,8 @@ func (c *ConnWriter) connect() error {
} }
func (c *ConnWriter) neddedConnectOnMsg() bool { func (c *ConnWriter) neddedConnectOnMsg() bool {
if c.reconnect { if c.Reconnect {
c.reconnect = false c.Reconnect = false
return true return true
} }
@ -106,7 +90,7 @@ func (c *ConnWriter) neddedConnectOnMsg() bool {
return true return true
} }
return c.reconnectOnMsg return c.ReconnectOnMsg
} }
func init() { func init() {