add orm function
parent
996f94eef0
commit
9065a12b99
@ -0,0 +1,96 @@
|
|||||||
|
package notify
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestMsgEnDeCode(t *testing.T) {
|
||||||
|
Register(HelloMessage{})
|
||||||
|
Register(Error{})
|
||||||
|
go ServerRun(time.Second * 30)
|
||||||
|
time.Sleep(time.Second * 2)
|
||||||
|
ClientRun(time.Second * 35)
|
||||||
|
}
|
||||||
|
|
||||||
|
type Error struct {
|
||||||
|
Msg string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e Error) Error() string {
|
||||||
|
return e.Msg
|
||||||
|
}
|
||||||
|
|
||||||
|
type WorldMessage struct {
|
||||||
|
Port int
|
||||||
|
MyCode string
|
||||||
|
MyInfo []int
|
||||||
|
Err error
|
||||||
|
}
|
||||||
|
|
||||||
|
type HelloMessage struct {
|
||||||
|
ID string
|
||||||
|
MyMap map[string]string
|
||||||
|
MySlice []int
|
||||||
|
World WorldMessage
|
||||||
|
}
|
||||||
|
|
||||||
|
func ClientRun(stopTime time.Duration) {
|
||||||
|
c := NewClient()
|
||||||
|
err := c.Connect("tcp", "127.0.0.1:23456")
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
c.SetLink("msg", func(msg *Message) {
|
||||||
|
var hi HelloMessage
|
||||||
|
err := msg.Value.Orm(&hi)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
fmt.Printf("recv info from server,struct detail is %+v\n", hi)
|
||||||
|
})
|
||||||
|
timer := time.NewTimer(stopTime)
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case <-timer.C:
|
||||||
|
c.Stop()
|
||||||
|
return
|
||||||
|
case <-time.After(time.Second * 2):
|
||||||
|
fmt.Println("client msg sent", c.SendObj("msg", HelloMessage{
|
||||||
|
ID: "client",
|
||||||
|
MyMap: map[string]string{"hello": "world"},
|
||||||
|
MySlice: []int{int(time.Now().Unix())},
|
||||||
|
World: WorldMessage{
|
||||||
|
Port: 520,
|
||||||
|
MyCode: "b612",
|
||||||
|
MyInfo: []int{0, 1, 2, 3},
|
||||||
|
Err: Error{Msg: "Hello World"},
|
||||||
|
},
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func ServerRun(stopTime time.Duration) {
|
||||||
|
s := NewServer()
|
||||||
|
err := s.Listen("tcp", "127.0.0.1:23456")
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
s.SetLink("msg", func(msg *Message) {
|
||||||
|
var hi HelloMessage
|
||||||
|
err := msg.Value.Orm(&hi)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
fmt.Printf("recv info from client:%v,struct detail is %+v\n", msg.ClientConn.GetRemoteAddr(), hi)
|
||||||
|
hi.ID = "server"
|
||||||
|
hi.World.Port = 666
|
||||||
|
hi.MySlice = append(hi.MySlice, 1, 1, 2, 7)
|
||||||
|
msg.ReplyObj(hi)
|
||||||
|
})
|
||||||
|
<-time.After(stopTime)
|
||||||
|
s.Stop()
|
||||||
|
}
|
Loading…
Reference in New Issue