1 #ifndef __MURPHY_DECISION_MESSAGE_H__
2 #define __MURPHY_DECISION_MESSAGE_H__
4 #include <murphy/common/msg.h>
6 #include "decision-types.h"
10 #define MRP_PEPMSG_UINT16(tag, value) \
11 MRP_MSG_TAG_UINT16(MRP_PEPTAG_##tag, value)
13 #define MRP_PEPMSG_SINT16(tag, value) \
14 MRP_MSG_TAG_SINT16(MRP_PEPTAG_##tag, value)
16 #define MRP_PEPMSG_UINT32(tag, value) \
17 MRP_MSG_TAG_UINT32(MRP_PEPTAG_##tag, value)
19 #define MRP_PEPMSG_SINT32(tag, value) \
20 MRP_MSG_TAG_SINT32(MRP_PEPTAG_##tag, value)
22 #define MRP_PEPMSG_DOUBLE(tag, value) \
23 MRP_MSG_TAG_DOUBLE(MRP_PEPTAG_##tag, value)
25 #define MRP_PEPMSG_STRING(tag, value) \
26 MRP_MSG_TAG_STRING(MRP_PEPTAG_##tag, value)
33 MRP_PEPMSG_REGISTER = 0x1, /* client: register me */
34 MRP_PEPMSG_UNREGISTER = 0x2, /* client: unregister me */
35 MRP_PEPMSG_SET = 0x3, /* client: set table data */
36 MRP_PEPMSG_NOTIFY = 0x4, /* server: table changes */
37 MRP_PEPMSG_ACK = 0x5, /* server: ok */
38 MRP_PEPMSG_NAK = 0x6, /* server: request failed */
43 * message-specific tags
50 MRP_PEPTAG_MSGTYPE = 0x1, /* message type */
51 MRP_PEPTAG_MSGSEQ = 0x2, /* sequence number */
54 * fixed tags in registration messages
56 MRP_PEPTAG_NAME = 0x3, /* enforcement point name */
57 MRP_PEPTAG_NTABLE = 0x4, /* number of owned tables */
58 MRP_PEPTAG_NWATCH = 0x5, /* number of watched tables */
59 MRP_PEPTAG_NCOLDEF = 0x6, /* number of column definitions */
60 MRP_PEPTAG_TBLNAME = 0x7, /* table name */
61 MRP_PEPTAG_NCOLUMN = 0x8, /* number of columns */
62 MRP_PEPTAG_TBLIDX = 0x9, /* column index of index column */
63 MRP_PEPTAG_COLNAME = 0xa, /* column name */
64 MRP_PEPTAG_COLTYPE = 0xb, /* column type */
69 MRP_PEPTAG_ERRCODE = 0x3, /* error code */
70 MRP_PEPTAG_ERRMSG = 0x4, /* error message */
73 * fixed tags in data notification messages
75 MRP_PEPTAG_NCHANGE = 0x3, /* number of tables in notification */
76 MRP_PEPTAG_NTOTAL = 0x4, /* total columns in notification */
77 MRP_PEPTAG_TBLID = 0x5, /* table id */
78 MRP_PEPTAG_NROW = 0x6, /* number of table rows */
79 MRP_PEPTAG_DATA = 0x7, /* a data column */
83 mrp_msg_t *create_register_message(mrp_pep_t *pep);
84 int decode_register_message(mrp_msg_t *msg, mrp_pep_table_t *tables, int ntable,
85 mrp_pep_table_t *watches, int nwatch,
86 mqi_column_def_t *columns, int ncolumn);
88 mrp_msg_t *create_ack_message(uint32_t seq);
89 mrp_msg_t *create_nak_message(uint32_t seq, int error, const char *errmsg);
90 mrp_msg_t *create_notify_message(void);
91 int update_notify_message(mrp_msg_t *msg, int id, mqi_column_def_t *columns,
92 int ncolumn, mrp_pep_value_t *data, int nrow);
93 int decode_notify_message(mrp_msg_t *msg, void **it, mrp_pep_data_t *t);
95 mrp_msg_t *create_set_message(uint32_t seq, mrp_pep_data_t *tables, int ntable);
96 int decode_set_message(mrp_msg_t *msg, void **it, mrp_pep_data_t *data);
99 #endif /* __MURPHY_DECISION_MESSAGE_H__ */