MCPcopy
hub / github.com/davyxu/cellnet / server

Function server

examples/echo/server.go:11–50  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

9)
10
11func server() {
12 queue := cellnet.NewEventQueue()
13
14 peerIns := peer.NewGenericPeer("tcp.Acceptor", "server", peerAddress, queue)
15
16 proc.BindProcessorHandler(peerIns, "tcp.ltv", func(ev cellnet.Event) {
17
18 switch msg := ev.Message().(type) {
19 case *cellnet.SessionAccepted: // 接受一个连接
20 fmt.Println("server accepted")
21 case *TestEchoACK: // 收到连接发送的消息
22
23 fmt.Printf("server recv %+v\n", msg)
24
25 ack := &TestEchoACK{
26 Msg: msg.Msg,
27 Value: msg.Value,
28 }
29
30 // 当服务器收到的是一个rpc消息
31 if rpcevent, ok := ev.(*rpc.RecvMsgEvent); ok {
32
33 // 以RPC方式回应
34 rpcevent.Reply(ack)
35 } else {
36
37 // 收到的是普通消息,回普通消息
38 ev.Session().Send(ack)
39 }
40
41 case *cellnet.SessionClosed: // 连接断开
42 fmt.Println("session closed: ", ev.Session().ID())
43 }
44
45 })
46
47 peerIns.Start()
48
49 queue.StartLoop()
50}

Callers 1

mainFunction · 0.70

Calls 10

StartLoopMethod · 0.95
NewEventQueueFunction · 0.92
NewGenericPeerFunction · 0.92
BindProcessorHandlerFunction · 0.92
MessageMethod · 0.65
ReplyMethod · 0.65
SendMethod · 0.65
SessionMethod · 0.65
IDMethod · 0.65
StartMethod · 0.65

Tested by

no test coverage detected