Sese Framework
x.y.z
A cross-platform framework
载入中...
搜索中...
未找到
IPC.h
浏览该文件的文档.
1
// Copyright 2024 libsese
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
// http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14
15
#pragma once
16
17
#include <
sese/system/Semaphore.h
>
18
#include <
sese/system/SharedMemory.h
>
19
20
#include <list>
21
22
namespace
sese::system
{
23
25
struct
MemInfo
{
27
size_t
total_size
;
29
size_t
tail
;
30
};
31
33
class
Message
{
34
public
:
37
explicit
Message
(std::string
message
);
38
41
[[nodiscard]]
const
std::string &
getDataAsString
()
const
;
42
45
[[nodiscard]]
const
void
*
data
()
const
;
46
49
[[nodiscard]]
size_t
length
()
const
;
50
51
private
:
52
std::string
message
;
53
};
54
56
struct
MessageIterator
{
57
uint32_t
id
;
58
uint32_t
length
;
59
void
*
buffer
;
60
};
61
63
class
IPCChannel
{
64
public
:
65
using
Ptr
= std::unique_ptr<IPCChannel>;
66
71
static
IPCChannel::Ptr
create
(
const
std::string &name,
size_t
buffer_size);
72
73
static
Result<Ptr>
createEx
(
const
std::string &name,
size_t
buffer_size);
74
78
static
IPCChannel::Ptr
use
(
const
std::string &name);
79
80
static
Result<Ptr>
useEx
(
const
std::string &name);
81
87
bool
write
(uint32_t
id
,
const
void
*data, uint32_t length);
88
93
bool
write
(uint32_t
id
,
const
std::string &message);
94
98
std::list<Message>
read
(uint32_t
id
);
99
100
private
:
101
IPCChannel
() =
default
;
102
103
MemInfo
*
mem_info
{};
104
void
*
buffer
{};
105
Semaphore::Ptr
semaphore
{};
106
SharedMemory::Ptr
shared_memory
{};
107
};
108
109
}
sese
system
IPC.h
生成于 2024年 十一月 4日 星期一 09:58:02 , 为 Sese Framework使用
1.11.0