X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/0e72b989742d684a4fcc27bb60eaf4b3d2129ac3..417742f1c7f6545db82079acd702fde03547d400:/examples/msg/dht-kademlia/task.h diff --git a/examples/msg/dht-kademlia/task.h b/examples/msg/dht-kademlia/task.h new file mode 100644 index 0000000000..a7cd143d91 --- /dev/null +++ b/examples/msg/dht-kademlia/task.h @@ -0,0 +1,42 @@ +/* Copyright (c) 2012, 2014-2016. The SimGrid Team. + * All rights reserved. */ + +/* This program is free software; you can redistribute it and/or modify it + * under the terms of the license (GNU LGPL) which comes with this package. */ + +#ifndef _MSG_KADEMLIA_EXAMPLES_TASK +#define _MSG_KADEMLIA_EXAMPLES_TASK +#include "common.h" +#include "node.h" +#include "simgrid/msg.h" + +/* Types of tasks exchanged */ +typedef enum { + TASK_FIND_NODE, + TASK_FIND_NODE_ANSWER, + TASK_FIND_VALUE, + TASK_FIND_VALUE_ANSWER, + TASK_PING, + TASK_PING_ANSWER, + TASK_LEAVING +} e_task_type_t; + +/* Data attached with the tasks */ +typedef struct s_task_data { + e_task_type_t type; + unsigned int sender_id; //Id of the guy who sent the task + unsigned int destination_id; //Id we are trying to find, if needed. + answer_t answer; //Answer to the request made, if needed. + char *answer_to; // mailbox to send the answer to (if not an answer). + const char *issuer_host_name; // used for logging +} s_task_data_t, *task_data_t; + +//Task handling functions +msg_task_t task_new_find_node(unsigned int sender_id, unsigned int destination_id, char *mailbox, const char *hostname); +msg_task_t task_new_find_node_answer(unsigned int sender_id, unsigned int destination_id, answer_t answer, + char *mailbox, const char *hostname); +msg_task_t task_new_ping(unsigned int sender_id, char *mailbox, const char *hostname); +msg_task_t task_new_ping_answer(unsigned int sender_id, char *mailbox, const char *hostname); +void task_free(msg_task_t task); +void task_free_v(void *task); +#endif /* _MSG_KADEMLIA_EXAMPLES_TASK */