9#ifndef _dcfa5213_ad7e_4194_8b4b_e630aa0df2e8
10#define _dcfa5213_ad7e_4194_8b4b_e630aa0df2e8
23#define ODIL_MESSAGE_MANDATORY_FIELD_MACRO(name, tag, TValueType, function) \
25 TValueType const & get_##name() const \
27 auto const & data = this->_command_set->function(tag); \
30 throw Exception("Empty element"); \
35 void set_##name(TValueType const & value) \
37 if(!this->_command_set->has(tag)) \
39 this->_command_set->add(tag); \
41 this->_command_set->function(tag) = { value }; \
44#define ODIL_MESSAGE_OPTIONAL_FIELD_MACRO(name, tag, TValueType, function) \
45 ODIL_MESSAGE_MANDATORY_FIELD_MACRO(name, tag, TValueType, function) \
46 bool has_##name() const \
48 return this->_command_set->has(tag);; \
50 void delete_##name() \
52 this->_command_set->remove(tag); \
55#define ODIL_MESSAGE_SET_OPTIONAL_FIELD_MACRO(dataset, name, tag, function) \
56 if(dataset->has(tag)) \
58 this->set_##name(dataset->function(tag, 0)); \
61#define ODIL_MESSAGE_MANDATORY_FIELD_INTEGER_MACRO(name, tag) \
62 ODIL_MESSAGE_MANDATORY_FIELD_MACRO(name, tag, Value::Integer, as_int)
64#define ODIL_MESSAGE_MANDATORY_FIELD_STRING_MACRO(name, tag) \
65 ODIL_MESSAGE_MANDATORY_FIELD_MACRO(name, tag, Value::String, as_string)
67#define ODIL_MESSAGE_OPTIONAL_FIELD_INTEGER_MACRO(name, tag) \
68 ODIL_MESSAGE_OPTIONAL_FIELD_MACRO(name, tag, Value::Integer, as_int)
70#define ODIL_MESSAGE_OPTIONAL_FIELD_STRING_MACRO(name, tag) \
71 ODIL_MESSAGE_OPTIONAL_FIELD_MACRO(name, tag, Value::String, as_string)
132 std::shared_ptr<DataSet> command_set=std::make_shared<DataSet>(),
133 std::shared_ptr<DataSet> data_set={});
170 std::shared_ptr<DataSet> _command_set;
Command
Definition Message.h:80
@ C_STORE_RSP
Definition Message.h:82
@ N_EVENT_REPORT_RSP
Definition Message.h:99
@ C_GET_RQ
Definition Message.h:89
@ N_CREATE_RQ
Definition Message.h:110
@ N_ACTION_RQ
Definition Message.h:107
@ N_GET_RQ
Definition Message.h:101
@ N_GET_RSP
Definition Message.h:102
@ N_EVENT_REPORT_RQ
Definition Message.h:98
@ C_ECHO_RSP
Definition Message.h:96
@ N_SET_RSP
Definition Message.h:105
@ N_ACTION_RSP
Definition Message.h:108
@ C_FIND_RQ
Definition Message.h:84
@ C_MOVE_RSP
Definition Message.h:93
@ N_CREATE_RSP
Definition Message.h:111
@ N_SET_RQ
Definition Message.h:104
@ C_ECHO_RQ
Definition Message.h:95
@ N_DELETE_RQ
Definition Message.h:113
@ C_GET_RSP
Definition Message.h:90
@ C_CANCEL_RQ
Definition Message.h:87
@ C_MOVE_RQ
Definition Message.h:92
@ C_STORE_RQ
Definition Message.h:81
@ C_FIND_RSP
Definition Message.h:85
@ N_DELETE_RSP
Definition Message.h:114
Message(Message &&)=default
std::shared_ptr< DataSet const > get_data_set() const
Return the data set of the message, raise an exception if no data set is present.
Priority
Definition Message.h:118
@ LOW
Definition Message.h:119
@ HIGH
Definition Message.h:121
@ MEDIUM
Definition Message.h:120
void delete_data_set()
Delete the data set in this message.
std::shared_ptr< DataSet > get_data_set()
Return the data set of the message, raise an exception if no data set is present.
Message(std::shared_ptr< DataSet > command_set=std::make_shared< DataSet >(), std::shared_ptr< DataSet > data_set={})
Create a message with an empty command set and no data set.
Message(Message const &)=default
bool has_data_set() const
Test whether as data set is present in the message.
virtual ~Message()=default
Message & operator=(Message &&)=default
Message & operator=(Message const &)=default
ODIL_MESSAGE_MANDATORY_FIELD_MACRO(command_field, registry::CommandField, Value::Integer, as_int) protected std::shared_ptr< DataSet > _data_set
Data set of the message.
Definition Message.h:166
void set_data_set(std::shared_ptr< DataSet > data_set)
Set the data set of the message.
std::shared_ptr< DataSet const > get_command_set() const
Return the command set of the message (by reference or shared pointer).
DataSetType
Definition Message.h:125
@ ABSENT
Definition Message.h:127
@ PRESENT
Definition Message.h:126
#define ODIL_MESSAGE_MANDATORY_FIELD_INTEGER_MACRO(name, tag)
Definition Message.h:61
Definition Cancellation.h:21
Tag const CommandField(0x0000, 0x0100)
Definition Association.h:25
#define ODIL_API
Definition odil.h:28