cpp-msgpack-rpc
0.2.0
An RPC library implementing MessagePack RPC.
Toggle main menu visibility
Loading...
Searching...
No Matches
i_server_builder_impl.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 <memory>
23
24
#include "
msgpack_rpc/addresses/uri.h
"
25
#include "
msgpack_rpc/config/server_config.h
"
26
#include "
msgpack_rpc/executors/i_async_executor.h
"
27
#include "msgpack_rpc/impl/msgpack_rpc_export.h"
28
#include "
msgpack_rpc/logging/logger.h
"
29
#include "
msgpack_rpc/methods/i_method.h
"
30
#include "
msgpack_rpc/servers/impl/i_server_impl.h
"
31
#include "
msgpack_rpc/transport/i_backend.h
"
32
33
namespace
msgpack_rpc::servers::impl
{
34
38
class
IServerBuilderImpl {
39
public
:
45
virtual
void
register_protocol
(
46
std::shared_ptr<transport::IBackend> backend) = 0;
47
53
virtual
void
listen_to
(
addresses::URI
uri) = 0;
54
60
virtual
void
add_method
(std::unique_ptr<methods::IMethod> method) = 0;
61
67
[[nodiscard]]
virtual
std::unique_ptr<IServerImpl>
build
() = 0;
68
74
[[nodiscard]]
virtual
std::shared_ptr<logging::Logger>
logger
() = 0;
75
76
IServerBuilderImpl
(
const
IServerBuilderImpl&) =
delete
;
77
IServerBuilderImpl
(IServerBuilderImpl&&) =
delete
;
78
IServerBuilderImpl& operator=(
const
IServerBuilderImpl&) =
delete
;
79
IServerBuilderImpl& operator=(IServerBuilderImpl&&) =
delete
;
80
82
virtual
~IServerBuilderImpl
() noexcept = default;
83
84
protected:
86
IServerBuilderImpl() noexcept = default;
87
};
88
96
[[nodiscard]] MSGPACK_RPC_EXPORT
std
::unique_ptr<IServerBuilderImpl>
97
create_empty_server_builder_impl
(
98
std
::shared_ptr<
executors
::IAsyncExecutor> executor,
99
std
::shared_ptr<
logging
::Logger>
logger
);
100
108
[[nodiscard]] MSGPACK_RPC_EXPORT
std
::unique_ptr<IServerBuilderImpl>
109
create_default_builder_impl
(const
config
::ServerConfig& server_config,
110
const
std
::shared_ptr<
logging
::Logger>&
logger
);
111
112
}
// namespace msgpack_rpc::servers::impl
msgpack_rpc::addresses::URI
Class of URIs (Uniform Resource Identifiers) to specify endpoints in this library.
Definition
uri.h:38
msgpack_rpc::servers::impl::IServerBuilderImpl::register_protocol
virtual void register_protocol(std::shared_ptr< transport::IBackend > backend)=0
Register a protocol.
msgpack_rpc::servers::impl::IServerBuilderImpl::build
virtual std::unique_ptr< IServerImpl > build()=0
Build a server.
msgpack_rpc::servers::impl::IServerBuilderImpl::logger
virtual std::shared_ptr< logging::Logger > logger()=0
Get the logger in this builder.
msgpack_rpc::servers::impl::IServerBuilderImpl::listen_to
virtual void listen_to(addresses::URI uri)=0
Add a URI to listen to.
msgpack_rpc::servers::impl::IServerBuilderImpl::add_method
virtual void add_method(std::unique_ptr< methods::IMethod > method)=0
Add a method.
msgpack_rpc::servers::impl::IServerBuilderImpl::IServerBuilderImpl
IServerBuilderImpl() noexcept=default
Constructor.
msgpack_rpc::servers::impl::IServerBuilderImpl::~IServerBuilderImpl
virtual ~IServerBuilderImpl() noexcept=default
Destructor.
i_async_executor.h
Definition of IAsyncExecutor class.
i_backend.h
Definition of IBackend class.
i_method.h
Definition of IMethod class.
i_server_impl.h
Definition of IServerImpl class.
logger.h
Definition of Logger class.
msgpack_rpc::config
Namespace of configurations.
Definition
client_config.h:32
msgpack_rpc::executors
Namespace of executors to process asynchronous tasks.
Definition
asio_context_type.h:24
msgpack_rpc::logging
Namespace of logging.
Definition
i_log_sink.h:27
msgpack_rpc::servers::impl
Namespace of internal implementation.
Definition
i_server_builder_impl.h:33
msgpack_rpc::servers::impl::create_empty_server_builder_impl
std::unique_ptr< IServerBuilderImpl > create_empty_server_builder_impl(std::shared_ptr< executors::IAsyncExecutor > executor, std::shared_ptr< logging::Logger > logger)
Create an empty IServerBuilderImpl object.
Definition
i_server_builder_impl.cpp:33
msgpack_rpc::servers::impl::create_default_builder_impl
std::unique_ptr< IServerBuilderImpl > create_default_builder_impl(const config::ServerConfig &server_config, const std::shared_ptr< logging::Logger > &logger)
Create an IServerBuilderImpl object with default protocols.
Definition
i_server_builder_impl.cpp:41
std
STL namespace.
server_config.h
Definition of ServerConfig class.
uri.h
Definition of URI class.
include
msgpack_rpc
servers
impl
i_server_builder_impl.h
Generated on
for cpp-msgpack-rpc by
1.18.0