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/GATSelfCPI.c,v 1.6 2004/04/05 11:49:44 hartmutkaiser Exp $";
00018
00019
00020 #include <stdio.h>
00021 #include <stdlib.h>
00022
00023
00024 #include "GATErrors.h"
00025 #include "GATSelfCPI.h"
00026
00027
00028
00029
00030 struct GATSelfCPI_S
00031 {
00032
00033 void *data;
00034 GATSelfCPI_Adaptor_Destroy destroy;
00035
00036
00037 GATSelfCPI_Adaptor_ServiceActions service_actions;
00038 GATSelfCPI_Adaptor_CreateInstance create_instance;
00039 GATSelfCPI_Adaptor_DestroyInstance destroy_instance;
00040
00041
00042 GATSelfCPI_Adaptor_GetJob get_selfjob;
00043 GATSelfCPI_Adaptor_CreateRequestForListener create_requestforlistener;
00044 GATSelfCPI_Adaptor_DestroyRequestForListener destroy_requestforlistener;
00045 };
00046
00047
00048 static GATBool
00049 GATSelfCPI_IsValidData_V1(GATSelfCPI_Data *data);
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064 GATSelfCPI GATSelfCPI_Create(unsigned long int version,
00065 GATSelfCPI_Data *data)
00066 {
00067 GATSelfCPI new_cpi = NULL;
00068
00069 if (version <= GATSELFCPI_VERSION)
00070 {
00071 if (version == GATSELFCPI_VERSION &&
00072 GATTrue == GATSelfCPI_IsValidData_V1(data))
00073 {
00074 new_cpi = (GATSelfCPI)malloc(sizeof(*new_cpi));
00075 if(NULL != new_cpi)
00076 {
00077 new_cpi->data = data->data;
00078 new_cpi->destroy = data->destroy;
00079
00080 new_cpi->service_actions = data->service_actions;
00081 new_cpi->destroy_instance = data->destroy_instance;
00082 new_cpi->create_instance = data->create_instance;
00083
00084 new_cpi->get_selfjob = data->get_selfjob;
00085 new_cpi->create_requestforlistener = data->create_requestforlistener;
00086 new_cpi->destroy_requestforlistener = data->destroy_requestforlistener;
00087 }
00088 }
00089
00090
00091
00092
00093
00094
00095
00096 else
00097 {
00098
00099
00100 new_cpi = NULL;
00101 }
00102 }
00103 else
00104 {
00105
00106
00107 new_cpi = NULL;
00108 }
00109 return new_cpi;
00110 }
00111
00112
00113
00114
00115
00116
00117
00118
00119 void GATSelfCPI_Destroy(GATSelfCPI *object)
00120 {
00121 if(NULL != object && NULL != *object)
00122 {
00123
00124 (*object)->destroy((*object)->data);
00125 free(*object);
00126 *object = NULL;
00127 }
00128 }
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143 GATResult
00144 GATSelfCPI_CreateInstance(GATSelfCPI cpi,
00145 GATSelfCPI_Instance *instance_data)
00146 {
00147 return cpi->create_instance(cpi->data, instance_data);
00148 }
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158 void
00159 GATSelfCPI_DestroyInstance(GATSelfCPI cpi,
00160 GATSelfCPI_Instance *instance_data)
00161 {
00162 cpi->destroy_instance(cpi->data, instance_data);
00163 }
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174 GATResult
00175 GATSelfCPI_GetJob(GATSelfCPI cpi, GATSelfCPI_Instance *instance_data,
00176 GATContext context, GATJob *job)
00177 {
00178 return cpi->get_selfjob(cpi->data, instance_data, context, job);
00179 }
00180
00181
00182
00183
00184
00185
00186
00187
00188 GATResult
00189 GATSelfCPI_CreateRequestForListener(GATSelfCPI cpi,
00190 GATSelfCPI_Instance *instance_data, GATContext context,
00191 GATRequestListener listener, void *data, GATRequestType type,
00192 GATTable_const parameters, const char *name, GATRequest *request)
00193 {
00194 return cpi->create_requestforlistener(cpi->data, instance_data, context,
00195 listener, data, type, parameters, name, request);
00196 }
00197
00198
00199
00200
00201
00202
00203
00204
00205 GATResult
00206 GATSelfCPI_DestroyRequestForListener(GATSelfCPI cpi,
00207 GATSelfCPI_Instance *instance_data, GATContext context, GATRequest *request)
00208 {
00209 return cpi->destroy_requestforlistener(cpi->data, instance_data, context,
00210 request);
00211 }
00212
00213
00214
00215
00216 static GATBool
00217 GATSelfCPI_IsValidData_V1(GATSelfCPI_Data *data)
00218 {
00219 return (
00220 NULL != data->destroy &&
00221
00222 NULL != data->create_instance &&
00223 NULL != data->destroy_instance &&
00224
00225 NULL != data->get_selfjob &&
00226 NULL != data->create_requestforlistener &&
00227 NULL != data->destroy_requestforlistener
00228 ) ? GATTrue : GATFalse;
00229 }
00230
00231