[REFACTOR] Refactor semi-pure calculation of msg_data payload length
authorDmitry Bogatov <d.bogatov@samsung.com>
Tue, 26 Nov 2013 13:50:34 +0000 (17:50 +0400)
committerGerrit Code Review <gerrit@gerrit.vlan144.tizendev.org>
Mon, 2 Dec 2013 05:42:14 +0000 (05:42 +0000)
Change-Id: I25d46ab034e85055e8e7945984c2b72462031bca
Signed-off-by: Dmitry Bogatov <d.bogatov@samsung.com>
daemon/da_protocol.h
daemon/sys_stat.c

index 1bb3e89f5985329e3c25f23219c8f54de1df5288..573bcd878c8562d9ebad7a7d9464d0b6f5f4f69c 100644 (file)
@@ -268,6 +268,14 @@ struct process_info_t {
        float load;
 };
 
+/**
+ * NOTE:
+ *
+ * Adding pointer memebers to struct %system_info_t REQUIRES updating code,
+ * calculating length of bytevector, suitable for serializing it. See
+ * msg_data_payload_length()
+ *
+ */
 struct system_info_t {
        // system_cpu
        float app_cpu_usage;
index 8fd29c250f99ef96f0b321eba2b3d09b990ad463..31b849a29e73898ee88d60487abd5b34e4652da3 100644 (file)
@@ -2532,19 +2532,14 @@ int sys_stat_prepare(void)
        return 0;
 }
 
-struct msg_data_t *pack_system_info(struct system_info_t *sys_info)
+static uint32_t msg_data_payload_length(const struct system_info_t *sys_info)
 {
-       struct msg_data_t *msg = NULL;
-       char *p = NULL;
-       int i = 0;
-       uint32_t len = 0;
+       uint32_t len = sizeof(*sys_info);
 
-       len += sizeof(*sys_info);
-
-       // num_of_cpu is unknown at compile time
+       /* num_of_cpu is unknown at compile time */
        len += 2 * num_of_cpu * sizeof(float);
 
-       // subtract pointers
+       /* subtract pointers */
        len -= sizeof(sys_info->cpu_frequency) + sizeof(sys_info->cpu_load);
        len -= sizeof(sys_info->thread_load) + sizeof(sys_info->process_load);
 
@@ -2556,6 +2551,16 @@ struct msg_data_t *pack_system_info(struct system_info_t *sys_info)
                len += sys_info->count_of_processes *
                        sizeof(*sys_info->process_load);
 
+       return len;
+}
+
+struct msg_data_t *pack_system_info(struct system_info_t *sys_info)
+{
+       const int len = msg_data_payload_length(sys_info);
+       struct msg_data_t *msg = NULL;
+       char *p = NULL;
+       int i = 0;
+
        msg = malloc(MSG_DATA_HDR_LEN + len);
        if (!msg) {
                LOGE("Cannot alloc message: %d bytes\n", len);