Subordination
A framework for distributed programming
home
slurm-ci
jobs
subordination-subordination-17
src
subordination
kernel
foreign_kernel.hh
1
#ifndef SUBORDINATION_KERNEL_FOREIGN_KERNEL_HH
2
#define SUBORDINATION_KERNEL_FOREIGN_KERNEL_HH
3
4
#include <subordination/kernel/kernel.hh>
5
#include <subordination/kernel/kernel_type.hh>
6
7
namespace
sbn {
8
9
class
foreign_kernel
:
public
kernel
{
10
11
private
:
12
typedef
char
char_type;
13
typedef
size_t
size_type;
14
typedef ::sbn::kernel_type::id_type id_type;
15
16
private
:
17
size_type _size = 0;
18
char_type* _payload =
nullptr
;
19
id_type _type = 0;
20
21
public
:
22
23
foreign_kernel
() =
default
;
24
25
foreign_kernel
(
const
foreign_kernel
&) =
delete
;
26
27
foreign_kernel
&
28
operator=(
const
foreign_kernel
&) =
delete
;
29
30
inline
31
~
foreign_kernel
() {
32
this->free();
33
}
34
35
inline
id_type
36
type()
const
noexcept {
37
return
this->_type;
38
}
39
40
void
41
write(sys::pstream& out)
const override
;
42
43
void
44
read(sys::pstream& in)
override
;
45
46
private
:
47
48
inline
void
49
free() {
50
delete
[] this->_payload;
51
this->_payload =
nullptr
;
52
this->_size = 0;
53
}
54
55
};
56
57
}
58
59
#endif // vim:filetype=cpp
sbn::kernel
Definition:
kernel.hh:12
sbn::foreign_kernel
Definition:
foreign_kernel.hh:9
Generated by
1.8.15