00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 static const char *rcsid = "$Header: /export/cvs-gridlab/wp-1/Codes/GATEngine/C-reference/adaptors/resourcebroker/GATJobCPIInstanceData.c,v 1.4 2004/04/02 12:31:57 hartmutkaiser Exp $";
00020
00021
00022 #include <string.h>
00023 #include <sys/utsname.h>
00024
00025
00026 #include "GATJobCPIInstanceData.h"
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048 GATJobCPIInstance_Data *
00049 GATJobCPIInstance_Data_Create(GATJobDescription_const description,
00050 GATResource_const resource, GATBool checkpointable)
00051 {
00052 GATJobCPIInstance_Data *retval =
00053 (GATJobCPIInstance_Data *)malloc(sizeof(struct GATJobCPIInstance_Data));
00054
00055 if (NULL != retval)
00056 {
00057 memset(retval, 0, sizeof(struct GATJobCPIInstance_Data));
00058 if (GAT_SUCCEEDED(GATJobDescription_Clone(description, &retval->description)))
00059 {
00060 retval->parameters = GATTable_Create();
00061 if (NULL == retval->parameters)
00062 {
00063 GATJobCPIInstance_Data_Destroy(&retval);
00064 }
00065 else
00066 {
00067
00068 struct utsname sysinfo;
00069 GATTime time_now = GATTime_Create(0);
00070
00071 if (NULL == time_now || uname(&sysinfo) < 0 ||
00072 GAT_FAILED(GATTable_Add_String(retval->parameters,
00073 "hostname", sysinfo.nodename)) ||
00074 GAT_FAILED(GATTable_Add_GATObject(retval->parameters,
00075 "scheduletime", GATTime_ToGATObject_const(time_now))) ||
00076 GAT_FAILED(GATTable_Add_int(retval->parameters,
00077 "checkpointable", checkpointable)))
00078 {
00079 GATJobCPIInstance_Data_Destroy(&retval);
00080 }
00081 else
00082 {
00083 if (GAT_FAILED(GATResource_Clone(resource, &retval->resource)))
00084 {
00085 GATJobCPIInstance_Data_Destroy(&retval);
00086 }
00087 }
00088
00089 GATTime_Destroy(&time_now);
00090 }
00091 }
00092 }
00093 return retval;
00094 }
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104 void
00105 GATJobCPIInstance_Data_Destroy(
00106 GATJobCPIInstance_Data **instance_data)
00107 {
00108 if (NULL != instance_data && NULL != *instance_data)
00109 {
00110 GATJobDescription_Destroy(&(*instance_data)->description);
00111 GATTable_Destroy(&(*instance_data)->parameters);
00112 GATStatus_Destroy(&(*instance_data)->status);
00113 GATResource_Destroy(&(*instance_data)->resource);
00114
00115 free(*instance_data);
00116 instance_data = NULL;
00117 }
00118 }
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131 GATResult
00132 GATJobCPIInstance_Data_Clone(GATJobCPIInstance_Data const *instance_data,
00133 GATJobCPIInstance_Data **new_instance_data)
00134 {
00135 GATResult retval = GAT_INVALID_PARAMETER;
00136 if (NULL != new_instance_data)
00137 {
00138 GATJobCPIInstance_Data *new_data =
00139 (GATJobCPIInstance_Data *)malloc(sizeof(struct GATJobCPIInstance_Data));
00140
00141 if (NULL != new_data)
00142 {
00143 memset(new_data, 0, sizeof(struct GATJobCPIInstance_Data));
00144 if (GAT_SUCCEEDED(retval = GATJobDescription_Clone(
00145 instance_data->description, &new_data->description)) &&
00146 GAT_SUCCEEDED(retval = GATTable_Clone(instance_data->parameters,
00147 &new_data->parameters)) &&
00148 (
00149 NULL == instance_data->status ||
00150 GAT_SUCCEEDED(retval = GATStatus_Clone(instance_data->status,
00151 &new_data->status))
00152 ) &&
00153 (
00154 NULL == instance_data->resource ||
00155 GAT_SUCCEEDED(retval = GATResource_Clone(instance_data->resource,
00156 &new_data->resource))
00157 )
00158 )
00159 {
00160 *new_instance_data = new_data;
00161 }
00162 else
00163 {
00164 GATJobCPIInstance_Data_Destroy(&new_data);
00165 }
00166 }
00167 else
00168 {
00169 retval = GAT_MEMORYFAILURE;
00170 }
00171 }
00172 return retval;
00173 }
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188 GATResult
00189 GATJobCPIInstance_Data_Equals(
00190 GATJobCPIInstance_Data const *lhs,
00191 GATJobCPIInstance_Data const *rhs, GATBool *isequal)
00192 {
00193 GATResult retval = GAT_INVALID_HANDLE;
00194 if (NULL != lhs && NULL != rhs)
00195 {
00196 if (NULL != isequal)
00197 {
00198 retval = GATJobDescription_Equals(lhs->description, rhs->description,
00199 isequal);
00200 if (GAT_SUCCEEDED(retval) && GATTrue == *isequal)
00201 {
00202 retval = GATTable_Equals(lhs->parameters, rhs->parameters, isequal);
00203 }
00204 if (GAT_SUCCEEDED(retval) && GATTrue == *isequal)
00205 {
00206 if (NULL != lhs->status && NULL != rhs->status)
00207 {
00208 retval = GATStatus_Equals(lhs->status, rhs->status, isequal);
00209 }
00210 else
00211 {
00212 *isequal = (NULL == lhs->status && NULL == rhs->status) ? GATTrue : GATFalse;
00213 retval = GAT_SUCCESS;
00214 }
00215 }
00216 if (GAT_SUCCEEDED(retval) && GATTrue == *isequal)
00217 {
00218 if (NULL != lhs->resource && NULL != rhs->resource)
00219 {
00220 retval = GATResource_Equals(lhs->resource, rhs->resource, isequal);
00221 }
00222 else
00223 {
00224 *isequal = (NULL == lhs->resource && NULL == rhs->resource) ? GATTrue : GATFalse;
00225 retval = GAT_SUCCESS;
00226 }
00227 }
00228 }
00229 else
00230 {
00231 retval = GAT_INVALID_PARAMETER;
00232 }
00233 }
00234 return retval;
00235 }
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251 GATResult
00252 GATJobCPIInstance_Data_Serialize(
00253 GATJobCPIInstance_Data const *instance_data, GATObject stream,
00254 GATBool clear_dirty)
00255 {
00256 GATResult retval = GAT_INVALID_HANDLE;
00257 if (NULL != instance_data)
00258 {
00259 retval = GATJobDescription_Serialise(instance_data->description, stream,
00260 clear_dirty);
00261 if (GAT_SUCCEEDED(retval))
00262 {
00263 retval = GATTable_Serialise(instance_data->parameters, stream,
00264 clear_dirty);
00265 }
00266 if (GAT_SUCCEEDED(retval) && NULL != instance_data->status)
00267 {
00268 retval = GATuint32_Serialise(GATTrue, stream);
00269 if (GAT_SUCCEEDED(retval))
00270 {
00271 retval = GATStatus_Serialise(instance_data->status, stream,
00272 clear_dirty);
00273 }
00274 }
00275 else
00276 {
00277
00278 retval = GATuint32_Serialise(GATFalse, stream);
00279 }
00280 if (GAT_SUCCEEDED(retval) && NULL != instance_data->resource)
00281 {
00282 retval = GATuint32_Serialise(GATTrue, stream);
00283 if (GAT_SUCCEEDED(retval))
00284 {
00285 retval = GATResource_Serialise(instance_data->resource, stream,
00286 clear_dirty);
00287 }
00288 }
00289 else
00290 {
00291
00292 retval = GATuint32_Serialise(GATFalse, stream);
00293 }
00294 }
00295 return retval;
00296 }
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
00312 GATResult
00313 GATJobCPIInstance_Data_DeSerialize(GATContext context, GATObject stream,
00314 GATJobCPIInstance_Data **instance_data)
00315 {
00316 GATResult retval = GAT_NOTIMPL;
00317 return retval;
00318 }
00319
00320
00321