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 #include <assert.h>
00026 #include "eyedb/base.h"
00027 #include "eyedb/Error.h"
00028 #include "eyedb/Exception.h"
00029 #include "eyedb/TransactionParams.h"
00030 #include "api_lib.h"
00031 #include "eyedblib/xdr.h"
00032 #include <eyedbsm/xdr.h>
00033
00034 namespace eyedb {
00035
00036 static rpc_Client *client;
00037
00038 rpc_ClientFunction
00039 *DBMCREATE_RPC,
00040 *DBMUPDATE_RPC,
00041
00042 *DBCREATE_RPC,
00043 *DBDELETE_RPC,
00044
00045 *DBINFO_RPC,
00046 *DBMOVE_RPC,
00047 *DBCOPY_RPC,
00048 *DBRENAME_RPC,
00049
00050 *USER_ADD_RPC,
00051 *USER_DELETE_RPC,
00052 *USER_PASSWD_SET_RPC,
00053 *PASSWD_SET_RPC,
00054
00055 *DEFAULT_DBACCESS_SET_RPC,
00056 *USER_DBACCESS_SET_RPC,
00057 *USER_SYSACCESS_SET_RPC,
00058
00059 *BACKEND_INTERRUPT_RPC,
00060
00061 *TRANSACTION_BEGIN_RPC,
00062 *TRANSACTION_ABORT_RPC,
00063 *TRANSACTION_COMMIT_RPC,
00064
00065 *TRANSACTION_PARAMS_SET_RPC,
00066 *TRANSACTION_PARAMS_GET_RPC,
00067
00068 *DBOPEN_RPC,
00069 *DBOPENLOCAL_RPC,
00070 *DBCLOSE_RPC,
00071
00072 *OBJECT_CREATE_RPC,
00073 *OBJECT_READ_RPC,
00074 *OBJECT_WRITE_RPC,
00075 *OBJECT_DELETE_RPC,
00076 *OBJECT_HEADER_READ_RPC,
00077 *OBJECT_SIZE_MODIFY_RPC,
00078 *OBJECT_PROTECTION_SET_RPC,
00079 *OBJECT_PROTECTION_GET_RPC,
00080 *OBJECT_CHECK_RPC,
00081
00082 *OID_MAKE_RPC,
00083
00084 *DATA_CREATE_RPC,
00085 *DATA_READ_RPC,
00086 *DATA_WRITE_RPC,
00087 *DATA_DELETE_RPC,
00088 *DATA_SIZE_GET_RPC,
00089 *DATA_SIZE_MODIFY_RPC,
00090
00091 *VDDATA_CREATE_RPC,
00092 *VDDATA_WRITE_RPC,
00093 *VDDATA_DELETE_RPC,
00094
00095 *SCHEMA_COMPLETE_RPC,
00096
00097 *ATTRIBUTE_INDEX_CREATE_RPC,
00098 *ATTRIBUTE_INDEX_REMOVE_RPC,
00099
00100 *INDEX_CREATE_RPC,
00101 *INDEX_REMOVE_RPC,
00102
00103 *CONSTRAINT_CREATE_RPC,
00104 *CONSTRAINT_DELETE_RPC,
00105
00106 *COLLECTION_GET_BY_IND_RPC,
00107 *COLLECTION_GET_BY_VALUE_RPC,
00108
00109 *SET_OBJECT_LOCK_RPC,
00110 *GET_OBJECT_LOCK_RPC,
00111
00112 *QUERY_LANG_CREATE_RPC,
00113 *QUERY_DATABASE_CREATE_RPC,
00114 *QUERY_CLASS_CREATE_RPC,
00115 *QUERY_COLLECTION_CREATE_RPC,
00116 *QUERY_ATTRIBUTE_CREATE_RPC,
00117 *QUERY_DELETE_RPC,
00118 *QUERY_SCAN_NEXT_RPC,
00119
00120 *EXECUTABLE_CHECK_RPC,
00121 *EXECUTABLE_EXECUTE_RPC,
00122 *EXECUTABLE_SET_EXTREF_PATH_RPC,
00123 *EXECUTABLE_GET_EXTREF_PATH_RPC,
00124
00125 *OQL_CREATE_RPC,
00126 *OQL_DELETE_RPC,
00127 *OQL_GETRESULT_RPC,
00128
00129 *SET_CONN_INFO_RPC,
00130 *CHECK_AUTH_RPC,
00131
00132 *SET_LOG_MASK_RPC,
00133
00134 *INDEX_GET_COUNT_RPC,
00135 *INDEX_GET_STATS_RPC,
00136 *INDEX_SIMUL_STATS_RPC,
00137 *COLLECTION_GET_IMPLSTATS_RPC,
00138 *COLLECTION_SIMUL_IMPLSTATS_RPC,
00139 *INDEX_GET_IMPL_RPC,
00140 *COLLECTION_GET_IMPL_RPC,
00141
00142 *GET_DEFAULT_DATASPACE_RPC,
00143 *SET_DEFAULT_DATASPACE_RPC,
00144
00145 *DATASPACE_SET_CURRENT_DATAFILE_RPC,
00146 *DATASPACE_GET_CURRENT_DATAFILE_RPC,
00147
00148 *GET_DEFAULT_INDEX_DATASPACE_RPC,
00149 *SET_DEFAULT_INDEX_DATASPACE_RPC,
00150 *GET_INDEX_LOCATIONS_RPC,
00151 *MOVE_INDEX_RPC,
00152 *GET_INSTANCE_CLASS_LOCATIONS_RPC,
00153 *MOVE_INSTANCE_CLASS_RPC,
00154 *GET_OBJECTS_LOCATIONS_RPC,
00155 *MOVE_OBJECTS_RPC,
00156 *GET_ATTRIBUTE_LOCATIONS_RPC,
00157 *MOVE_ATTRIBUTE_RPC,
00158
00159 *CREATE_DATAFILE_RPC,
00160 *DELETE_DATAFILE_RPC,
00161 *MOVE_DATAFILE_RPC,
00162 *DEFRAGMENT_DATAFILE_RPC,
00163 *RESIZE_DATAFILE_RPC,
00164 *GET_DATAFILEI_NFO_RPC,
00165 *RENAME_DATAFILE_RPC,
00166 *CREATE_DATASPACE_RPC,
00167 *UPDATE_DATASPACE_RPC,
00168 *DELETE_DATASPACE_RPC,
00169 *RENAME_DATASPACE_RPC,
00170 *GET_SERVER_OUTOFBAND_DATA_RPC,
00171
00172 *SET_MAXOBJCOUNT_RPC,
00173 *GET_MAXOBJCOUNT_RPC,
00174 *SET_LOGSIZE_RPC,
00175 *GET_LOGSIZE_RPC;
00176
00177 rpc_ArgType
00178 rpcDB_LocalDBContextType,
00179 OidType,
00180
00181 RPCStatusType;
00182
00183 static void status_ua_client(rpc_Arg *, char **, void *,
00184 rpc_SendRcv, rpc_FromTo);
00185
00186 static void oid_ua_client(rpc_Arg *, char **, void *,
00187 rpc_SendRcv, rpc_FromTo);
00188
00189
00190
00191 static int STATUS_SZ;
00192
00193 rpc_Client *
00194 rpcFeInit()
00195 {
00196
00197 client = rpc_clientCreate();
00198
00199
00200
00201 STATUS_SZ = getenv("STATUS_SZ") ? atoi(getenv("STATUS_SZ")) :
00202 sizeof(RPCStatusRec);
00203
00204
00205 rpcDB_LocalDBContextType = rpc_makeClientUserType(client, sizeof(rpcDB_LocalDBContext), 0, rpc_False);
00206
00207 OidType = rpc_makeClientUserType(client, sizeof(eyedbsm::Oid), oid_ua_client, rpc_False);
00208
00209 #ifdef STATUS_VARIABLE
00210 RPCStatusType = rpc_makeClientUserType(client, rpc_SizeVariable, status_ua_client, rpc_False);
00211 #else
00212 RPCStatusType = rpc_makeClientUserType(client, STATUS_SZ+4, status_ua_client, rpc_False);
00213 #endif
00214
00215
00216
00217 DBMCREATE_RPC =
00218 rpc_makeUserClientFunction(client, makeDBMCREATE());
00219
00220 DBMUPDATE_RPC =
00221 rpc_makeUserClientFunction(client, makeDBMUPDATE());
00222
00223 DBCREATE_RPC =
00224 rpc_makeUserClientFunction(client, makeDBCREATE());
00225
00226 DBDELETE_RPC =
00227 rpc_makeUserClientFunction(client, makeDBDELETE());
00228
00229 DBINFO_RPC =
00230 rpc_makeUserClientFunction(client, makeDBINFO());
00231
00232 DBMOVE_RPC =
00233 rpc_makeUserClientFunction(client, makeDBMOVE());
00234
00235 DBCOPY_RPC =
00236 rpc_makeUserClientFunction(client, makeDBCOPY());
00237
00238 USER_ADD_RPC =
00239 rpc_makeUserClientFunction(client, makeUSER_ADD());
00240
00241 USER_DELETE_RPC =
00242 rpc_makeUserClientFunction(client, makeUSER_DELETE());
00243
00244 USER_PASSWD_SET_RPC =
00245 rpc_makeUserClientFunction(client, makeUSER_PASSWD_SET());
00246
00247 PASSWD_SET_RPC =
00248 rpc_makeUserClientFunction(client, makePASSWD_SET());
00249
00250 DEFAULT_DBACCESS_SET_RPC =
00251 rpc_makeUserClientFunction(client, makeDEFAULT_DBACCESS_SET());
00252
00253 USER_DBACCESS_SET_RPC =
00254 rpc_makeUserClientFunction(client, makeUSER_DBACCESS_SET());
00255
00256 USER_SYSACCESS_SET_RPC =
00257 rpc_makeUserClientFunction(client, makeUSER_SYSACCESS_SET());
00258
00259 DBRENAME_RPC =
00260 rpc_makeUserClientFunction(client, makeDBRENAME());
00261
00262 BACKEND_INTERRUPT_RPC =
00263 rpc_makeUserClientFunction(client, makeBACKEND_INTERRUPT());
00264
00265 TRANSACTION_BEGIN_RPC =
00266 rpc_makeUserClientFunction(client, makeTRANSACTION_BEGIN());
00267
00268 TRANSACTION_COMMIT_RPC =
00269 rpc_makeUserClientFunction(client, makeTRANSACTION_COMMIT());
00270
00271 TRANSACTION_ABORT_RPC =
00272 rpc_makeUserClientFunction(client, makeTRANSACTION_ABORT());
00273
00274 TRANSACTION_PARAMS_SET_RPC =
00275 rpc_makeUserClientFunction(client, makeTRANSACTION_PARAMS_SET());
00276
00277 TRANSACTION_PARAMS_GET_RPC =
00278 rpc_makeUserClientFunction(client, makeTRANSACTION_PARAMS_GET());
00279
00280 DBOPEN_RPC =
00281 rpc_makeUserClientFunction(client, makeDBOPEN());
00282
00283 DBOPENLOCAL_RPC =
00284 rpc_makeUserClientFunction(client, makeDBOPENLOCAL());
00285
00286 DBCLOSE_RPC =
00287 rpc_makeUserClientFunction(client, makeDBCLOSE());
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298 OBJECT_CREATE_RPC =
00299 rpc_makeUserClientFunction(client, makeOBJECT_CREATE());
00300
00301 OBJECT_WRITE_RPC =
00302 rpc_makeUserClientFunction(client, makeOBJECT_WRITE());
00303
00304 OBJECT_READ_RPC =
00305 rpc_makeUserClientFunction(client, makeOBJECT_READ());
00306
00307 OBJECT_DELETE_RPC =
00308 rpc_makeUserClientFunction(client, makeOBJECT_DELETE());
00309
00310 OBJECT_HEADER_READ_RPC =
00311 rpc_makeUserClientFunction(client, makeOBJECT_HEADER_READ());
00312
00313 OBJECT_SIZE_MODIFY_RPC =
00314 rpc_makeUserClientFunction(client, makeOBJECT_SIZE_MODIFY());
00315
00316 OBJECT_CHECK_RPC =
00317 rpc_makeUserClientFunction(client, makeOBJECT_CHECK());
00318
00319 OBJECT_PROTECTION_SET_RPC =
00320 rpc_makeUserClientFunction(client, makeOBJECT_PROTECTION_SET());
00321
00322 OBJECT_PROTECTION_GET_RPC =
00323 rpc_makeUserClientFunction(client, makeOBJECT_PROTECTION_GET());
00324
00325 OID_MAKE_RPC =
00326 rpc_makeUserClientFunction(client, makeOID_MAKE());
00327
00328 DATA_CREATE_RPC =
00329 rpc_makeUserClientFunction(client, makeDATA_CREATE());
00330
00331 DATA_WRITE_RPC =
00332 rpc_makeUserClientFunction(client, makeDATA_WRITE());
00333
00334 DATA_READ_RPC =
00335 rpc_makeUserClientFunction(client, makeDATA_READ());
00336
00337 DATA_DELETE_RPC =
00338 rpc_makeUserClientFunction(client, makeDATA_DELETE());
00339
00340 DATA_SIZE_GET_RPC =
00341 rpc_makeUserClientFunction(client, makeDATA_SIZE_GET());
00342
00343 DATA_SIZE_MODIFY_RPC =
00344 rpc_makeUserClientFunction(client, makeDATA_SIZE_MODIFY());
00345
00346 VDDATA_CREATE_RPC =
00347 rpc_makeUserClientFunction(client, makeVDDATA_CREATE());
00348
00349 VDDATA_WRITE_RPC =
00350 rpc_makeUserClientFunction(client, makeVDDATA_WRITE());
00351
00352 VDDATA_DELETE_RPC =
00353 rpc_makeUserClientFunction(client, makeVDDATA_DELETE());
00354
00355 SCHEMA_COMPLETE_RPC =
00356 rpc_makeUserClientFunction(client, makeSCHEMA_COMPLETE());
00357
00358 ATTRIBUTE_INDEX_CREATE_RPC =
00359 rpc_makeUserClientFunction(client, makeATTRIBUTE_INDEX_CREATE());
00360
00361 ATTRIBUTE_INDEX_REMOVE_RPC =
00362 rpc_makeUserClientFunction(client, makeATTRIBUTE_INDEX_REMOVE());
00363
00364 INDEX_CREATE_RPC =
00365 rpc_makeUserClientFunction(client, makeINDEX_CREATE());
00366
00367 INDEX_REMOVE_RPC =
00368 rpc_makeUserClientFunction(client, makeINDEX_REMOVE());
00369
00370 CONSTRAINT_CREATE_RPC =
00371 rpc_makeUserClientFunction(client, makeCONSTRAINT_CREATE());
00372
00373 CONSTRAINT_DELETE_RPC =
00374 rpc_makeUserClientFunction(client, makeCONSTRAINT_DELETE());
00375
00376 COLLECTION_GET_BY_IND_RPC =
00377 rpc_makeUserClientFunction(client, makeCOLLECTION_GET_BY_IND());
00378
00379 COLLECTION_GET_BY_VALUE_RPC =
00380 rpc_makeUserClientFunction(client, makeCOLLECTION_GET_BY_VALUE());
00381
00382 SET_OBJECT_LOCK_RPC =
00383 rpc_makeUserClientFunction(client, makeSET_OBJECT_LOCK());
00384
00385 GET_OBJECT_LOCK_RPC =
00386 rpc_makeUserClientFunction(client, makeGET_OBJECT_LOCK());
00387
00388 QUERY_LANG_CREATE_RPC =
00389 rpc_makeUserClientFunction(client, makeQUERY_LANG_CREATE());
00390
00391 QUERY_DATABASE_CREATE_RPC =
00392 rpc_makeUserClientFunction(client, makeQUERY_DATABASE_CREATE());
00393
00394 QUERY_CLASS_CREATE_RPC =
00395 rpc_makeUserClientFunction(client, makeQUERY_CLASS_CREATE());
00396
00397 QUERY_COLLECTION_CREATE_RPC =
00398 rpc_makeUserClientFunction(client, makeQUERY_COLLECTION_CREATE());
00399
00400 QUERY_ATTRIBUTE_CREATE_RPC =
00401 rpc_makeUserClientFunction(client, makeQUERY_ATTRIBUTE_CREATE());
00402
00403 QUERY_DELETE_RPC =
00404 rpc_makeUserClientFunction(client, makeQUERY_DELETE());
00405
00406 QUERY_SCAN_NEXT_RPC =
00407 rpc_makeUserClientFunction(client, makeQUERY_SCAN_NEXT());
00408
00409 EXECUTABLE_CHECK_RPC =
00410 rpc_makeUserClientFunction(client, makeEXECUTABLE_CHECK());
00411
00412 EXECUTABLE_EXECUTE_RPC =
00413 rpc_makeUserClientFunction(client, makeEXECUTABLE_EXECUTE());
00414
00415 EXECUTABLE_SET_EXTREF_PATH_RPC =
00416 rpc_makeUserClientFunction(client,
00417 makeEXECUTABLE_SET_EXTREF_PATH());
00418
00419 EXECUTABLE_GET_EXTREF_PATH_RPC =
00420 rpc_makeUserClientFunction(client,
00421 makeEXECUTABLE_GET_EXTREF_PATH());
00422
00423 OQL_CREATE_RPC =
00424 rpc_makeUserClientFunction(client, makeOQL_CREATE());
00425
00426 OQL_DELETE_RPC =
00427 rpc_makeUserClientFunction(client, makeOQL_DELETE());
00428
00429 OQL_GETRESULT_RPC =
00430 rpc_makeUserClientFunction(client, makeOQL_GETRESULT());
00431
00432 SET_CONN_INFO_RPC =
00433 rpc_makeUserClientFunction(client, makeSET_CONN_INFO());
00434
00435 CHECK_AUTH_RPC =
00436 rpc_makeUserClientFunction(client, makeCHECK_AUTH());
00437
00438 SET_LOG_MASK_RPC =
00439 rpc_makeUserClientFunction(client, makeSET_LOG_MASK());
00440
00441 INDEX_GET_COUNT_RPC =
00442 rpc_makeUserClientFunction(client, makeINDEX_GET_COUNT());
00443
00444 INDEX_GET_STATS_RPC =
00445 rpc_makeUserClientFunction(client, makeINDEX_GET_STATS());
00446
00447 INDEX_SIMUL_STATS_RPC =
00448 rpc_makeUserClientFunction(client, makeINDEX_SIMUL_STATS());
00449
00450 COLLECTION_GET_IMPLSTATS_RPC =
00451 rpc_makeUserClientFunction(client, makeCOLLECTION_GET_IMPLSTATS());
00452
00453 COLLECTION_SIMUL_IMPLSTATS_RPC =
00454 rpc_makeUserClientFunction(client, makeCOLLECTION_SIMUL_IMPLSTATS());
00455
00456 INDEX_GET_IMPL_RPC =
00457 rpc_makeUserClientFunction(client, makeINDEX_GET_IMPL());
00458
00459 COLLECTION_GET_IMPL_RPC =
00460 rpc_makeUserClientFunction(client, makeCOLLECTION_GET_IMPL());
00461
00462 GET_DEFAULT_DATASPACE_RPC =
00463 rpc_makeUserClientFunction(client, makeGET_DEFAULT_DATASPACE());
00464
00465 SET_DEFAULT_DATASPACE_RPC =
00466 rpc_makeUserClientFunction(client, makeSET_DEFAULT_DATASPACE());
00467
00468 DATASPACE_SET_CURRENT_DATAFILE_RPC =
00469 rpc_makeUserClientFunction(client, makeDATASPACE_SET_CURRENT_DATAFILE());
00470
00471 DATASPACE_GET_CURRENT_DATAFILE_RPC =
00472 rpc_makeUserClientFunction(client, makeDATASPACE_GET_CURRENT_DATAFILE());
00473
00474 GET_DEFAULT_INDEX_DATASPACE_RPC =
00475 rpc_makeUserClientFunction(client, makeGET_DEFAULT_INDEX_DATASPACE());
00476
00477 SET_DEFAULT_INDEX_DATASPACE_RPC =
00478 rpc_makeUserClientFunction(client, makeSET_DEFAULT_INDEX_DATASPACE());
00479
00480 GET_INDEX_LOCATIONS_RPC =
00481 rpc_makeUserClientFunction(client, makeGET_INDEX_LOCATIONS());
00482
00483 MOVE_INDEX_RPC =
00484 rpc_makeUserClientFunction(client, makeMOVE_INDEX());
00485
00486 GET_INSTANCE_CLASS_LOCATIONS_RPC =
00487 rpc_makeUserClientFunction(client, makeGET_INSTANCE_CLASS_LOCATIONS());
00488
00489 MOVE_INSTANCE_CLASS_RPC =
00490 rpc_makeUserClientFunction(client, makeMOVE_INSTANCE_CLASS());
00491
00492 GET_OBJECTS_LOCATIONS_RPC =
00493 rpc_makeUserClientFunction(client, makeGET_OBJECTS_LOCATIONS());
00494
00495 MOVE_OBJECTS_RPC =
00496 rpc_makeUserClientFunction(client, makeMOVE_OBJECTS());
00497
00498 GET_ATTRIBUTE_LOCATIONS_RPC =
00499 rpc_makeUserClientFunction(client, makeGET_ATTRIBUTE_LOCATIONS());
00500
00501 MOVE_ATTRIBUTE_RPC =
00502 rpc_makeUserClientFunction(client, makeMOVE_ATTRIBUTE());
00503
00504 CREATE_DATAFILE_RPC =
00505 rpc_makeUserClientFunction(client, makeCREATE_DATAFILE());
00506
00507 DELETE_DATAFILE_RPC =
00508 rpc_makeUserClientFunction(client, makeDELETE_DATAFILE());
00509
00510 MOVE_DATAFILE_RPC =
00511 rpc_makeUserClientFunction(client, makeMOVE_DATAFILE());
00512
00513 DEFRAGMENT_DATAFILE_RPC =
00514 rpc_makeUserClientFunction(client, makeDEFRAGMENT_DATAFILE());
00515
00516 RESIZE_DATAFILE_RPC =
00517 rpc_makeUserClientFunction(client, makeRESIZE_DATAFILE());
00518
00519 GET_DATAFILEI_NFO_RPC =
00520 rpc_makeUserClientFunction(client, makeGET_DATAFILEI_NFO());
00521
00522 RENAME_DATAFILE_RPC =
00523 rpc_makeUserClientFunction(client, makeRENAME_DATAFILE());
00524
00525 CREATE_DATASPACE_RPC =
00526 rpc_makeUserClientFunction(client, makeCREATE_DATASPACE());
00527
00528 UPDATE_DATASPACE_RPC =
00529 rpc_makeUserClientFunction(client, makeUPDATE_DATASPACE());
00530
00531 DELETE_DATASPACE_RPC =
00532 rpc_makeUserClientFunction(client, makeDELETE_DATASPACE());
00533
00534 RENAME_DATASPACE_RPC =
00535 rpc_makeUserClientFunction(client, makeRENAME_DATASPACE());
00536
00537 GET_SERVER_OUTOFBAND_DATA_RPC =
00538 rpc_makeUserClientFunction(client, makeGET_SERVER_OUTOFBAND_DATA());
00539
00540 SET_MAXOBJCOUNT_RPC =
00541 rpc_makeUserClientFunction(client, makeSET_MAXOBJCOUNT());
00542
00543 GET_MAXOBJCOUNT_RPC =
00544 rpc_makeUserClientFunction(client, makeGET_MAXOBJCOUNT());
00545
00546 SET_LOGSIZE_RPC =
00547 rpc_makeUserClientFunction(client, makeSET_LOGSIZE());
00548
00549 GET_LOGSIZE_RPC =
00550 rpc_makeUserClientFunction(client, makeGET_LOGSIZE());
00551
00552
00553 rpc_setClientArgSize(client, sizeof(ClientArg));
00554
00555 return client;
00556 }
00557
00558 void
00559 rpcFeRelease()
00560 {
00561 }
00562
00563 rpc_Client *
00564 getRpcClient()
00565 {
00566 return client;
00567 }
00568
00569
00570
00571
00572
00573
00574
00575
00576
00577
00578 #include "eyedblib/rpc_lib.h"
00579
00580 #define MIN(X, Y) ((X) < (Y) ? (X) : (Y))
00581
00582 static void
00583 status_ua_client(rpc_Arg *arg, char **pbuff, void *pua,
00584 rpc_SendRcv send_rcv, rpc_FromTo fromto)
00585 {
00586 RPCStatusRec *s = (RPCStatusRec *)pua;
00587 char *buff = *pbuff;
00588
00589 rpc_copy_fast_xdr(arg, buff, &s->err, sizeof(eyedblib::int32), send_rcv, fromto,
00590 x2h_32_cpy, h2x_32_cpy);
00591 if ((arg->send_rcv & rpc_Send))
00592 assert(0);
00593 else if ((arg->send_rcv & rpc_Rcv) && fromto == rpc_From)
00594 {
00595 #ifdef STATUS_VARIABLE
00596 strcpy(s->err_msg, buff);
00597 printf("receiving status '%s'\n", buff);
00598 *pbuff += sizeof(eyedblib::int32)+strlen(buff)+1;
00599 #else
00600 strncpy(s->err_msg, buff, STATUS_SZ-4);
00601 s->err_msg[MIN(STATUS_SZ-4, strlen(buff))] = 0;
00602 *pbuff += STATUS_SZ;
00603 #endif
00604 }
00605 }
00606
00607 static void
00608 oid_ua_client(rpc_Arg *arg, char **pbuff, void *pua,
00609 rpc_SendRcv send_rcv, rpc_FromTo fromto)
00610 {
00611 eyedbsm::Oid oid;
00612
00613 if (send_rcv & arg->send_rcv) {
00614 if (fromto == rpc_To) {
00615 memcpy(&oid, pua, sizeof(oid));
00616 eyedbsm::h2x_oid(&oid, &oid);
00617 memcpy(*pbuff, &oid, sizeof(oid));
00618 }
00619 else {
00620 memcpy(&oid, *pbuff, sizeof(oid));
00621 eyedbsm::x2h_oid(&oid, &oid);
00622 memcpy(pua, &oid, sizeof(oid));
00623 }
00624 *pbuff += sizeof(eyedbsm::Oid);
00625 }
00626 }
00627 }