cpp-msgpack-rpc
0.2.0
An RPC library implementing MessagePack RPC.
Loading...
Searching...
No Matches
request_id_generator.h
Go to the documentation of this file.
1
/*
2
* Copyright 2023 MusicScience37 (Kenta Kabashima)
3
*
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
15
*/
20
#pragma once
21
22
#include <atomic>
23
#include <random>
24
25
#include "
msgpack_rpc/messages/message_id.h
"
26
27
namespace
msgpack_rpc::clients::impl
{
28
32
class
RequestIDGenerator
{
33
public
:
37
RequestIDGenerator
() :
next_id_
(
generate_initial_id
()) {}
38
44
[[nodiscard]]
messages::MessageID
generate
() {
return
next_id_
++; }
45
46
private
:
52
[[nodiscard]]
static
messages::MessageID
generate_initial_id
() {
53
std::random_device generator;
54
std::uniform_int_distribution<messages::MessageID> dist;
55
return
dist(generator);
56
}
57
59
std::atomic<messages::MessageID>
next_id_
;
60
};
61
62
}
// namespace msgpack_rpc::clients::impl
msgpack_rpc::clients::impl::RequestIDGenerator::next_id_
std::atomic< messages::MessageID > next_id_
Next ID.
Definition
request_id_generator.h:59
msgpack_rpc::clients::impl::RequestIDGenerator::generate
messages::MessageID generate()
Generate an ID.
Definition
request_id_generator.h:44
msgpack_rpc::clients::impl::RequestIDGenerator::generate_initial_id
static messages::MessageID generate_initial_id()
Generate the initial ID.
Definition
request_id_generator.h:52
msgpack_rpc::clients::impl::RequestIDGenerator::RequestIDGenerator
RequestIDGenerator()
Constructor.
Definition
request_id_generator.h:37
message_id.h
Definition of MessageID type.
msgpack_rpc::clients::impl
Namespace of internal implementations.
Definition
i_call_future_impl.h:26
msgpack_rpc::messages::MessageID
std::uint32_t MessageID
Type of message IDs.
Definition
message_id.h:27
src
msgpack_rpc
clients
impl
request_id_generator.h
Generated on
for cpp-msgpack-rpc by
1.14.0