cpp-msgpack-rpc
0.2.0
An RPC library implementing MessagePack RPC.
Toggle main menu visibility
Loading...
Searching...
No Matches
server_builder.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 <cstdint>
23
#include <memory>
24
#include <optional>
25
#include <string_view>
26
#include <utility>
27
28
#include "
msgpack_rpc/addresses/schemes.h
"
29
#include "
msgpack_rpc/addresses/uri.h
"
30
#include "
msgpack_rpc/config/server_config.h
"
31
#include "
msgpack_rpc/logging/logger.h
"
32
#include "
msgpack_rpc/messages/method_name.h
"
33
#include "
msgpack_rpc/methods/functional_method.h
"
34
#include "
msgpack_rpc/methods/i_method.h
"
35
#include "
msgpack_rpc/servers/impl/i_server_builder_impl.h
"
36
#include "
msgpack_rpc/servers/server.h
"
37
38
namespace
msgpack_rpc::servers
{
39
43
class
ServerBuilder
{
44
public
:
51
ServerBuilder
() :
ServerBuilder
(
logging
::Logger::create()) {}
52
60
explicit
ServerBuilder
(
const
std::shared_ptr<logging::Logger>& logger)
61
:
ServerBuilder
(
config
::ServerConfig(), logger) {}
62
69
explicit
ServerBuilder
(
const
config::ServerConfig
& server_config,
70
const
std::shared_ptr<logging::Logger>& logger =
71
logging::Logger::create
())
72
:
impl_
(
impl
::create_default_builder_impl(server_config, logger)) {}
73
80
ServerBuilder
&
listen_to
(
addresses::URI
uri) {
81
impl_
->listen_to(std::move(uri));
82
return
*
this
;
83
}
84
91
ServerBuilder
&
listen_to
(std::string_view uri) {
92
impl_
->listen_to(
addresses::URI::parse
(uri));
93
return
*
this
;
94
}
95
103
ServerBuilder
&
listen_to_tcp
(
104
std::string_view host, std::uint16_t port_number) {
105
listen_to
(
addresses::URI
(
addresses::TCP_SCHEME
, host, port_number));
106
return
*
this
;
107
}
108
117
ServerBuilder
&
add_method
(std::unique_ptr<methods::IMethod> method) {
118
impl_
->add_method(std::move(method));
119
return
*
this
;
120
}
121
135
template
<
typename
Signature,
typename
Function>
136
ServerBuilder
&
add_method
(
messages::MethodName
name, Function&& function) {
137
return
add_method
(
138
methods::create_functional_method<Signature>
(std::move(name),
139
std::forward<Function>(function),
impl_
->logger()));
140
}
141
147
[[nodiscard]]
Server
build
() {
return
Server
{
impl_
->build()}; }
148
149
private
:
151
std::unique_ptr<impl::IServerBuilderImpl>
impl_
;
152
};
153
154
}
// namespace msgpack_rpc::servers
msgpack_rpc::addresses::URI
Class of URIs (Uniform Resource Identifiers) to specify endpoints in this library.
Definition
uri.h:38
msgpack_rpc::addresses::URI::parse
static URI parse(std::string_view uri_string)
Parse a string to create a URI.
Definition
uri.cpp:54
msgpack_rpc::config::ServerConfig
Class of configurations of servers.
Definition
server_config.h:35
msgpack_rpc::logging::Logger::create
static std::shared_ptr< Logger > create(const config::LoggingConfig &config=config::LoggingConfig())
Create a logger.
Definition
logger.h:62
msgpack_rpc::messages::MethodName
Class of method names.
Definition
method_name.h:35
msgpack_rpc::servers::ServerBuilder::ServerBuilder
ServerBuilder(const std::shared_ptr< logging::Logger > &logger)
Constructor.
Definition
server_builder.h:60
msgpack_rpc::servers::ServerBuilder::add_method
ServerBuilder & add_method(std::unique_ptr< methods::IMethod > method)
Add a method.
Definition
server_builder.h:117
msgpack_rpc::servers::ServerBuilder::ServerBuilder
ServerBuilder(const config::ServerConfig &server_config, const std::shared_ptr< logging::Logger > &logger=logging::Logger::create())
Constructor.
Definition
server_builder.h:69
msgpack_rpc::servers::ServerBuilder::ServerBuilder
ServerBuilder()
Constructor.
Definition
server_builder.h:51
msgpack_rpc::servers::ServerBuilder::add_method
ServerBuilder & add_method(messages::MethodName name, Function &&function)
Add a method implemented by a function object.
Definition
server_builder.h:136
msgpack_rpc::servers::ServerBuilder::build
Server build()
Build a server.
Definition
server_builder.h:147
msgpack_rpc::servers::ServerBuilder::listen_to
ServerBuilder & listen_to(std::string_view uri)
Add a URI to listen to.
Definition
server_builder.h:91
msgpack_rpc::servers::ServerBuilder::listen_to_tcp
ServerBuilder & listen_to_tcp(std::string_view host, std::uint16_t port_number)
Add a TCP address to listen to.
Definition
server_builder.h:103
msgpack_rpc::servers::ServerBuilder::impl_
std::unique_ptr< impl::IServerBuilderImpl > impl_
Internal implementation.
Definition
server_builder.h:151
msgpack_rpc::servers::ServerBuilder::listen_to
ServerBuilder & listen_to(addresses::URI uri)
Add a URI to listen to.
Definition
server_builder.h:80
msgpack_rpc::servers::Server
Class of servers.
Definition
server.h:37
functional_method.h
Definition of FunctionalMethod class.
i_method.h
Definition of IMethod class.
i_server_builder_impl.h
Definition of IServerBuilderImpl class.
logger.h
Definition of Logger class.
method_name.h
Definition of MethodName class.
msgpack_rpc::addresses::TCP_SCHEME
constexpr std::string_view TCP_SCHEME
Scheme of TCP.
Definition
schemes.h:27
msgpack_rpc::config
Namespace of configurations.
Definition
client_config.h:32
msgpack_rpc::logging
Namespace of logging.
Definition
i_log_sink.h:27
msgpack_rpc::methods::create_functional_method
std::unique_ptr< FunctionalMethod< Signature, Function > > create_functional_method(messages::MethodName name, Function &&function, std::shared_ptr< logging::Logger > logger)
Create a method implemented by a function object.
Definition
functional_method.h:265
msgpack_rpc::servers::impl
Namespace of internal implementation.
Definition
i_server_builder_impl.h:33
msgpack_rpc::servers
Namespace of servers.
Definition
i_server_builder_impl.h:33
schemes.h
Definition of constants of schemes.
server.h
Definition of Server class.
server_config.h
Definition of ServerConfig class.
uri.h
Definition of URI class.
include
msgpack_rpc
servers
server_builder.h
Generated on
for cpp-msgpack-rpc by
1.18.0