github.com/telepresenceio/telepresence/v2@v2.20.0-pro.6.0.20240517030216-236ea954e789/pkg/tunnel/server_stream.go (about) 1 package tunnel 2 3 import ( 4 "context" 5 "errors" 6 "fmt" 7 ) 8 9 func NewServerStream(ctx context.Context, grpcStream GRPCStream) (Stream, error) { 10 s := &stream{tag: "SRV", grpcStream: grpcStream, syncRatio: 8, ackWindow: 1} 11 m, err := s.Receive(ctx) 12 if err != nil { 13 return nil, fmt.Errorf("failed to read initial StreamInfo message: %w", err) 14 } 15 if m.Code() != streamInfo { 16 return nil, errors.New("initial message was not StreamInfo") 17 } 18 if err = setConnectInfo(m, s); err != nil { 19 return nil, fmt.Errorf("failed to parse StreamInfo message: %w", err) 20 } 21 if err = s.Send(ctx, StreamOKMessage()); err != nil { 22 return nil, err 23 } 24 return s, nil 25 }