00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 static const char *rcsid = "$Header";
00020
00021
00022 #include <stdlib.h>
00023 #include <string.h>
00024
00025
00026 #include "GAT.h"
00027 #include "GATInternal.h"
00028 #include "GATRequestNotifier.h"
00029
00030
00031 GATOBJECT_DEFINE_VTABLE(GATRequestNotifier);
00032
00033
00034 GATOBJECT_DEFINE_CONVERTERS(GATRequestNotifier)
00035
00036
00037
00038
00039 struct GATRequestNotifier_S {
00040
00041 GATRequestNotifier_vtable *GATObject__vtable;
00042
00043
00044 GATRequestNotifierListener listener;
00045
00046
00047 void *adaptor_data;
00048 GATRequestCPI_Instance const *instance_data;
00049 void *context_data;
00050 };
00051
00052
00053
00054
00055 GATRequestNotifier_vtable GATRequestNotifier__vtable = {
00056 GATRequestNotifier_GetType,
00057 GATRequestNotifier_Destroy,
00058 GATRequestNotifier_Equals,
00059 GATRequestNotifier_Clone,
00060 GATRequestNotifier_GetInterface,
00061 0
00062 };
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080 GATRequestNotifier
00081 GATRequestNotifier_Create(void *adaptor_data,
00082 GATRequestCPI_Instance const *instance_data,
00083 GATRequestNotifierListener listener, void *context_data)
00084 {
00085 GATResult err_code = GAT_MEMORYFAILURE;
00086 GATRequestNotifier retval = (GATRequestNotifier) malloc(
00087 sizeof(struct GATRequestNotifier_S));
00088
00089 if (NULL != retval)
00090 {
00091 memset(retval, 0, sizeof(struct GATRequestNotifier_S));
00092 retval->GATObject__vtable = &GATRequestNotifier__vtable;
00093
00094 retval->listener = listener;
00095 retval->adaptor_data = adaptor_data;
00096 retval->instance_data = instance_data;
00097 retval->context_data = context_data;
00098
00099 err_code = GAT_SUCCESS;
00100 }
00101
00102
00103 if (GAT_FAILED(err_code))
00104 {
00105
00106 GATRequestNotifier_Destroy(&retval);
00107 }
00108 return retval;
00109 }
00110
00111
00112
00113
00114
00115
00116
00117
00118 void
00119 GATRequestNotifier_Destroy(GATRequestNotifier *object)
00120 {
00121 if (NULL != object && NULL != *object)
00122 {
00123 free(*object);
00124 *object = NULL;
00125 }
00126 }
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141 GATResult
00142 GATRequestNotifier_Equals(GATRequestNotifier_const lhs,
00143 GATRequestNotifier_const rhs, GATBool *isequal)
00144 {
00145 GATResult retval = GAT_INVALID_HANDLE;
00146
00147 if (NULL != lhs && NULL != rhs)
00148 {
00149 retval = GAT_INVALID_PARAMETER;
00150 if (NULL != isequal)
00151 {
00152 *isequal = GATFalse;
00153 retval = GAT_SUCCESS;
00154 }
00155 }
00156 return retval;
00157 }
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171 GATResult
00172 GATRequestNotifier_Clone(GATRequestNotifier_const handle,
00173 GATRequestNotifier *new_handle)
00174 {
00175 GATResult retval = GAT_INVALID_HANDLE;
00176 if (NULL != handle)
00177 {
00178 if (NULL == new_handle)
00179 {
00180 retval = GAT_INVALID_PARAMETER;
00181 }
00182 else
00183 {
00184 struct GATRequestNotifier_S const *object = handle;
00185 GATRequestNotifier new_object =
00186 (GATRequestNotifier) malloc(sizeof(struct GATRequestNotifier_S));
00187
00188 *new_handle = NULL;
00189 if (NULL == new_object)
00190 {
00191 retval = GAT_MEMORYFAILURE;
00192 }
00193 else
00194 {
00195 memset(new_object, 0, sizeof(struct GATRequestNotifier_S));
00196 new_object->GATObject__vtable = &GATRequestNotifier__vtable;
00197
00198 new_object->listener = handle->listener;
00199 new_object->adaptor_data = handle->adaptor_data;
00200 new_object->instance_data = handle->instance_data;
00201 new_object->context_data = handle->context_data;
00202 }
00203 }
00204 }
00205 return retval;
00206 }
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218 GATType
00219 GATRequestNotifier_GetType(GATRequestNotifier_const object)
00220 {
00221 GAT_UNUSED_PARAMETER(object);
00222 return GATType_GATRequestNotifier;
00223 }
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237 GATResult
00238 GATRequestNotifier_GetInterface(GATRequestNotifier_const object, GATInterface iftype,
00239 void const **ifp)
00240 {
00241 GATResult retval = GAT_INVALID_PARAMETER;
00242
00243 if (NULL != ifp)
00244 {
00245 *ifp = NULL;
00246 {
00247 retval = GAT_NO_INTERFACE;
00248 }
00249 }
00250 return retval;
00251 }
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264 GATResult
00265 GATRequestNotifier_Respond(GATRequestNotifier_const notifier, GATTable table)
00266 {
00267 GATResult retval = GAT_INVALID_HANDLE;
00268 if (NULL != notifier)
00269 {
00270 retval = notifier->listener(notifier->adaptor_data,
00271 notifier->instance_data, table, notifier->context_data);
00272 }
00273 return retval;
00274 }
00275
00276
00277
00278
00279