From 1ddb903a874a3ecc33b6e6c703679fd7a4c8a0f7 Mon Sep 17 00:00:00 2001 From: shaoying Date: Mon, 13 Nov 2017 08:46:04 +0800 Subject: [PATCH] =?UTF-8?q?mac=20mod=20message.ccc=20=E5=B0=86=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E7=9A=84=E6=93=8D=E4=BD=9C=E7=A7=BB=E5=8A=A8=E5=88=B0?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E4=B8=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/context/mdb/mdb.go | 22 +++++++++++----------- src/context/tcp/tcp.go | 33 +++++++++++++++++---------------- 2 files changed, 28 insertions(+), 27 deletions(-) diff --git a/src/context/mdb/mdb.go b/src/context/mdb/mdb.go index 6586148c..8a326fda 100644 --- a/src/context/mdb/mdb.go +++ b/src/context/mdb/mdb.go @@ -27,32 +27,32 @@ func (mdb *MDB) Begin(m *ctx.Message, arg ...string) ctx.Server { // {{{ // }}} func (mdb *MDB) Start(m *ctx.Message, arg ...string) bool { // {{{ - mdb.Capi("nsource", 1) - defer mdb.Capi("nsource", -1) + m.Capi("nsource", 1) + defer m.Capi("nsource", -1) if len(arg) > 0 { - mdb.Conf("source", arg[0]) + m.Conf("source", arg[0]) if len(arg) > 1 { - mdb.Conf("driver", arg[1]) + m.Conf("driver", arg[1]) } } - if mdb.Conf("source") == "" || mdb.Conf("driver") == "" { + if m.Conf("source") == "" || m.Conf("driver") == "" { return true } - db, e := sql.Open(mdb.Conf("driver"), mdb.Conf("source")) - mdb.Assert(e) + db, e := sql.Open(m.Conf("driver"), m.Conf("source")) + m.Assert(e) mdb.db = db defer mdb.db.Close() - log.Println(mdb.Name, "open:", mdb.Conf("driver"), mdb.Conf("source")) - defer log.Println(mdb.Name, "close:", mdb.Conf("driver"), mdb.Conf("source")) + log.Println(mdb.Name, "open:", m.Conf("driver"), m.Conf("source")) + defer log.Println(mdb.Name, "close:", m.Conf("driver"), m.Conf("source")) for _, p := range m.Meta["prepare"] { _, e := db.Exec(p) - mdb.Assert(e) + m.Assert(e) } return true @@ -86,7 +86,7 @@ var Index = &ctx.Context{Name: "mdb", Help: "内存数据库", "prepare": "打开数据库时自动执行的语句", }, Hand: func(c *ctx.Context, m *ctx.Message, key string, arg ...string) string { - m.Start("db"+c.Cap("nsource"), arg...) // {{{ + m.Start("db"+m.Cap("nsource"), arg...) // {{{ return "" // }}} }}, diff --git a/src/context/tcp/tcp.go b/src/context/tcp/tcp.go index f32ff9f2..9040bbc1 100644 --- a/src/context/tcp/tcp.go +++ b/src/context/tcp/tcp.go @@ -20,25 +20,25 @@ func (tcp *TCP) Begin(m *ctx.Message, arg ...string) ctx.Server { // {{{ // }}} func (tcp *TCP) Start(m *ctx.Message, arg ...string) bool { // {{{ - if tcp.Conf("address") == "" { + if m.Conf("address") == "" { return true } - l, e := net.Listen("tcp4", tcp.Conf("address")) - tcp.Assert(e) + l, e := net.Listen("tcp4", m.Conf("address")) + m.Assert(e) tcp.listener = l - log.Printf("%s listen(%d): %v", tcp.Name, tcp.Capi("nlisten", 1), l.Addr()) - defer tcp.Capi("nlisten", -1) - defer log.Println("%s close(%d): %v", tcp.Name, tcp.Capi("nlisten", 0), l.Addr()) + log.Printf("%s listen(%d): %v", tcp.Name, m.Capi("nlisten", 1), l.Addr()) + defer m.Capi("nlisten", -1) + defer log.Println("%s close(%d): %v", tcp.Name, m.Capi("nlisten", 0), l.Addr()) for { c, e := l.Accept() - tcp.Assert(e) - log.Printf("%s accept(%d): %v<-%v", tcp.Name, tcp.Capi("nclient", 1), c.LocalAddr(), c.RemoteAddr()) - // defer log.Println(tcp.Name, "close:", tcp.Capi("nclient", -1), c.LocalAddr(), "<-", c.RemoteAddr()) + m.Assert(e) + log.Printf("%s accept(%d): %v<-%v", tcp.Name, m.Capi("nclient", 1), c.LocalAddr(), c.RemoteAddr()) + // defer log.Println(tcp.Name, "close:", m.Capi("nclient", -1), c.LocalAddr(), "<-", c.RemoteAddr()) - msg := m.Spawn(m.Context, c.RemoteAddr().String()).Put("option", "io", c) + msg := m.Spawn(m.Source, c.RemoteAddr().String()).Put("option", "io", c) msg.Cmd("open", c.RemoteAddr().String(), "tcp") } @@ -67,7 +67,7 @@ func (tcp *TCP) Exit(m *ctx.Message, arg ...string) bool { // {{{ return true } - if c, ok := m.Data["detail"].(net.Conn); ok && m.Context == tcp.Context { + if c, ok := m.Data["detail"].(net.Conn); ok && m.Source == tcp.Context { c.Close() delete(m.Data, "detail") return true @@ -88,9 +88,10 @@ var Index = &ctx.Context{Name: "tcp", Help: "网络连接", "listen": &ctx.Command{Name: "listen address", Help: "监听连接", Hand: func(c *ctx.Context, m *ctx.Message, key string, arg ...string) string { switch len(arg) { // {{{ case 0: - for k, s := range m.Target.Contexts { - m.Echo("%s %s\n", k, s.Server.(*TCP).listener.Addr().String()) - } + m.Target.Travel(func(c *ctx.Context) bool { + m.Echo("%s %s\n", c.Name, c.Server.(*TCP).listener.Addr().String()) + return true + }) case 1: go m.Start(arg[0], arg[0]) } @@ -107,7 +108,7 @@ var Index = &ctx.Context{Name: "tcp", Help: "网络连接", } case 2: conn, e := net.Dial("tcp", arg[0]) - c.Assert(e) + m.Assert(e) log.Println(tcp.Name, "dial:", conn.LocalAddr(), "->", conn.RemoteAddr()) } return "" @@ -116,7 +117,7 @@ var Index = &ctx.Context{Name: "tcp", Help: "网络连接", "exit": &ctx.Command{Name: "exit", Help: "退出", Hand: func(c *ctx.Context, m *ctx.Message, key string, arg ...string) string { tcp, ok := m.Target.Server.(*TCP) // {{{ if !ok { - tcp, ok = m.Context.Server.(*TCP) + tcp, ok = m.Source.Server.(*TCP) } if ok { tcp.Context.Exit(m)