14#include <aws/event-stream/event_stream.h>
50 m_eventHeaderType(static_cast<
EventHeaderType>(header->header_value_type)),
51 m_eventHeaderStaticValue({0})
53 switch (m_eventHeaderType)
55 case EventHeaderType::BOOL_TRUE:
56 case EventHeaderType::BOOL_FALSE:
57 m_eventHeaderStaticValue.boolValue = aws_event_stream_header_value_as_bool(header) != 0;
59 case EventHeaderType::BYTE:
60 m_eventHeaderStaticValue.byteValue = aws_event_stream_header_value_as_byte(header);
62 case EventHeaderType::INT16:
63 m_eventHeaderStaticValue.int16Value = aws_event_stream_header_value_as_int16(header);
65 case EventHeaderType::INT32:
66 m_eventHeaderStaticValue.int32Value = aws_event_stream_header_value_as_int32(header);
68 case EventHeaderType::INT64:
69 m_eventHeaderStaticValue.int64Value = aws_event_stream_header_value_as_int64(header);
71 case EventHeaderType::BYTE_BUF:
72 m_eventHeaderVariableLengthValue =
ByteBuffer(
static_cast<uint8_t*
>(aws_event_stream_header_value_as_bytebuf(header).
buffer), header->header_value_len);
74 case EventHeaderType::STRING:
75 m_eventHeaderVariableLengthValue =
ByteBuffer(
static_cast<uint8_t*
>(aws_event_stream_header_value_as_string(header).
buffer), header->header_value_len);
77 case EventHeaderType::TIMESTAMP:
78 m_eventHeaderStaticValue.timestampValue = aws_event_stream_header_value_as_timestamp(header);
80 case EventHeaderType::UUID:
81 assert(header->header_value_len == 16u);
82 m_eventHeaderVariableLengthValue =
ByteBuffer(
static_cast<uint8_t*
>(aws_event_stream_header_value_as_uuid(header).
buffer), header->header_value_len);
85 AWS_LOG_ERROR(CLASS_TAG,
"Encountered unknown type of header.");
92 m_eventHeaderVariableLengthValue(reinterpret_cast<const uint8_t*>(s.data()), s.
length()),
93 m_eventHeaderStaticValue({0})
99 m_eventHeaderVariableLengthValue(bb),
100 m_eventHeaderStaticValue({0})
106 m_eventHeaderVariableLengthValue(std::move(bb)),
107 m_eventHeaderStaticValue({0})
114 m_eventHeaderStaticValue({0})
116 m_eventHeaderStaticValue.byteValue = byte;
121 m_eventHeaderStaticValue({0})
123 m_eventHeaderStaticValue.boolValue =
b;
128 m_eventHeaderStaticValue({0})
130 m_eventHeaderStaticValue.int16Value = n;
135 m_eventHeaderStaticValue({0})
137 m_eventHeaderStaticValue.int32Value = n;
141 m_eventHeaderType(type),
142 m_eventHeaderStaticValue({0})
144 if (type == EventHeaderType::TIMESTAMP)
146 m_eventHeaderStaticValue.timestampValue = n;
150 m_eventHeaderStaticValue.int64Value = n;
166 assert(m_eventHeaderType == EventHeaderType::BOOL_TRUE || m_eventHeaderType == EventHeaderType::BOOL_FALSE);
167 if (m_eventHeaderType != EventHeaderType::BOOL_TRUE && m_eventHeaderType != EventHeaderType::BOOL_FALSE)
169 AWS_LOGSTREAM_ERROR(
CLASS_TAG,
"Expected event header type is TRUE or FALSE, but encountered " << GetNameForEventHeaderType(m_eventHeaderType));
172 return m_eventHeaderStaticValue.boolValue;
181 assert(m_eventHeaderType == EventHeaderType::BYTE);
182 if (m_eventHeaderType != EventHeaderType::BYTE)
185 return static_cast<uint8_t
>(0);
187 return m_eventHeaderStaticValue.byteValue;
196 assert(m_eventHeaderType == EventHeaderType::INT16);
197 if (m_eventHeaderType != EventHeaderType::INT16)
199 AWS_LOGSTREAM_ERROR(
CLASS_TAG,
"Expected event header type is INT16, but encountered " << GetNameForEventHeaderType(m_eventHeaderType));
200 return static_cast<int16_t
>(0);
202 return m_eventHeaderStaticValue.int16Value;
211 assert(m_eventHeaderType == EventHeaderType::INT32);
212 if (m_eventHeaderType != EventHeaderType::INT32)
214 AWS_LOGSTREAM_ERROR(
CLASS_TAG,
"Expected event header type is INT32, but encountered " << GetNameForEventHeaderType(m_eventHeaderType));
215 return static_cast<int32_t
>(0);
217 return m_eventHeaderStaticValue.int32Value;
226 assert(m_eventHeaderType == EventHeaderType::INT64);
227 if (m_eventHeaderType != EventHeaderType::INT64)
229 AWS_LOGSTREAM_ERROR(
CLASS_TAG,
"Expected event header type is INT64, but encountered " << GetNameForEventHeaderType(m_eventHeaderType));
230 return static_cast<uint64_t
>(0);
232 return m_eventHeaderStaticValue.int64Value;
241 assert(m_eventHeaderType == EventHeaderType::BYTE_BUF);
242 if (m_eventHeaderType != EventHeaderType::BYTE_BUF)
244 AWS_LOGSTREAM_ERROR(
CLASS_TAG,
"Expected event header type is BYTE_BUF, but encountered " << GetNameForEventHeaderType(m_eventHeaderType));
247 return m_eventHeaderVariableLengthValue;
256 assert(m_eventHeaderType == EventHeaderType::STRING);
257 if (m_eventHeaderType != EventHeaderType::STRING)
259 AWS_LOGSTREAM_ERROR(
CLASS_TAG,
"Expected event header type is STRING, but encountered " << GetNameForEventHeaderType(m_eventHeaderType));
262 return Aws::String(
reinterpret_cast<char*
>(m_eventHeaderVariableLengthValue.GetUnderlyingData()), m_eventHeaderVariableLengthValue.GetLength());
271 assert(m_eventHeaderType == EventHeaderType::TIMESTAMP);
272 if (m_eventHeaderType != EventHeaderType::TIMESTAMP)
274 AWS_LOGSTREAM_ERROR(
CLASS_TAG,
"Expected event header type is TIMESTAMP, but encountered " << GetNameForEventHeaderType(m_eventHeaderType));
275 return static_cast<int64_t
>(0);
277 return m_eventHeaderStaticValue.timestampValue;
286 assert(m_eventHeaderType == EventHeaderType::UUID);
287 assert(m_eventHeaderVariableLengthValue.GetLength() == 16u);
288 if (m_eventHeaderType != EventHeaderType::UUID)
294 return Aws::Utils::UUID(m_eventHeaderVariableLengthValue.GetUnderlyingData());
299 return m_eventHeaderVariableLengthValue;
303 EventHeaderType m_eventHeaderType;
313 } m_eventHeaderStaticValue;
#define AWS_LOG_ERROR(tag,...)
#define AWS_LOGSTREAM_ERROR(tag, streamExpression)
Aws::Map< Aws::String, EventHeaderValue > EventHeaderValueCollection
std::pair< Aws::String, EventHeaderValue > EventHeaderValuePair
static const char CLASS_TAG[]
std::map< K, V, std::less< K >, Aws::Allocator< std::pair< const K, V > > > Map
std::basic_string< char, std::char_traits< char >, Aws::Allocator< char > > String