當前位置: 首頁>>代碼示例>>Golang>>正文


Golang OutPayload.Data方法代碼示例

本文整理匯總了Golang中google/golang.org/grpc/stats.OutPayload.Data方法的典型用法代碼示例。如果您正苦於以下問題:Golang OutPayload.Data方法的具體用法?Golang OutPayload.Data怎麽用?Golang OutPayload.Data使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在google/golang.org/grpc/stats.OutPayload的用法示例。


在下文中一共展示了OutPayload.Data方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。

示例1: encode

// encode serializes msg and prepends the message header. If msg is nil, it
// generates the message header of 0 message length.
func encode(c Codec, msg interface{}, cp Compressor, cbuf *bytes.Buffer, outPayload *stats.OutPayload) ([]byte, error) {
    var (
        b      []byte
        length uint
    )
    if msg != nil {
        var err error
        // TODO(zhaoq): optimize to reduce memory alloc and copying.
        b, err = c.Marshal(msg)
        if err != nil {
            return nil, err
        }
        if outPayload != nil {
            outPayload.Payload = msg
            // TODO truncate large payload.
            outPayload.Data = b
            outPayload.Length = len(b)
        }
        if cp != nil {
            if err := cp.Do(cbuf, b); err != nil {
                return nil, err
            }
            b = cbuf.Bytes()
        }
        length = uint(len(b))
    }
    if length > math.MaxUint32 {
        return nil, Errorf(codes.InvalidArgument, "grpc: message too large (%d bytes)", length)
    }

    const (
        payloadLen = 1
        sizeLen    = 4
    )

    var buf = make([]byte, payloadLen+sizeLen+len(b))

    // Write payload format
    if cp == nil {
        buf[0] = byte(compressionNone)
    } else {
        buf[0] = byte(compressionMade)
    }
    // Write length of b into buf
    binary.BigEndian.PutUint32(buf[1:], uint32(length))
    // Copy encoded msg to buf
    copy(buf[5:], b)

    if outPayload != nil {
        outPayload.WireLength = len(buf)
    }

    return buf, nil
}
開發者ID:kardianos,項目名稱:garage,代碼行數:56,代碼來源:rpc_util.go


注:本文中的google/golang.org/grpc/stats.OutPayload.Data方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。