blob: f477423748935ebabf0de3015166dcd503e0e5bb [file] [log] [blame]
David Reissea2cba82009-03-30 21:35:00 +00001%%
2%% Licensed to the Apache Software Foundation (ASF) under one
3%% or more contributor license agreements. See the NOTICE file
4%% distributed with this work for additional information
5%% regarding copyright ownership. The ASF licenses this file
6%% to you under the Apache License, Version 2.0 (the
7%% "License"); you may not use this file except in compliance
8%% with the License. You may obtain a copy of the License at
9%%
10%% http://www.apache.org/licenses/LICENSE-2.0
11%%
12%% Unless required by applicable law or agreed to in writing,
13%% software distributed under the License is distributed on an
14%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15%% KIND, either express or implied. See the License for the
16%% specific language governing permissions and limitations
17%% under the License.
18%%
19
David Reissac549552008-06-10 22:56:59 +000020-ifndef(THRIFT_PROTOCOL_INCLUDED).
David Reiss3e81fff2010-08-30 22:05:11 +000021-define(THRIFT_PROTOCOL_INCLUDED, true).
David Reissac549552008-06-10 22:56:59 +000022
David Hulle544a892017-07-27 02:15:00 +020023-record(protocol_message_begin, {name :: string(), type :: integer(), seqid :: integer()}).
Sergei Elin45764092022-09-23 23:21:31 +030024-record(protocol_struct_begin, {name :: undefined | string()}).
25-record(protocol_field_begin, {
26 name :: undefined | string(), type :: integer(), id :: undefined | integer()
27}).
David Hulle544a892017-07-27 02:15:00 +020028-record(protocol_map_begin, {ktype :: integer(), vtype :: integer(), size :: integer()}).
29-record(protocol_list_begin, {etype :: integer(), size :: integer()}).
30-record(protocol_set_begin, {etype :: integer(), size :: integer()}).
David Reissac549552008-06-10 22:56:59 +000031
Sergei Elin45764092022-09-23 23:21:31 +030032-type tprot_header_val() ::
33 #protocol_message_begin{}
34 | #protocol_struct_begin{}
35 | #protocol_field_begin{}
36 | #protocol_map_begin{}
37 | #protocol_list_begin{}
38 | #protocol_set_begin{}.
39-type tprot_empty_tag() ::
40 message_end
41 | struct_begin
42 | struct_end
43 | field_end
44 | map_end
45 | list_end
46 | set_end.
47-type tprot_header_tag() ::
48 message_begin
49 | field_begin
50 | map_begin
51 | list_begin
52 | set_begin.
53-type tprot_data_tag() ::
54 ui32
55 | bool
56 | byte
57 | i16
58 | i32
59 | i64
60 | double
61 | string.
62-type tprot_cont_tag() ::
63 {list, _Type}
64 | {map, _KType, _VType}
65 | {set, _Type}.
David Reissac549552008-06-10 22:56:59 +000066
67-endif.