MCPcopy Index your code
hub / github.com/CovenantSQL/CovenantSQL / Get

Method Get

rpc/mux/pool.go:75–113  ·  view source on GitHub ↗

Get returns new connection from session.

()

Source from the content-addressed store, hash-verified

73
74// Get returns new connection from session.
75func (s *Session) Get() (conn rpc.Client, err error) {
76 s.Lock()
77 defer s.Unlock()
78 s.offset++
79 s.offset %= conf.MaxRPCMuxPoolPhysicalConnection
80
81 var (
82 sess *mux.Session
83 stream *mux.Stream
84 sessions []*mux.Session
85 )
86
87 for {
88 if len(s.sess) <= s.offset {
89 // open new session
90 sess, err = s.newSession()
91 if err != nil {
92 return
93 }
94 s.sess = append(s.sess, sess)
95 s.offset = len(s.sess) - 1
96 } else {
97 sess = s.sess[s.offset]
98 }
99
100 // open connection
101 stream, err = sess.OpenStream()
102 if err != nil {
103 // invalidate session
104 sessions = nil
105 sessions = append(sessions, s.sess[0:s.offset]...)
106 sessions = append(sessions, s.sess[s.offset+1:]...)
107 s.sess = sessions
108 continue
109 }
110
111 return rpc.NewClient(stream), nil
112 }
113}
114
115// Len returns physical connection count.
116func (s *Session) Len() int {

Callers 1

GetMethod · 0.95

Calls 2

newSessionMethod · 0.95
NewClientFunction · 0.92

Tested by

no test coverage detected