MCPcopy Create free account
hub / github.com/0xUnixIO/pulse / Session

Method Session

internal/nodeagent/agent_test.go:50–99  ·  view source on GitHub ↗
(stream nodev1.NodeAgent_SessionServer)

Source from the content-addressed store, hash-verified

48}
49
50func (h *mockHub) Session(stream nodev1.NodeAgent_SessionServer) error {
51 s := &mockSession{
52 stream: stream,
53 hello: make(chan *nodev1.NodeMessage, 1),
54 resps: make(chan *nodev1.NodeMessage, 256),
55 pushes: make(chan *nodev1.NodeMessage, 256),
56 closeReq: make(chan struct{}),
57 closed: make(chan struct{}),
58 }
59 h.sessions <- s
60 defer close(s.closed)
61
62 type recvResult struct {
63 msg *nodev1.NodeMessage
64 err error
65 }
66 recvCh := make(chan recvResult, 1)
67 go func() {
68 for {
69 msg, err := stream.Recv()
70 recvCh <- recvResult{msg, err}
71 if err != nil {
72 return
73 }
74 }
75 }()
76
77 for {
78 select {
79 case <-s.closeReq:
80 return nil
81 case r := <-recvCh:
82 if r.err != nil {
83 return r.err
84 }
85 msg := r.msg
86 switch {
87 case msg.GetEvent() == "hello":
88 select {
89 case s.hello <- msg:
90 default:
91 }
92 case msg.GetEvent() != "":
93 s.pushes <- msg
94 case msg.GetId() != "":
95 s.resps <- msg
96 }
97 }
98 }
99}
100
101func (s *mockSession) send(msg *nodev1.ServerMessage) error {
102 s.sendMu.Lock()

Callers

nothing calls this directly

Calls 2

GetEventMethod · 0.80
GetIdMethod · 0.45

Tested by

no test coverage detected