CCF
Loading...
Searching...
No Matches
client_session.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
5#include "http/http_builder.h"
6#include "tcp/msg_types.h"
7
8namespace ccf
9{
11 {
12 public:
13 virtual ~ClientSession() = default;
14
15 using HandleDataCallback = std::function<void(
16 ccf::http_status status,
17 http::HeaderMap&& headers,
18 std::vector<uint8_t>&& body)>;
19
21 std::function<void(const std::string& error_msg)>;
22
23 protected:
26
27 private:
28 int64_t client_session_id;
30
31 public:
33 int64_t client_session_id,
34 ringbuffer::AbstractWriterFactory& writer_factory) :
35 client_session_id(client_session_id),
36 to_host(writer_factory.create_writer_to_outside())
37 {}
38
39 virtual void send_request(::http::Request&& request) = 0;
40
41 virtual void connect(
42 const std::string& hostname,
43 const std::string& service,
44 const HandleDataCallback f,
45 const HandleErrorCallback e = nullptr)
46 {
48 ::tcp::tcp_connect, to_host, client_session_id, hostname, service);
51 }
52 };
53}
Definition client_session.h:11
virtual void connect(const std::string &hostname, const std::string &service, const HandleDataCallback f, const HandleErrorCallback e=nullptr)
Definition client_session.h:41
std::function< void(const std::string &error_msg)> HandleErrorCallback
Definition client_session.h:21
std::function< void(ccf::http_status status, http::HeaderMap &&headers, std::vector< uint8_t > &&body)> HandleDataCallback
Definition client_session.h:18
virtual void send_request(::http::Request &&request)=0
HandleDataCallback handle_data_cb
Definition client_session.h:24
ClientSession(int64_t client_session_id, ringbuffer::AbstractWriterFactory &writer_factory)
Definition client_session.h:32
HandleErrorCallback handle_error_cb
Definition client_session.h:25
virtual ~ClientSession()=default
Definition http_builder.h:117
Definition ring_buffer_types.h:157
std::map< std::string, std::string, std::less<> > HeaderMap
Definition http_header_map.h:10
Definition app_interface.h:14
llhttp_status http_status
Definition http_status.h:9
std::shared_ptr< AbstractWriter > WriterPtr
Definition ring_buffer_types.h:154
#define RINGBUFFER_WRITE_MESSAGE(MSG,...)
Definition ring_buffer_types.h:259