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