/*
- * Copyright (c) 2012, JANET(UK)
+ * Copyright (c) 2012-2014, JANET(UK)
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
#define TR_MSG_H
#include <jansson.h>
-#include <trust_router/tr_versioning.h>
#include <trust_router/tid.h>
+#include <trust_router/trp.h>
+#include <mon_internal.h>
+
+typedef struct tr_msg TR_MSG;
enum msg_type {
TR_UNKNOWN = 0,
TID_REQUEST,
- TID_RESPONSE
+ TID_RESPONSE,
+ TRP_UPDATE,
+ TRP_REQUEST,
+ MON_REQUEST,
+ MON_RESPONSE
};
/* Union of TR message types to hold message of any type. */
-typedef struct tr_msg {
+struct tr_msg {
enum msg_type msg_type;
- union {
- TID_REQ *tid_req;
- TID_RESP *tid_resp;
- };
-} TR_MSG;
-
-char *tr_msg_encode(TR_MSG *msg);
-TR_MSG *tr_msg_decode(char *jmsg, size_t len);
+ void *msg_rep;
+};
+
+/* Accessors */
+enum msg_type tr_msg_get_msg_type(TR_MSG *msg);
+void tr_msg_set_msg_type(TR_MSG *msg, enum msg_type type);
+TID_REQ *tr_msg_get_req(TR_MSG *msg);
+void tr_msg_set_req(TR_MSG *msg, TID_REQ *req);
+TID_RESP *tr_msg_get_resp(TR_MSG *msg);
+void tr_msg_set_resp(TR_MSG *msg, TID_RESP *resp);
+TRP_UPD *tr_msg_get_trp_upd(TR_MSG *msg);
+void tr_msg_set_trp_upd(TR_MSG *msg, TRP_UPD *req);
+TRP_REQ *tr_msg_get_trp_req(TR_MSG *msg);
+void tr_msg_set_trp_req(TR_MSG *msg, TRP_REQ *req);
+MON_REQ *tr_msg_get_mon_req(TR_MSG *msg);
+void tr_msg_set_mon_req(TR_MSG *msg, MON_REQ *req);
+MON_RESP *tr_msg_get_mon_resp(TR_MSG *msg);
+void tr_msg_set_mon_resp(TR_MSG *msg, MON_RESP *resp);
+
+
+/* Encoders/Decoders */
+char *tr_msg_encode(TALLOC_CTX *mem_ctx, TR_MSG *msg);
+TR_MSG *tr_msg_decode(const char *jmsg, size_t len);
void tr_msg_free_encoded(char *jmsg);
void tr_msg_free_decoded(TR_MSG *msg);
+
#endif