MCPcopy
hub / github.com/keploy/keploy / checkStreamCompletion

Method checkStreamCompletion

pkg/http2.go:480–494  ·  view source on GitHub ↗

checkStreamCompletion decides when a stream is complete (request done + response done with trailers)

(streamID uint32)

Source from the content-addressed store, hash-verified

478
479// checkStreamCompletion decides when a stream is complete (request done + response done with trailers)
480func (sm *DefaultStreamManager) checkStreamCompletion(streamID uint32) {
481 s := sm.streams[streamID]
482 if s == nil || s.isComplete == false {
483 // Request considered "done" once END_STREAM seen on request side and headers received.
484 reqDone := s.reqHeadersReceived && s.reqEndStreamReceived
485
486 // Response considered "done" once headers + trailers received and END_STREAM on response.
487 respDone := s.respHeadersReceived && s.respTrailersReceived && s.respEndStreamReceived
488
489 if reqDone && respDone {
490 sm.logger.Debug("Stream completed", zap.Any("stream", s))
491 s.isComplete = true
492 }
493 }
494}
495
496// ProcessHeaders converts HPACK header fields to a map
497func ProcessHeaders(fields []hpack.HeaderField) *models.GrpcHeaders {

Callers 1

HandleFrameMethod · 0.95

Calls 1

DebugMethod · 0.65

Tested by

no test coverage detected