|
@@ -506,13 +506,27 @@ int myco_daemon_unlock_resource(message msg) {
|
|
|
myco_send(msg.agent_message_queue_id, msg);
|
|
|
return -1;
|
|
|
}
|
|
|
+}
|
|
|
+
|
|
|
+int myco_daemon_connect(char* ip, int port) {
|
|
|
+ struct sockaddr_in address;
|
|
|
+ int mysocket = socket(AF_INET, SOCK_STREAM | SOCK_NONBLOCK, 0);
|
|
|
+ address.sin_family = AF_INET;
|
|
|
+ address.sin_port = htons (port);
|
|
|
+ inet_aton (ip, &address.sin_addr);
|
|
|
+ connect (mysocket, (struct sockaddr *) &address, sizeof (address));
|
|
|
|
|
|
+ return mysocket;
|
|
|
}
|
|
|
|
|
|
int myco_daemon_start(pid) {
|
|
|
+ char *buffer = malloc (1024);
|
|
|
int daemon_message_queue_id;
|
|
|
message msg = {0};
|
|
|
|
|
|
+ // Connect to indexer
|
|
|
+ int socket = myco_daemon_connect("127.0.0.1", 15000);
|
|
|
+
|
|
|
// Create message queue
|
|
|
daemon_message_queue_id = myco_create_global_message_queue();
|
|
|
if (daemon_message_queue_id < 0) {
|
|
@@ -522,6 +536,13 @@ int myco_daemon_start(pid) {
|
|
|
|
|
|
// Receive messages
|
|
|
while (1) {
|
|
|
+ // Receive messages from indexer
|
|
|
+ int size = recv (socket, buffer, 1023, 0);
|
|
|
+ if( size > 0)
|
|
|
+ buffer[size] = '\0';
|
|
|
+ printf ("%s\n", buffer);
|
|
|
+
|
|
|
+ // Receive messages from agents
|
|
|
msg = myco_receive(daemon_message_queue_id);
|
|
|
if (DEBUG) {
|
|
|
printf("%d, %s, %s, %s, %p, %d, %d, %d, %d\n", msg.agent_message_queue_id, msg.agent_name, msg.message, \
|
|
@@ -531,6 +552,9 @@ int myco_daemon_start(pid) {
|
|
|
fprintf(stderr, "FATAL ERROR: No message could be received. %s\n", strerror(errno));
|
|
|
return -1;
|
|
|
} else {
|
|
|
+ // Handle indexer
|
|
|
+ send(socket, msg.message, strlen(msg.message), 0);
|
|
|
+ // Handle agents
|
|
|
if (strcmp(msg.message, "REGISTER AGENT") == 0) {
|
|
|
myco_daemon_register_agent(msg);
|
|
|
}
|
|
@@ -570,6 +594,8 @@ int myco_daemon_start(pid) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ close (socket);
|
|
|
+
|
|
|
if (myco_remove_message_queue(daemon_message_queue_id) == -1) {
|
|
|
fprintf(stderr, "FATAL ERROR: could not remove message queue %d\n", daemon_message_queue_id);
|
|
|
return -1;
|