Flow-IPC
1.0.0
Flow-IPC project: Full implementation reference.
shm
shm.hpp
Go to the documentation of this file.
1
/* Flow-IPC: Shared Memory
2
* Copyright 2023 Akamai Technologies, Inc.
3
*
4
* Licensed under the Apache License, Version 2.0 (the
5
* "License"); you may not use this file except in
6
* compliance with the License. You may obtain a copy
7
* of the License at
8
*
9
* https://www.apache.org/licenses/LICENSE-2.0
10
*
11
* Unless required by applicable law or agreed to in
12
* writing, software distributed under the License is
13
* distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
14
* CONDITIONS OF ANY KIND, either express or implied.
15
* See the License for the specific language governing
16
* permissions and limitations under the License. */
17
18
/// @file
19
#pragma once
20
21
// (See shm_fwd.hpp for doc header for this namespace.)
22
namespace
ipc::shm
23
{
24
25
// Types.
26
27
/**
28
* Implementation of #Arena_to_borrower_allocator_arena_t. See specializations which actually contain the mapping for
29
* specific `Arena` types; for example: `Arena_to_shm_session<classic::Pool_arena>`,
30
* `Arena_to_shm_session<arena_lend::jemalloc::Ipc_arena>`.
31
*/
32
template
<
typename
Arena>
33
struct
Arena_to_borrower_allocator_arena
34
{
35
/// Implementation of #Arena_to_borrower_allocator_arena_t. There is no default mapping; see specializations.
36
using
Type
= void;
37
};
38
39
/**
40
* Alias that, given an `Arena` type (with `Arena::construct<T>()` which allocates/constructs a `T`), yields a
41
* `Borrower_allocator_arena` type which can be used as the `Arena` arg to stl::Stateless_allocator for the
42
* borrower-side counterpart `T`, usable in `Shm_session::borrow_object<T>()` to recover so-constructed
43
* objects.
44
*
45
* Informally, for informational convenience:
46
* - Arena-sharing SHM-providers (classic::Pool_arena as of this writing), by definition, are symmetric, where
47
* each side can both lend and borrow, allocate and write within the same `Arena`. Hence they will
48
* map `Arena` to itself.
49
* - Arena-lending SHM-providers (arena_lend::jemalloc as of this writing), by definition, are asymmetric;
50
* the borrowing side can only read, not allocate. Hence they will map `Arena` to a different borrower-arena
51
* type only whose `Pointer` *type* member shall be used.
52
*
53
* @tparam Arena
54
* SHM arena type that has method of the form `shared_ptr<T> construct<T>(...)`.
55
*/
56
template
<
typename
Arena>
57
using
Arena_to_borrower_allocator_arena_t
=
typename
Arena_to_borrower_allocator_arena<Arena>::Type
;
58
59
}
// namespace ipc::shm
ipc::shm
Modules for SHared Memory (SHM) support.
Definition:
classic.hpp:26
ipc::shm::Arena_to_borrower_allocator_arena_t
typename Arena_to_borrower_allocator_arena< Arena >::Type Arena_to_borrower_allocator_arena_t
Alias that, given an Arena type (with Arena::construct<T>() which allocates/constructs a T),...
Definition:
shm.hpp:57
ipc::shm::Arena_to_borrower_allocator_arena
Implementation of Arena_to_borrower_allocator_arena_t.
Definition:
shm.hpp:34
ipc::shm::Arena_to_borrower_allocator_arena::Type
void Type
Implementation of Arena_to_borrower_allocator_arena_t. There is no default mapping; see specializatio...
Definition:
shm.hpp:36
Generated on Wed Mar 20 2024 06:27:27 for Flow-IPC by
1.9.4