github.com/cloudwego/kitex@v0.9.0/pkg/remote/trans/nphttp2/stream_middleware.go (about) 1 /* 2 * Copyright 2023 CloudWeGo Authors 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package nphttp2 18 19 import ( 20 ep "github.com/cloudwego/kitex/pkg/endpoint" 21 "github.com/cloudwego/kitex/pkg/streaming" 22 ) 23 24 // streamWithMiddleware enables interception for stream's SendMsg and RecvMsg. 25 type streamWithMiddleware struct { 26 streaming.Stream 27 28 recvEndpoint ep.RecvEndpoint 29 sendEndpoint ep.SendEndpoint 30 } 31 32 func newStreamWithMiddleware(st streaming.Stream, recv ep.RecvEndpoint, send ep.SendEndpoint) *streamWithMiddleware { 33 return &streamWithMiddleware{ 34 Stream: st, 35 recvEndpoint: recv, 36 sendEndpoint: send, 37 } 38 } 39 40 func (s *streamWithMiddleware) RecvMsg(m interface{}) error { 41 return s.recvEndpoint(s.Stream, m) 42 } 43 44 func (s *streamWithMiddleware) SendMsg(m interface{}) error { 45 return s.sendEndpoint(s.Stream, m) 46 }