CCF
Loading...
Searching...
No Matches
custom_protocol_subsystem_interface.h
Go to the documentation of this file.
1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the Apache 2.0 License.
3#pragma once
4
6#include "ccf/node/session.h"
8#include "ccf/rpc_context.h"
10#include "ccf/tx.h"
11
12#include <functional>
13#include <memory>
14
15namespace ccf
16{
17 namespace tls
18 {
19 class Context;
20 using ConnID = int64_t;
21 }
22
24 {
25 public:
26 using CreateSessionFn = std::function<std::shared_ptr<Session>(
27 ccf::tls::ConnID, const std::unique_ptr<tls::Context>&&)>;
28
30
31 static char const* get_subsystem_name()
32 {
33 return "Custom Protocol";
34 }
35
36 virtual void install(
37 const std::string& protocol_name, CreateSessionFn create_session_f) = 0;
38
39 virtual void uninstall(const std::string& protocol_name) = 0;
40
41 virtual std::shared_ptr<Session> create_session(
42 const std::string& protocol_name,
43 ccf::tls::ConnID conn_id,
44 const std::unique_ptr<tls::Context>&& ctx) = 0;
45
47 {
49 std::shared_ptr<ccf::kv::ReadOnlyTx> tx;
50 std::shared_ptr<ccf::endpoints::ReadOnlyEndpointContext> ctx;
51 };
52
53 virtual std::shared_ptr<Essentials> get_essentials() = 0;
54 };
55}
Definition node_subsystem_interface.h:8
Definition custom_protocol_subsystem_interface.h:24
std::function< std::shared_ptr< Session >(ccf::tls::ConnID, const std::unique_ptr< tls::Context > &&)> CreateSessionFn
Definition custom_protocol_subsystem_interface.h:27
static char const * get_subsystem_name()
Definition custom_protocol_subsystem_interface.h:31
virtual void install(const std::string &protocol_name, CreateSessionFn create_session_f)=0
virtual std::shared_ptr< Essentials > get_essentials()=0
virtual std::shared_ptr< Session > create_session(const std::string &protocol_name, ccf::tls::ConnID conn_id, const std::unique_ptr< tls::Context > &&ctx)=0
virtual ~CustomProtocolSubsystemInterface()=default
virtual void uninstall(const std::string &protocol_name)=0
Definition context.h:17
int64_t ConnID
Definition custom_protocol_subsystem_interface.h:20
Definition app_interface.h:14
std::shared_ptr< AbstractWriter > WriterPtr
Definition ring_buffer_types.h:150
Definition key_exchange.h:18
Definition custom_protocol_subsystem_interface.h:47
std::shared_ptr< ccf::endpoints::ReadOnlyEndpointContext > ctx
Definition custom_protocol_subsystem_interface.h:50
ringbuffer::WriterPtr writer
Definition custom_protocol_subsystem_interface.h:48
std::shared_ptr< ccf::kv::ReadOnlyTx > tx
Definition custom_protocol_subsystem_interface.h:49