-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy pathrmqamqpt_fieldvalue.h
66 lines (57 loc) · 2.25 KB
/
rmqamqpt_fieldvalue.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
// Copyright 2020-2023 Bloomberg Finance L.P.
// SPDX-License-Identifier: Apache-2.0
//
// 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.
#ifndef INCLUDED_RMQAMQPT_FIELDVALUE
#define INCLUDED_RMQAMQPT_FIELDVALUE
#include <bsl_cstddef.h>
#include <rmqt_fieldvalue.h>
namespace BloombergLP {
namespace rmqamqpt {
/// \brief A Variant representing AMQP 0.9.1 field types inside the field table.
/// But there are some differences between RabbitMQ implementation and actual
/// AMQP 0.9.1 protocol for encoding field types. Specified in details here:
/// https://www.rabbitmq.com/amqp-0-9-1-errata.html#section_3
class FieldValue {
public:
enum Type {
BOOLEAN = 't',
SHORT_SHORT_INT = 'b',
SHORT_SHORT_UINT = 'B',
SHORT_INT = 's',
SHORT_UINT = 'u',
LONG_INT = 'I',
LONG_UINT = 'i',
AMQP_SPEC_LONG_LONG_INT = 'L',
RABBIT_SPEC_LONG_LONG_INT = 'l',
FLOAT = 'f',
DOUBLE = 'd',
DECIMAL = 'D',
LONG_STRING = 'S',
BYTE_ARRAY = 'x',
FIELD_ARRAY = 'A',
TIMESTAMP = 'T',
FIELD_TABLE = 'F',
NO_FIELD = 'V'
};
};
struct FieldValueUtil {
static bsl::size_t encodedSize(const rmqt::FieldValue& fv);
static bsl::size_t encodedValueSize(const rmqt::FieldValue& fv);
static bsl::size_t encodedTableSize(const rmqt::FieldTable& table);
static bsl::size_t
fieldArrayContentsEncodedSize(const rmqt::FieldArray& fieldArray);
};
} // namespace rmqamqpt
} // namespace BloombergLP
#endif