00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034 
00035 #include "include/ap_queue_template.h"
00036 #include "include/data_structures.h"
00037 
00038 AP_QUEUE_STD_DEFN_TEMPLATE(connection_queue, connection)
00039 
00040 AP_QUEUE_SEARCH_TEMPLATE(
00041     connection_queue,
00042     Search,
00043     connection,
00044     int,
00045     (node->connect_id == key)
00046     )
00047 
00048 AP_QUEUE_REMOVE_TEMPLATE(
00049     connection_queue,
00050     Remove,
00051     connection,
00052     int,
00053     (node->connect_id == key)
00054     )
00055 
00056 int 
00057 connection_queue_Print(connection_queue_p queue)
00058 {
00059   int i;
00060   connection_p node;
00061   MUTEX_LOCK(queue->lock);
00062   for(i = 0; i < queue->size; i++) {
00063     node = (connection_p)ListSearch(queue->list, i);
00064     if (node != NULL) {
00065       printf("Connection id %d:\n\tremote:%s\n",
00066           node->connect_id,
00067           node->remote_hostname
00068           );
00069     }
00070   }
00071   MUTEX_UNLOCK(queue->lock);
00072   return i;
00073 }
00074 
00075 
00076 #include "include/interpreter_variable_data.h"
00077 AP_QUEUE_STD_DEFN_TEMPLATE(agent_variable_list, interpreter_variable_data)
00078 
00079 AP_QUEUE_SEARCH_TEMPLATE(
00080     agent_variable_list,
00081     Search,
00082     interpreter_variable_data,
00083     char*,
00084     (!strcmp(node->name, key))
00085     )
00086 
00087 AP_QUEUE_REMOVE_TEMPLATE(
00088     agent_variable_list,
00089     Remove,
00090     interpreter_variable_data,
00091     char*,
00092     (!strcmp(node->name, key))
00093     )
00094         
00095 
00096 AP_QUEUE_STD_DEFN_TEMPLATE(
00097     message_queue,
00098     message
00099     )
00100 
00101 AP_QUEUE_SEARCH_TEMPLATE(
00102     message_queue,
00103     Search,
00104     message,
00105     int,
00106     (node->message_id == key)
00107     )
00108 
00109 AP_QUEUE_REMOVE_TEMPLATE(
00110     message_queue,
00111     Remove,
00112     message,
00113     int,
00114     (node->message_id == key)
00115     )
00116 
00117 int
00118 message_queue_Print(message_queue_p queue)
00119 {
00120   int i;
00121   message_p node;
00122   MUTEX_LOCK(queue->lock);
00123   for(i = 0; i < queue->size; i++) {
00124     node = (message_p)ListSearch(queue->list, i);
00125     if (node != NULL) {
00126       printf("Connection id %d:\n\tfrom:%s\n\tto:%s\n",
00127           node->message_id,
00128           node->from_address,
00129           node->to_address
00130           );
00131     }
00132   }
00133   MUTEX_UNLOCK(queue->lock);
00134   return i;
00135 }
00136 
00137 
00138 
00139 #include "include/agent.h"
00140 AP_QUEUE_STD_DEFN_TEMPLATE(
00141     agent_queue,
00142     agent
00143     )
00144 AP_QUEUE_SEARCH_TEMPLATE(
00145     agent_queue,
00146     Search,
00147     agent,
00148     int,
00149     (node->id == key)
00150     )
00151 AP_QUEUE_SEARCH_TEMPLATE(
00152     agent_queue,
00153     SearchName,
00154     agent,
00155     char*,
00156     (!strcmp(node->name, key))
00157     )
00158 AP_QUEUE_REMOVE_TEMPLATE(
00159     agent_queue,
00160     Remove,
00161     agent,
00162     int,
00163     (node->id == key)
00164     )
00165 AP_QUEUE_REMOVE_TEMPLATE(
00166     agent_queue,
00167     RemoveName,
00168     agent,
00169     char*,
00170     (!strcmp(node->name, key))
00171     )
00172 
00173 int
00174 agent_queue_Print(agent_queue_p queue)
00175 {
00176   int i;
00177   agent_p node;
00178   MUTEX_LOCK(queue->lock);
00179   for(i = 0; i < queue->size; i++) {
00180     node = (agent_p)ListSearch(queue->list, i);
00181     if (node != NULL) {
00182       printf("agent id %d:\n\tname:%s\n",
00183           (int)node->id,
00184           node->name
00185           );
00186     }
00187   }
00188   MUTEX_UNLOCK(queue->lock);
00189   return i;
00190 }
00191 
00192 
00193 AP_QUEUE_STD_DEFN_TEMPLATE(
00194     mail_queue,
00195     fipa_acl_message
00196     )
00197 
00198 fipa_acl_message_p mail_queue_SearchReceivers( mail_queue_p mail_queue, const char* key)
00199 {
00200   listNode_t* parsenode;
00201   fipa_acl_message_t* node = NULL;
00202   fipa_acl_message_t* ret = NULL;
00203   int i;
00204 
00205   MUTEX_LOCK(mail_queue->lock);
00206   if (mail_queue->list->listhead == NULL) {
00207     MUTEX_UNLOCK(mail_queue->lock);
00208     return NULL;
00209   }
00210   for(
00211       parsenode = (listNode_t*)mail_queue->list->listhead;
00212       parsenode != NULL;
00213       parsenode = (listNode_t*)parsenode->next
00214      )
00215   {
00216     node = (fipa_acl_message_t*)parsenode->node_data;
00217     for(i = 0; i < node->receiver->num; i++) {
00218       if ( !strcmp(
00219             node->receiver->fipa_agent_identifiers[i]->name,
00220             key) )
00221       {
00222         ret = node;
00223         parsenode = NULL;
00224         break;
00225       }
00226     }
00227   }
00228   return ret;
00229 }
00230 
00231 
00232 AP_QUEUE_STD_DEFN_TEMPLATE(
00233     mailbox_queue,
00234     agent_mailbox
00235     )
00236