AWS IoT Device SDK C++ v2
1.44.1
AWS IoT Device SDK C++ v2
Toggle main menu visibility
Loading...
Searching...
No Matches
crt
aws-crt-cpp
include
aws
crt
io
ChannelHandler.h
Go to the documentation of this file.
1
#pragma once
6
7
#include <
aws/crt/Exports.h
>
8
#include <
aws/crt/Types.h
>
9
#include <aws/io/channel.h>
10
11
#include <chrono>
12
#include <cstddef>
13
14
struct
aws_array_list;
15
struct
aws_io_message;
16
17
namespace
Aws
18
{
19
namespace
Crt
20
{
21
namespace
Io
22
{
23
enum class
ChannelDirection
24
{
25
Read
,
26
Write
,
27
};
28
29
enum class
MessageType
30
{
31
ApplicationData
,
32
};
33
34
enum class
TaskStatus
35
{
36
RunReady
,
37
Canceled
,
38
};
39
46
class
AWS_CRT_CPP_API
ChannelHandler
47
{
48
public
:
49
virtual
~ChannelHandler
() =
default
;
50
51
ChannelHandler
(
const
ChannelHandler
&) =
delete
;
52
ChannelHandler
&
operator=
(
const
ChannelHandler
&) =
delete
;
53
54
protected
:
68
virtual
int
ProcessReadMessage
(
struct
aws_io_message *message) = 0;
69
79
virtual
int
ProcessWriteMessage
(
struct
aws_io_message *message) = 0;
80
89
virtual
int
IncrementReadWindow
(
size_t
size) = 0;
90
103
virtual
void
ProcessShutdown
(
104
ChannelDirection
dir,
105
int
errorCode,
106
bool
freeScarceResourcesImmediately) = 0;
107
111
virtual
size_t
InitialWindowSize
() = 0;
112
117
virtual
size_t
MessageOverhead
() = 0;
118
122
virtual
void
ResetStatistics
() {};
123
128
virtual
void
GatherStatistics
(
struct
aws_array_list *) {}
129
130
public
:
132
struct
aws_channel_handler *SeatForCInterop(
const
std::shared_ptr<ChannelHandler> &selfRef);
133
137
bool
ChannelsThreadIsCallersThread()
const
;
138
144
void
ShutDownChannel(
int
errorCode);
145
150
void
ScheduleTask(std::function<
void
(
TaskStatus
)> &&task);
151
157
void
ScheduleTask(std::function<
void
(
TaskStatus
)> &&task, std::chrono::nanoseconds run_in);
158
159
protected
:
160
ChannelHandler
(
Allocator
*allocator =
ApiAllocator
());
161
165
struct
aws_io_message *AcquireMessageFromPool(
MessageType
messageType,
size_t
sizeHint);
166
172
struct
aws_io_message *AcquireMaxSizeMessageForWrite();
173
179
bool
SendMessage(
struct
aws_io_message *message,
ChannelDirection
direction);
180
185
bool
IncrementUpstreamReadWindow(
size_t
windowUpdateSize);
186
191
void
OnShutdownComplete(
ChannelDirection
direction,
int
errorCode,
bool
freeScarceResourcesImmediately);
192
198
size_t
DownstreamReadWindow()
const
;
199
204
size_t
UpstreamMessageOverhead()
const
;
205
206
struct
aws_channel_slot *GetSlot()
const
;
207
208
struct
aws_channel_handler
m_handler
;
209
Allocator
*
m_allocator
;
210
211
private
:
212
std::shared_ptr<ChannelHandler> m_selfReference;
213
static
struct
aws_channel_handler_vtable s_vtable;
214
215
static
void
s_Destroy(
struct
aws_channel_handler *handler);
216
static
int
s_ProcessReadMessage(
217
struct
aws_channel_handler *,
218
struct
aws_channel_slot *,
219
struct
aws_io_message *);
220
static
int
s_ProcessWriteMessage(
221
struct
aws_channel_handler *,
222
struct
aws_channel_slot *,
223
struct
aws_io_message *);
224
static
int
s_IncrementReadWindow(
struct
aws_channel_handler *,
struct
aws_channel_slot *,
size_t
size);
225
static
int
s_ProcessShutdown(
226
struct
aws_channel_handler *,
227
struct
aws_channel_slot *,
228
enum
aws_channel_direction,
229
int
errorCode,
230
bool
freeScarceResourcesImmediately);
231
static
size_t
s_InitialWindowSize(
struct
aws_channel_handler *);
232
static
size_t
s_MessageOverhead(
struct
aws_channel_handler *);
233
static
void
s_ResetStatistics(
struct
aws_channel_handler *);
234
static
void
s_GatherStatistics(
struct
aws_channel_handler *,
struct
aws_array_list *statsList);
235
};
236
}
// namespace Io
237
}
// namespace Crt
238
}
// namespace Aws
Types.h
Aws::Crt::Io::ChannelHandler
Definition
ChannelHandler.h:47
Aws::Crt::Io::ChannelHandler::m_handler
struct aws_channel_handler m_handler
Definition
ChannelHandler.h:208
Aws::Crt::Io::ChannelHandler::ProcessShutdown
virtual void ProcessShutdown(ChannelDirection dir, int errorCode, bool freeScarceResourcesImmediately)=0
Aws::Crt::Io::ChannelHandler::ProcessWriteMessage
virtual int ProcessWriteMessage(struct aws_io_message *message)=0
Aws::Crt::Io::ChannelHandler::MessageOverhead
virtual size_t MessageOverhead()=0
Aws::Crt::Io::ChannelHandler::GatherStatistics
virtual void GatherStatistics(struct aws_array_list *)
Definition
ChannelHandler.h:128
Aws::Crt::Io::ChannelHandler::ChannelHandler
ChannelHandler(const ChannelHandler &)=delete
Aws::Crt::Io::ChannelHandler::ProcessReadMessage
virtual int ProcessReadMessage(struct aws_io_message *message)=0
Aws::Crt::Io::ChannelHandler::ResetStatistics
virtual void ResetStatistics()
Definition
ChannelHandler.h:122
Aws::Crt::Io::ChannelHandler::m_allocator
Allocator * m_allocator
Definition
ChannelHandler.h:209
Aws::Crt::Io::ChannelHandler::IncrementReadWindow
virtual int IncrementReadWindow(size_t size)=0
Aws::Crt::Io::ChannelHandler::~ChannelHandler
virtual ~ChannelHandler()=default
Aws::Crt::Io::ChannelHandler::operator=
ChannelHandler & operator=(const ChannelHandler &)=delete
Aws::Crt::Io::ChannelHandler::InitialWindowSize
virtual size_t InitialWindowSize()=0
Exports.h
AWS_CRT_CPP_API
#define AWS_CRT_CPP_API
Definition
Exports.h:36
Aws::Crt::Io
Definition
Credentials.h:23
Aws::Crt::Io::ChannelDirection
ChannelDirection
Definition
ChannelHandler.h:24
Aws::Crt::Io::ChannelDirection::Write
@ Write
Definition
ChannelHandler.h:26
Aws::Crt::Io::ChannelDirection::Read
@ Read
Definition
ChannelHandler.h:25
Aws::Crt::Io::MessageType
MessageType
Definition
ChannelHandler.h:30
Aws::Crt::Io::MessageType::ApplicationData
@ ApplicationData
Definition
ChannelHandler.h:31
Aws::Crt::Io::TaskStatus
TaskStatus
Definition
ChannelHandler.h:35
Aws::Crt::Io::TaskStatus::Canceled
@ Canceled
Definition
ChannelHandler.h:37
Aws::Crt::Io::TaskStatus::RunReady
@ RunReady
Definition
ChannelHandler.h:36
Aws::Crt
Definition
Allocator.h:13
Aws::Crt::ApiAllocator
AWS_CRT_CPP_API Allocator * ApiAllocator() noexcept
Definition
Allocator.cpp:24
Aws::Crt::Allocator
aws_allocator Allocator
Definition
Allocator.h:14
Aws
Definition
Allocator.h:11
Generated by
1.17.0