fpmas 1.6
enums.h
Go to the documentation of this file.
1#ifndef FPMAS_HARD_SYNC_ENUMS_H
2#define FPMAS_HARD_SYNC_ENUMS_H
3
8#include "fpmas/io/datapack.h"
9
10namespace fpmas { namespace synchro {
11 namespace hard { namespace api {
15 enum Epoch : int {
16 EVEN = 0x00,
17 ODD = 0x10
18 };
19
23 enum Tag : int {
24 READ = 0x00,
25 READ_RESPONSE = 0x01,
26 ACQUIRE = 0x02,
27 ACQUIRE_RESPONSE = 0x03,
28 RELEASE_ACQUIRE = 0x04,
29 LOCK = 0x05,
30 LOCK_RESPONSE = 0x06,
31 UNLOCK = 0x07,
32 LOCK_SHARED = 0x08,
33 LOCK_SHARED_RESPONSE = 0x09,
34 UNLOCK_SHARED = 0x0A,
35 LINK = 0x0B,
36 UNLINK = 0x0C,
37 REMOVE_NODE = 0x0D,
38 TOKEN = 0x0E,
39 END = 0x0F
40 };
41
45 enum Color : std::uint8_t {
46 WHITE = 0,
47 BLACK = 1
48 };
49
54 enum class MutexRequestType {
55 READ, LOCK, ACQUIRE, LOCK_SHARED
56 };
57 }
58}}}
59
60namespace fpmas { namespace io { namespace datapack {
64 template<>
65 struct Serializer<synchro::hard::api::Color> {
70 template<typename PackType>
71 static std::size_t size(const PackType& p) {
72 return p.template size<std::uint8_t>();
73 }
74
78 template<typename PackType>
79 static std::size_t size(const PackType& p, const synchro::hard::api::Color&) {
80 return p.template size<std::uint8_t>();
81 }
82
89 template<typename PackType>
90 static void to_datapack(
91 PackType& pack, const synchro::hard::api::Color& color) {
92 pack.template put((std::uint8_t) color);
93 }
94
101 template<typename PackType>
102 static synchro::hard::api::Color from_datapack(const PackType& pack) {
103 return (synchro::hard::api::Color) pack.template get<std::uint8_t>();
104 }
105 };
106}}}
107#endif
Epoch
Definition: enums.h:15
MutexRequestType
Definition: enums.h:54
Color
Definition: enums.h:45
Tag
Definition: enums.h:23
Definition: fpmas.cpp:3
static synchro::hard::api::Color from_datapack(const PackType &pack)
Definition: enums.h:102
static std::size_t size(const PackType &p, const synchro::hard::api::Color &)
Definition: enums.h:79
static std::size_t size(const PackType &p)
Definition: enums.h:71
static void to_datapack(PackType &pack, const synchro::hard::api::Color &color)
Definition: enums.h:90
Definition: datapack.h:55