Эх сурвалжийг харах

refined answer messages of ipcs

max 8 жил өмнө
parent
commit
d01ee36fa4
3 өөрчлөгдсөн 47 нэмэгдсэн , 11 устгасан
  1. 43 9
      src/myco-agent.c
  2. 4 1
      src/myco-daemon.c
  3. 0 1
      src/myco-ipc.c

+ 43 - 9
src/myco-agent.c

@@ -31,10 +31,14 @@ int myco_agent_register(const char *agent_name) {
 
     msg = myco_send_and_receive(msg, message_queue_id);
     if (msg.message == NULL) {
+        printf("ERROR: Transfered message is empty.");
         return -1;
     }
 
-    printf("%s", msg.message);
+    if (strncmp(msg.message, "SUCCESS:", 8) != 0) {
+        printf("%s", msg.message);
+        return -1;
+    }
 
     return message_queue_id;
 }
@@ -47,10 +51,14 @@ int myco_agent_unregister (const char *agent_name, int message_queue_id) {
 
     msg = myco_send_and_receive(msg, message_queue_id);
     if (msg.message == NULL) {
+        printf("ERROR: Transfered message is empty.");
         return -1;
     }
 
-    printf("%s", msg.message);
+    if (strncmp(msg.message, "SUCCESS:", 8) != 0) {
+        printf("%s", msg.message);
+        return -1;
+    }
 
     return 0;
 }
@@ -65,10 +73,14 @@ int myco_agent_register_resource (int message_queue_id, const char *agent_name,
 
     msg = myco_send_and_receive(msg, message_queue_id);
     if (msg.message == NULL) {
+        printf("ERROR: Transfered message is empty.");
         return -1;
     }
 
-    printf("%s", msg.message);
+    if (strncmp(msg.message, "SUCCESS:", 8) != 0) {
+        printf("%s", msg.message);
+        return -1;
+    }
 
     return 0;
 }
@@ -81,10 +93,14 @@ int myco_agent_unregister_resource (int message_queue_id, const char *resource_n
 
     msg = myco_send_and_receive(msg, message_queue_id);
     if (msg.message == NULL) {
+        printf("ERROR: Transfered message is empty.");
         return -1;
     }
 
-    printf("%s", msg.message);
+    if (strncmp(msg.message, "SUCCESS:", 8) != 0) {
+        printf("%s", msg.message);
+        return -1;
+    }
 
     return 0;
 }
@@ -97,6 +113,12 @@ int myco_agent_request_resource(int message_queue_id, char *resource_name) {
 
     msg = myco_send_and_receive(msg, message_queue_id);
     if (msg.message == NULL) {
+        printf("ERROR: Transfered message is empty.");
+        return -1;
+    }
+
+    if (strncmp(msg.message, "SUCCESS:", 8) != 0) {
+        printf("%s", msg.message);
         return -1;
     }
 
@@ -105,6 +127,7 @@ int myco_agent_request_resource(int message_queue_id, char *resource_name) {
 
 int myco_agent_request_resource_list(int message_queue_id) {
     char *resource_pointer;
+    char *split;
 
     message msg;
     msg.agent_message_queue_id = message_queue_id;
@@ -113,20 +136,31 @@ int myco_agent_request_resource_list(int message_queue_id) {
 
     msg = myco_send_and_receive(msg, message_queue_id);
     if (msg.message == NULL) {
+        printf("ERROR: Transfered message is empty.");
         return -1;
     }
 
-    printf("%s", msg.message);
+    if (strncmp(msg.message, "SUCCESS:", 8) != 0) {
+        printf("%s", msg.message);
+        return -1;
+    }
 
     resource_pointer = malloc(msg.resource_size);
 
     if (myco_read_transactional(msg.sender_pid, msg.resource_pointer, msg.resource_size, (void *)resource_pointer, msg.resource_size) == -1) {
-        printf("ERROR: transfer did not work!\n");
-    } else {
-        printf("%s\n", resource_pointer);
+        printf("ERROR: %s\n", strerror(errno));
+        return -1;
     }
 
-
+    printf("%s\n", resource_pointer);
+    /*
+    split = strtok(resource_pointer, ";");
+    while (split != NULL) {
+        printf("%s\n", split);
+        split = strtok(NULL, ";");
+    }
+    */
+    free(resource_pointer);
 
     return 0;
 }

+ 4 - 1
src/myco-daemon.c

@@ -232,7 +232,6 @@ int myco_daemon_unregister_resource(message msg) {
 }
 
 int myco_daemon_request_resource(message msg) {
-    printf("\n");
     sprintf(msg.message, "SUCCESS: resource granted\n");
     msgsnd(msg.agent_message_queue_id, &msg, TOTAL_LENGTH, 0);
     return 0;
@@ -251,6 +250,7 @@ int myco_daemon_request_list(message msg, pid_t pid) {
 
     resource_size += 4;
     resource_pointer = malloc(resource_size);
+    memset(resource_pointer, 0, resource_size);
 
     current_resource = first_resource;
     while (current_resource != NULL) {
@@ -275,6 +275,9 @@ int myco_daemon_request_list(message msg, pid_t pid) {
     sprintf(msg.message, "SUCCESS: sending resource list\n");
     msgsnd(msg.agent_message_queue_id, &msg, TOTAL_LENGTH, 0);
 
+    free(resource_pointer);
+    // free when done.
+
     return 0;
 }
 

+ 0 - 1
src/myco-ipc.c

@@ -61,7 +61,6 @@ int myco_read_transactional(pid_t source_pid, void *source_pointer, int source_l
 
     nread = process_vm_readv(pid, local, 1, remote, 1, 0);
     if (nread != target_length) {
-        printf("ERROR: %s\n", strerror(errno));
         return -1;
     }