github.com/batchcorp/thrift-iterator@v0.0.0-20220918180557-4c4a158fc6e9/protocol/protocol.go (about)

     1  package protocol
     2  
     3  // Type constants in the Thrift protocol
     4  type TType byte
     5  type TMessageType int32
     6  type SeqId int32
     7  type FieldId int16
     8  
     9  const (
    10  	BINARY_VERSION_MASK = 0xffff0000
    11  	BINARY_VERSION_1    = 0x80010000
    12  
    13  	COMPACT_PROTOCOL_ID      = 0x082
    14  	COMPACT_VERSION          = 0x01
    15  	COMPACT_VERSON_BE        = 0x02
    16  	COMPACT_VERSION_MASK     = 0x1f
    17  	COMPACT_TYPE_BITS        = 0x07
    18  	COMPACT_TYPE_SHIFT_AMOUT = 5
    19  )
    20  
    21  const (
    22  	MessgeTypeInvalid    TMessageType = 0
    23  	MessageTypeCall      TMessageType = 1
    24  	MessageTypeReply     TMessageType = 2
    25  	MessageTypeException TMessageType = 3
    26  	MessageTypeOneWay    TMessageType = 4
    27  )
    28  
    29  const (
    30  	TypeStop   TType = 0
    31  	TypeVoid   TType = 1
    32  	TypeBool   TType = 2
    33  	TypeByte   TType = 3
    34  	TypeI08    TType = 3
    35  	TypeDouble TType = 4
    36  	TypeI16    TType = 6
    37  	TypeI32    TType = 8
    38  	TypeI64    TType = 10
    39  	TypeString TType = 11
    40  	TypeUTF7   TType = 11
    41  	TypeStruct TType = 12
    42  	TypeMap    TType = 13
    43  	TypeSet    TType = 14
    44  	TypeList   TType = 15
    45  	TypeUTF8   TType = 16
    46  	TypeUTF16  TType = 17
    47  )
    48  
    49  var typeNames = map[TType]string{
    50  	TypeStop:   "Stop",
    51  	TypeVoid:   "Void",
    52  	TypeBool:   "Bool",
    53  	TypeByte:   "Byte",
    54  	TypeDouble: "Double",
    55  	TypeI16:    "I16",
    56  	TypeI32:    "I32",
    57  	TypeI64:    "I64",
    58  	TypeString: "String",
    59  	TypeStruct: "Struct",
    60  	TypeMap:    "Map",
    61  	TypeSet:    "Set",
    62  	TypeList:   "List",
    63  	TypeUTF8:   "UTF8",
    64  	TypeUTF16:  "UTF16",
    65  }
    66  
    67  func (p TType) String() string {
    68  	if s, ok := typeNames[p]; ok {
    69  		return s
    70  	}
    71  	return "Unknown"
    72  }
    73  
    74  type MessageHeader struct {
    75  	MessageName string
    76  	MessageType TMessageType
    77  	SeqId       SeqId
    78  }
    79  
    80  type Flusher interface {
    81  	Flush() error
    82  }