/* * * Copyright 2019 gRPC authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */package grpcimport ()// PreparedMsg is responsible for creating a Marshalled and Compressed object.//// # Experimental//// Notice: This type is EXPERIMENTAL and may be changed or removed in a// later release.typePreparedMsgstruct {// Struct for preparing msg before sending themencodedDatamem.BufferSlicehdr []bytepayloadmem.BufferSlicepfpayloadFormat}// Encode marshalls and compresses the message using the codec and compressor for the stream.func ( *PreparedMsg) ( Stream, any) error { := .Context() , := rpcInfoFromContext()if ! {returnstatus.Errorf(codes.Internal, "grpc: unable to get rpcInfo") }// check if the context has the relevant information to prepareMsgif .preloaderInfo == nil {returnstatus.Errorf(codes.Internal, "grpc: rpcInfo.preloaderInfo is nil") }if .preloaderInfo.codec == nil {returnstatus.Errorf(codes.Internal, "grpc: rpcInfo.preloaderInfo.codec is nil") }// prepare the msg , := encode(.preloaderInfo.codec, )if != nil {return } := .Materialize() .Free() .encodedData = mem.BufferSlice{mem.SliceBuffer()}// TODO: it should be possible to grab the bufferPool from the underlying // stream implementation with a type cast to its actual type (such as // addrConnStream) and accessing the buffer pool directly.varmem.BufferSlice , .pf, = compress(.encodedData, .preloaderInfo.cp, .preloaderInfo.comp, mem.DefaultBufferPool())if != nil {return }if .pf.isCompressed() { := .Materialize() .Free() = mem.BufferSlice{mem.SliceBuffer()} } .hdr, .payload = msgHeader(.encodedData, , .pf)returnnil}
The pages are generated with Goldsv0.7.6. (GOOS=linux GOARCH=amd64)