00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 static const char *rcsid = "$Header: /export/cvs-gridlab/wp-1/Codes/GATEngine/C-reference/src/GATAdvertServiceCPI.c,v 1.5 2004/04/02 12:31:57 hartmutkaiser Exp $";
00018
00019
00020 #include <stdio.h>
00021 #include <stdlib.h>
00022
00023
00024 #include "GATErrors.h"
00025 #include "GATAdvertServiceCPI.h"
00026
00027
00028
00029
00030 struct GATAdvertServiceCPI_S
00031 {
00032
00033 void *data;
00034 GATAdvertServiceCPI_Adaptor_Destroy destroy;
00035
00036
00037 GATAdvertServiceCPI_Adaptor_ServiceActions service_actions;
00038 GATAdvertServiceCPI_Adaptor_CreateInstance create_instance;
00039 GATAdvertServiceCPI_Adaptor_DestroyInstance destroy_instance;
00040 GATAdvertServiceCPI_Adaptor_CloneInstance clone_instance;
00041 GATAdvertServiceCPI_Adaptor_EqualsInstance equals_instance;
00042
00043
00044 GATAdvertServiceCPI_Adaptor_Add add_entry;
00045 GATAdvertServiceCPI_Adaptor_Delete delete_entry;
00046 GATAdvertServiceCPI_Adaptor_GetMetaData get_metadata;
00047 GATAdvertServiceCPI_Adaptor_GetAdvertisable get_advertisable;
00048 GATAdvertServiceCPI_Adaptor_Find find_entries;
00049
00050
00051 GATAdvertServiceCPI_Adaptor_GetMetrics get_metrics;
00052 GATAdvertServiceCPI_Adaptor_GetMetricEvent get_metric_event;
00053 };
00054
00055
00056 static GATBool
00057 GATAdvertServiceCPI_IsValidData_V1(GATAdvertServiceCPI_Data *data);
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072 GATAdvertServiceCPI GATAdvertServiceCPI_Create(unsigned long int version,
00073 GATAdvertServiceCPI_Data *data)
00074 {
00075 GATAdvertServiceCPI new_cpi = NULL;
00076
00077 if (version <= GATADVERTSERVICECPI_VERSION)
00078 {
00079 if (version == GATADVERTSERVICECPI_VERSION &&
00080 GATTrue == GATAdvertServiceCPI_IsValidData_V1(data))
00081 {
00082 new_cpi = (GATAdvertServiceCPI)malloc(sizeof(*new_cpi));
00083 if(NULL != new_cpi)
00084 {
00085 new_cpi->data = data->data;
00086 new_cpi->destroy = data->destroy;
00087
00088 new_cpi->service_actions = data->service_actions;
00089 new_cpi->destroy_instance = data->destroy_instance;
00090 new_cpi->create_instance = data->create_instance;
00091 new_cpi->equals_instance = data->equals_instance;
00092 new_cpi->clone_instance = data->clone_instance;
00093
00094 new_cpi->add_entry = data->add_entry;
00095 new_cpi->delete_entry = data->delete_entry;
00096 new_cpi->get_metadata = data->get_metadata;
00097 new_cpi->get_advertisable = data->get_advertisable;
00098 new_cpi->find_entries = data->find_entries;
00099
00100 new_cpi->get_metrics = data->get_metrics;
00101 new_cpi->get_metric_event = data->get_metric_event;
00102 }
00103 }
00104
00105
00106
00107
00108
00109
00110
00111 else
00112 {
00113
00114
00115 new_cpi = NULL;
00116 }
00117 }
00118 else
00119 {
00120
00121
00122 new_cpi = NULL;
00123 }
00124 return new_cpi;
00125 }
00126
00127
00128
00129
00130
00131
00132
00133
00134 void GATAdvertServiceCPI_Destroy(GATAdvertServiceCPI *object)
00135 {
00136 if(NULL != object && NULL != *object)
00137 {
00138
00139 (*object)->destroy((*object)->data);
00140 free(*object);
00141 *object = NULL;
00142 }
00143 }
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156 GATResult
00157 GATAdvertServiceCPI_CreateInstance(GATAdvertServiceCPI cpi,
00158 GATAdvertServiceCPI_Instance *instance_data)
00159 {
00160 return cpi->create_instance(cpi->data, instance_data);
00161 }
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171 void
00172 GATAdvertServiceCPI_DestroyInstance(GATAdvertServiceCPI cpi,
00173 GATAdvertServiceCPI_Instance *instance_data)
00174 {
00175 cpi->destroy_instance(cpi->data, instance_data);
00176 }
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191 GATResult
00192 GATAdvertServiceCPI_EqualsInstance(GATAdvertServiceCPI cpi,
00193 GATAdvertServiceCPI_Instance const *lhs, GATAdvertServiceCPI_Instance const *rhs,
00194 GATBool *isequal)
00195 {
00196 return cpi->equals_instance(cpi->data, lhs, rhs, isequal);
00197 }
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210 GATResult
00211 GATAdvertServiceCPI_CloneInstance(GATAdvertServiceCPI cpi,
00212 GATAdvertServiceCPI_Instance const *instance_data,
00213 GATAdvertServiceCPI_Instance *new_instance_data)
00214 {
00215 return cpi->clone_instance(cpi->data, instance_data, new_instance_data);
00216 }
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231 GATResult
00232 GATAdvertServiceCPI_GetMetrics(GATAdvertServiceCPI cpi, GATAdvertServiceCPI_Instance const *data,
00233 GATList_GATMetric *metrics)
00234 {
00235 return cpi->get_metrics(cpi->data, data, metrics);
00236 }
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252 GATResult
00253 GATAdvertServiceCPI_GetMetricEvent(GATAdvertServiceCPI cpi,
00254 GATAdvertServiceCPI_Instance const *data, GATMetric metric,
00255 GATMetricEvent *event)
00256 {
00257 return cpi->get_metric_event(cpi->data, data, metric, event);
00258 }
00259
00260
00261
00262
00263
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275 GATResult
00276 GATAdvertServiceCPI_Add(GATAdvertServiceCPI cpi,
00277 GATAdvertServiceCPI_Instance *instance_data, GATObject_const advertisable,
00278 GATTable_const metadata, GATString_const path)
00279 {
00280 return cpi->add_entry(cpi->data, instance_data, advertisable, metadata, path);
00281 }
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294 GATResult
00295 GATAdvertServiceCPI_Delete(GATAdvertServiceCPI cpi,
00296 GATAdvertServiceCPI_Instance *instance_data, GATString_const path)
00297 {
00298 return cpi->delete_entry(cpi->data, instance_data, path);
00299 }
00300
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
00312
00313
00314
00315 GATResult
00316 GATAdvertServiceCPI_GetMetaData(GATAdvertServiceCPI cpi,
00317 GATAdvertServiceCPI_Instance const *instance_data, GATString_const path,
00318 GATTable *metadata)
00319 {
00320 return cpi->get_metadata(cpi->data, instance_data, path, metadata);
00321 }
00322
00323
00324
00325
00326
00327
00328
00329
00330
00331
00332
00333
00334
00335
00336
00337
00338 GATResult
00339 GATAdvertServiceCPI_GetAdvertisable(GATAdvertServiceCPI cpi,
00340 GATAdvertServiceCPI_Instance const *instance_data, GATString_const path,
00341 GATObject *advertisable)
00342 {
00343 return cpi->get_advertisable(cpi->data, instance_data, path, advertisable);
00344 }
00345
00346
00347
00348
00349
00350
00351
00352
00353
00354
00355
00356
00357
00358
00359 GATResult
00360 GATAdvertServiceCPI_Find(GATAdvertServiceCPI cpi,
00361 GATAdvertServiceCPI_Instance const *instance_data, GATTable_const metadata,
00362 GATList_String *paths)
00363 {
00364 return cpi->find_entries(cpi->data, instance_data, metadata, paths);
00365 }
00366
00367
00368
00369 static GATBool
00370 GATAdvertServiceCPI_IsValidData_V1(GATAdvertServiceCPI_Data *data)
00371 {
00372 return (
00373 NULL != data->get_metrics &&
00374 NULL != data->get_metric_event &&
00375
00376 NULL != data->destroy &&
00377
00378 NULL != data->add_entry &&
00379 NULL != data->delete_entry &&
00380 NULL != data->get_metadata &&
00381 NULL != data->get_advertisable &&
00382 NULL != data->find_entries &&
00383
00384 NULL != data->create_instance &&
00385 NULL != data->destroy_instance &&
00386 NULL != data->clone_instance &&
00387 NULL != data->equals_instance
00388 ) ? GATTrue : GATFalse;
00389 }
00390
00391