summaryrefslogtreecommitdiffstats
path: root/src/common
diff options
context:
space:
mode:
Diffstat (limited to 'src/common')
-rw-r--r--src/common/protocol.c14
-rw-r--r--src/common/protocol_private.h26
2 files changed, 29 insertions, 11 deletions
diff --git a/src/common/protocol.c b/src/common/protocol.c
index 2ac8280..2243dad 100644
--- a/src/common/protocol.c
+++ b/src/common/protocol.c
@@ -113,14 +113,17 @@ static int push_timestamp(char *data)
static int push_request(char *data)
{
- (void)data;
- return 0;
+ return push_tlv_header(REQUEST, sizeof(msg_idx_t))
+ | push_bytes(data, sizeof(msg_idx_t));
}
static int push_reply(char *data)
{
- (void)data;
- return 0;
+ int ret = 0;
+ size_t msglen = strlen(data + sizeof(msg_idx_t));
+ ret |= push_tlv_header(REPLY, msglen + sizeof(msg_idx_t));
+ ret |= push_bytes(data, msglen);
+ return ret;
}
static int push_uuid(char *data)
@@ -129,7 +132,7 @@ static int push_uuid(char *data)
| push_bytes(data, sizeof(uuid_t));
}
-int push_tlv_header(enum tlv_type type, size_t size)
+static int push_tlv_header(enum tlv_type type, size_t size)
{
if (size + sizeof(type) + packet_cursor >= PACKET_MAX_SIZE) {
return E_PACKET_OVERFLOW;
@@ -147,7 +150,6 @@ void get_last_data()
msg_buf[0] = '\0';
msg_buf[1] = '\0';
tlv_cursor = 0;
- /* Get packet here. Somehow. TODO */
get_tlvs(packet_buf, tlv_buf, TLV_BUF_SIZE);
}
diff --git a/src/common/protocol_private.h b/src/common/protocol_private.h
index 0c0b7f9..b74c0eb 100644
--- a/src/common/protocol_private.h
+++ b/src/common/protocol_private.h
@@ -75,23 +75,39 @@ size_t get_tlvs( const struct packet_data * const data,
* */
int push_string(char *str);
-/* Reinterprets char * as fpi1_t * and appends it to the outgoing packet as a
+/** Reinterprets char * as fpi1_t * and appends it to the outgoing packet as a
* tlv.
*/
int push_fpi1(char *num);
-/* Reinterprets char * as time_t * and appends it to the outgoing packet as a
+/** Reinterprets char * as time_t * and appends it to the outgoing packet as a
* tlv.
*/
int push_timestamp(char *data);
-/* Not implemented yet. */
+/**
+ * Pushes a request for daemon to repeat a message identified by a msg_index_t.
+ *
+ * @param data Pointer to a msg_index_t.
+ *
+ * @return 0 on success or E_PACKET_OVERFLOW, if not enough space is available
+ * to push all the data.
+ */
int push_request(char *data);
-/* Not implemented yet. */
+/**
+ * Pushes a message to the outgoing packet buffer as a reply. A reply is just
+ * a null terminated string.
+ *
+ * @param data msg_idx_t representing sequence number since beggining of
+ * connection and a null-terminated string.
+ *
+ * @return On success --- 0 or E_PACKET_OVERFLOW, if not enough buffer is
+ * available.
+ */
int push_reply(char *data);
-/* Reinterprets char * as uuid_t * and appends it to the outgoing packet as a
+/** Reinterprets char * as uuid_t * and appends it to the outgoing packet as a
* tlv.
*/
int push_uuid(char *data);