MCPcopy
hub / github.com/txthinking/brook / Exchange

Method Exchange

streamserver.go:153–185  ·  view source on GitHub ↗
(remote net.Conn)

Source from the content-addressed store, hash-verified

151}
152
153func (s *StreamServer) Exchange(remote net.Conn) error {
154 go func() {
155 for {
156 if s.Timeout != 0 {
157 if err := remote.SetDeadline(time.Now().Add(time.Duration(s.Timeout) * time.Second)); err != nil {
158 return
159 }
160 }
161 l, err := remote.Read(s.WB[2+16 : len(s.WB)-16])
162 if err != nil {
163 return
164 }
165 if err := s.Write(l); err != nil {
166 return
167 }
168 }
169 }()
170 for {
171 if s.Timeout != 0 {
172 if err := s.Client.SetDeadline(time.Now().Add(time.Duration(s.Timeout) * time.Second)); err != nil {
173 return nil
174 }
175 }
176 l, err := s.Read()
177 if err != nil {
178 return nil
179 }
180 if _, err := remote.Write(s.RB[2+16 : 2+16+l]); err != nil {
181 return nil
182 }
183 }
184 return nil
185}
186
187func (s *StreamServer) Write(l int) error {
188 binary.BigEndian.PutUint16(s.WB[:2], uint16(l))

Callers

nothing calls this directly

Calls 3

ReadMethod · 0.95
WriteMethod · 0.95
SetDeadlineMethod · 0.45

Tested by

no test coverage detected