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