userver
C++ Async Framework
Toggle main menu visibility
Loading...
Searching...
No Matches
message.hpp
Go to the documentation of this file.
1
#
pragma
once
2
3
/// @file userver/kafka/message.hpp
4
/// @brief @copybrief kafka::Message
5
6
#
include
<
chrono
>
7
#
include
<
optional
>
8
9
#
include
<
userver
/
kafka
/
headers
.
hpp
>
10
#
include
<
userver
/
utils
/
fast_pimpl
.
hpp
>
11
#
include
<
userver
/
utils
/
span
.
hpp
>
12
#
include
<
userver
/
utils
/
zstring_view
.
hpp
>
13
14
USERVER_NAMESPACE_BEGIN
15
16
namespace
kafka {
17
18
namespace
impl {
19
20
class
ConsumerImpl;
21
class
MessageHolder;
22
23
}
// namespace impl
24
25
/// @brief Wrapper for polled message data access.
26
class
Message
final
{
27
public
:
28
~Message();
29
30
Message(Message&&)
noexcept
;
31
Message& operator=(Message&&)
noexcept
=
delete
;
32
33
Message(
const
Message&) =
delete
;
34
Message& operator=(
const
Message&) =
delete
;
35
36
const
std::string& GetTopic()
const
;
37
std::string_view GetKey()
const
;
38
std::string_view GetPayload()
const
;
39
std::optional<std::chrono::milliseconds> GetTimestamp()
const
;
40
int
GetPartition()
const
;
41
std::int64_t GetOffset()
const
;
42
43
/// @note Headers are parsed only when accessed first time.
44
///
45
/// If name `name` passed, only headers with such name returns
46
///
47
/// Usage example:
48
///
49
/// - All headers:
50
/// @snippet kafka/tests/consumer_kafkatest.cpp Message iterate headers
51
/// - Start own headers
52
/// @snippet kafka/tests/consumer_kafkatest.cpp Message copy headers
53
HeadersReader
GetHeaders
()
const
&;
54
HeadersReader
GetHeaders() && =
delete
;
55
56
/// @brief Returns **last** header with given name.
57
/// @warning This operation has O(N) complexity, where N == number of all message headers.
58
std::optional<std::string_view>
GetHeader
(
utils
::
zstring_view
name)
const
;
59
60
private
:
61
friend
class
impl::ConsumerImpl;
62
63
explicit
Message(impl::MessageHolder&& message);
64
65
struct
MessageData;
66
using
DataStorage =
utils
::FastPimpl<MessageData, 72, 8>;
67
68
DataStorage data_;
69
};
70
71
using
MessageBatchView =
utils
::
span
<
const
Message>;
72
73
}
// namespace kafka
74
75
USERVER_NAMESPACE_END
userver
kafka
message.hpp
Generated on
for userver by
Doxygen
1.17.0