1/* 2 * 3 * Copyright 2014 gRPC authors. 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 */ 18 19package grpc 20 21import ( 22 "google.golang.org/grpc/encoding" 23 _ "google.golang.org/grpc/encoding/proto" // to register the Codec for "proto" 24) 25 26// baseCodec contains the functionality of both Codec and encoding.Codec, but 27// omits the name/string, which vary between the two and are not needed for 28// anything besides the registry in the encoding package. 29type baseCodec interface { 30 Marshal(v interface{}) ([]byte, error) 31 Unmarshal(data []byte, v interface{}) error 32} 33 34var _ baseCodec = Codec(nil) 35var _ baseCodec = encoding.Codec(nil) 36 37// Codec defines the interface gRPC uses to encode and decode messages. 38// Note that implementations of this interface must be thread safe; 39// a Codec's methods can be called from concurrent goroutines. 40// 41// Deprecated: use encoding.Codec instead. 42type Codec interface { 43 // Marshal returns the wire format of v. 44 Marshal(v interface{}) ([]byte, error) 45 // Unmarshal parses the wire format into v. 46 Unmarshal(data []byte, v interface{}) error 47 // String returns the name of the Codec implementation. This is unused by 48 // gRPC. 49 String() string 50} 51