Subordination
A framework for distributed programming
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 
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
Definition: kernel.hh:12
Definition: foreign_kernel.hh:9