api_lib.h

00001 /* 
00002    EyeDB Object Database Management System
00003    Copyright (C) 1994-2008 SYSRA
00004    
00005    EyeDB is free software; you can redistribute it and/or
00006    modify it under the terms of the GNU Lesser General Public
00007    License as published by the Free Software Foundation; either
00008    version 2.1 of the License, or (at your option) any later version.
00009    
00010    EyeDB is distributed in the hope that it will be useful,
00011    but WITHOUT ANY WARRANTY; without even the implied warranty of
00012    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013    Lesser General Public License for more details.
00014    
00015    You should have received a copy of the GNU Lesser General Public
00016    License along with this library; if not, write to the Free Software
00017    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA 
00018 */
00019 
00020 /*
00021    Author: Eric Viara <viara@sysra.com>
00022 */
00023 
00024 
00025 #ifndef _EYEDB_API_LIB_H
00026 #define _EYEDB_API_LIB_H
00027 
00028 #include <eyedblib/rpc_fe.h>
00029 #include "rpc_lib.h"
00030 #include <eyedblib/rpcdb.h>
00031 #include <eyedb/internals/ObjectHeader.h>
00032 
00033 namespace eyedb {
00034 
00035 #ifndef _IDB_KERN_
00036   typedef union {
00037     eyedblib::int32 a_int;
00038     eyedblib::int64 a_int64;
00039     char *a_string;
00040     rpc_ClientData a_data;
00041 
00042     /* specific idb */
00043     rpcDB_LocalDBContext a_ldbctx;
00044     eyedbsm::Oid a_oid;
00045     Bool a_bool;
00046     RPCStatusRec a_status;
00047   } ClientArg;
00048 
00049   extern rpc_ClientFunction
00050   *DBMCREATE_RPC,
00051     *DBMUPDATE_RPC,
00052 
00053     *DBCREATE_RPC,
00054     *DBDELETE_RPC,
00055 
00056     *DBINFO_RPC,
00057     *DBMOVE_RPC,
00058     *DBCOPY_RPC,
00059     *DBRENAME_RPC,
00060 
00061     *USER_ADD_RPC,
00062     *USER_DELETE_RPC,
00063     *USER_PASSWD_SET_RPC,
00064     *PASSWD_SET_RPC,
00065 
00066     *DEFAULT_DBACCESS_SET_RPC,
00067     *USER_DBACCESS_SET_RPC,
00068     *USER_SYSACCESS_SET_RPC,
00069 
00070     *BACKEND_INTERRUPT_RPC,
00071 
00072     *TRANSACTION_BEGIN_RPC,
00073     *TRANSACTION_ABORT_RPC,
00074     *TRANSACTION_COMMIT_RPC,
00075 
00076     *TRANSACTION_PARAMS_SET_RPC,
00077     *TRANSACTION_PARAMS_GET_RPC,
00078 
00079     *DBOPEN_RPC,
00080     *DBOPENLOCAL_RPC,
00081     *DBCLOSE_RPC,
00082 
00083     *OBJECT_CREATE_RPC,
00084     *OBJECT_READ_RPC,
00085     *OBJECT_WRITE_RPC,
00086     *OBJECT_DELETE_RPC,
00087     *OBJECT_HEADER_READ_RPC,
00088     *OBJECT_SIZE_MODIFY_RPC,
00089     *OBJECT_PROTECTION_SET_RPC,
00090     *OBJECT_PROTECTION_GET_RPC,
00091     *OBJECT_CHECK_RPC,
00092 
00093     *OID_MAKE_RPC,
00094 
00095     *DATA_CREATE_RPC,
00096     *DATA_READ_RPC,
00097     *DATA_WRITE_RPC,
00098     *DATA_DELETE_RPC,
00099     *DATA_SIZE_GET_RPC,
00100     *DATA_SIZE_MODIFY_RPC,
00101 
00102     *VDDATA_CREATE_RPC,
00103     *VDDATA_WRITE_RPC,
00104     *VDDATA_DELETE_RPC,
00105 
00106     *SCHEMA_COMPLETE_RPC,
00107 
00108     *ATTRIBUTE_INDEX_CREATE_RPC,
00109     *ATTRIBUTE_INDEX_REMOVE_RPC,
00110 
00111     *INDEX_CREATE_RPC,
00112     *INDEX_REMOVE_RPC,
00113 
00114     *CONSTRAINT_CREATE_RPC,
00115     *CONSTRAINT_DELETE_RPC,
00116 
00117     *COLLECTION_GET_BY_IND_RPC,
00118     *COLLECTION_GET_BY_VALUE_RPC,
00119 
00120     *SET_OBJECT_LOCK_RPC,
00121     *GET_OBJECT_LOCK_RPC,
00122 
00123     *QUERY_LANG_CREATE_RPC,
00124     *QUERY_DATABASE_CREATE_RPC,
00125     *QUERY_CLASS_CREATE_RPC,
00126     *QUERY_COLLECTION_CREATE_RPC,
00127     *QUERY_ATTRIBUTE_CREATE_RPC,
00128     *QUERY_DELETE_RPC,
00129     *QUERY_SCAN_NEXT_RPC,
00130 
00131     *EXECUTABLE_CHECK_RPC,
00132     *EXECUTABLE_EXECUTE_RPC,
00133     *EXECUTABLE_SET_EXTREF_PATH_RPC,
00134     *EXECUTABLE_GET_EXTREF_PATH_RPC,
00135 
00136     *OQL_CREATE_RPC,
00137     *OQL_DELETE_RPC,
00138     *OQL_GETRESULT_RPC,
00139 
00140     *SET_CONN_INFO_RPC,
00141     *CHECK_AUTH_RPC,
00142 
00143     *INDEX_GET_COUNT_RPC,
00144     *INDEX_GET_STATS_RPC,
00145     *INDEX_SIMUL_STATS_RPC,
00146     *COLLECTION_GET_IMPLSTATS_RPC,
00147     *COLLECTION_SIMUL_IMPLSTATS_RPC,
00148     *INDEX_GET_IMPL_RPC,
00149     *COLLECTION_GET_IMPL_RPC,
00150 
00151     *SET_LOG_MASK_RPC,
00152 
00153     *GET_DEFAULT_DATASPACE_RPC,
00154     *SET_DEFAULT_DATASPACE_RPC,
00155     *DATASPACE_SET_CURRENT_DATAFILE_RPC,
00156     *DATASPACE_GET_CURRENT_DATAFILE_RPC,
00157 
00158     *GET_DEFAULT_INDEX_DATASPACE_RPC,
00159     *SET_DEFAULT_INDEX_DATASPACE_RPC,
00160     *GET_INDEX_LOCATIONS_RPC,
00161     *MOVE_INDEX_RPC,
00162     *GET_INSTANCE_CLASS_LOCATIONS_RPC,
00163     *MOVE_INSTANCE_CLASS_RPC,
00164     *GET_OBJECTS_LOCATIONS_RPC,
00165     *MOVE_OBJECTS_RPC,
00166     *GET_ATTRIBUTE_LOCATIONS_RPC,
00167     *MOVE_ATTRIBUTE_RPC,
00168 
00169     *CREATE_DATAFILE_RPC,
00170     *DELETE_DATAFILE_RPC,
00171     *MOVE_DATAFILE_RPC,
00172     *DEFRAGMENT_DATAFILE_RPC,
00173     *RESIZE_DATAFILE_RPC,
00174     *GET_DATAFILEI_NFO_RPC,
00175     *RENAME_DATAFILE_RPC,
00176     *CREATE_DATASPACE_RPC,
00177     *UPDATE_DATASPACE_RPC,
00178     *DELETE_DATASPACE_RPC,
00179     *RENAME_DATASPACE_RPC,
00180     *GET_SERVER_OUTOFBAND_DATA_RPC;
00181 
00182 #endif
00183 
00184   extern rpc_Client *
00185   rpcFeInit(void);
00186 
00187   extern void
00188   rpcFeRelease(void);
00189 
00190   extern rpc_Client *
00191   getRpcClient(void);
00192 
00193   extern RPCStatus
00194   connOpen(const char *, const char *, ConnHandle **, int, std::string &);
00195 
00196   extern RPCStatus
00197   connClose(ConnHandle *);
00198 
00199   extern RPCStatus
00200   dbmCreate(ConnHandle *, const char *, const char *,
00201                 const DbCreateDescription *);
00202 
00203   extern RPCStatus
00204   dbmUpdate(ConnHandle *, const char *, const char *, const char *);
00205 
00206   extern RPCStatus
00207   dbCreate(ConnHandle *, const char *, const char *, const char *,
00208                const char *, const DbCreateDescription *);
00209 
00210   extern RPCStatus
00211   dbDelete(ConnHandle *, const char *, const char *, const char *,
00212                const char *);
00213 
00214   extern RPCStatus
00215   dbInfo(ConnHandle *, const char *, const char *, const char *,
00216              const char *, int *, DbCreateDescription *);
00217 
00218   extern RPCStatus
00219   dbMove(ConnHandle *, const char *, const char *, const char *,
00220              const char *, const DbCreateDescription *);
00221 
00222   extern RPCStatus
00223   dbCopy(ConnHandle *, const char *, const char *, const char *,
00224              const char *, const char *,
00225              Bool, const DbCreateDescription *);
00226 
00227   extern RPCStatus
00228   dbRename(ConnHandle *, const char *, const char *, const char *,
00229                const char *, const char *);
00230 
00231   extern RPCStatus
00232   userAdd(ConnHandle *, const char *, const char *, const char *,
00233               const char *, const char *, int);
00234 
00235   extern RPCStatus
00236   userDelete(ConnHandle *, const char *, const char *, const char *,
00237                  const char *);
00238 
00239   extern RPCStatus
00240   userPasswdSet(ConnHandle *, const char *, const char *, const char *,
00241                     const char *, const char *);
00242 
00243   extern RPCStatus
00244   passwdSet(ConnHandle *, const char *, const char *, const char *,
00245                 const char *);
00246 
00247   extern RPCStatus
00248   defaultDBAccessSet(ConnHandle *, const char *,
00249                          const char *, const char *, const char *, int);
00250 
00251   extern RPCStatus
00252   userDBAccessSet(ConnHandle *, const char *,
00253                       const char *, const char *,
00254                       const char *, const char *, int);
00255 
00256   extern RPCStatus
00257   userSysAccessSet(ConnHandle *, const char *,
00258                        const char *, const char *,
00259                        const char *, int);
00260 
00261   extern RPCStatus
00262   backendInterrupt(ConnHandle *, int);
00263 
00264   /* transactions */
00265 
00266   extern RPCStatus
00267   transactionBegin(DbHandle *, 
00268                        const TransactionParams *,
00269                        TransactionId *);
00270 
00271   extern RPCStatus
00272   transactionCommit(DbHandle *, TransactionId);
00273 
00274   extern RPCStatus
00275   transactionAbort(DbHandle *, TransactionId);
00276 
00277   extern RPCStatus
00278   transactionParamsSet(DbHandle *, 
00279                            const TransactionParams *);
00280 
00281   extern RPCStatus
00282   transactionParamsGet(DbHandle *, TransactionParams *);
00283 
00284   /* databases */
00285 
00286   extern RPCStatus
00287   dbOpen(ConnHandle *, const char *, const char *, const char *,
00288              const char *, int, int, int, unsigned int,
00289              int *, void *, char **, int *,
00290              unsigned int *, DbHandle **);
00291 
00292   extern RPCStatus
00293   dbClose(const DbHandle *);
00294 
00295   /* typed object */
00296   extern RPCStatus
00297   objectCreate(DbHandle *, short, const Data, eyedbsm::Oid *);
00298 
00299   extern RPCStatus
00300   objectDelete(DbHandle *, const eyedbsm::Oid *, unsigned int flags);
00301 
00302   extern RPCStatus
00303   objectRead(DbHandle *, Data, Data *, short *, const eyedbsm::Oid *,
00304                  ObjectHeader *phdr, LockMode lockmode, void **);
00305 
00306   extern RPCStatus
00307   objectWrite(DbHandle *, const Data, const eyedbsm::Oid *);
00308 
00309   extern RPCStatus
00310   objectHeaderRead(DbHandle *, const eyedbsm::Oid *, ObjectHeader *);
00311 
00312   extern RPCStatus
00313   objectSizeModify(DbHandle *, unsigned int, const eyedbsm::Oid *);
00314 
00315   extern RPCStatus
00316   objectCheck(DbHandle *, const eyedbsm::Oid *, int *, eyedbsm::Oid *);
00317 
00318   extern RPCStatus
00319   objectProtectionSet(DbHandle *, const eyedbsm::Oid *, const eyedbsm::Oid *);
00320 
00321   extern RPCStatus
00322   objectProtectionGet(DbHandle *, const eyedbsm::Oid *, eyedbsm::Oid *);
00323 
00324   extern RPCStatus
00325   oidMake(DbHandle *, short, const Data, unsigned int, eyedbsm::Oid *);
00326 
00327   /* raw data object */
00328   extern RPCStatus
00329   dataCreate(DbHandle *, short, unsigned int, const Data, eyedbsm::Oid *);
00330 
00331   extern RPCStatus
00332   dataDelete(DbHandle *, const eyedbsm::Oid *);
00333 
00334   extern RPCStatus
00335   dataRead(DbHandle *, int, unsigned int, Data, short *, const eyedbsm::Oid *);
00336 
00337   extern RPCStatus
00338   dataWrite(DbHandle *, int, unsigned int, const Data, const eyedbsm::Oid *);
00339 
00340   extern RPCStatus
00341   dataSizeGet(DbHandle *, const eyedbsm::Oid *, unsigned int *);
00342 
00343   extern RPCStatus
00344   dataSizeModify(DbHandle *, unsigned int, const eyedbsm::Oid *);
00345 
00346   extern RPCStatus
00347   schemaComplete(DbHandle *, const char *);
00348 
00349   /* vardim */
00350   extern RPCStatus
00351   VDdataCreate(DbHandle *, short, const eyedbsm::Oid *, const eyedbsm::Oid *,
00352                    int, int, int, const Data, const eyedbsm::Oid *, eyedbsm::Oid *,
00353                    Data, Size);
00354 
00355   extern RPCStatus
00356   VDdataDelete(DbHandle *,const eyedbsm::Oid *,  const eyedbsm::Oid *,
00357                    int, const eyedbsm::Oid *, const eyedbsm::Oid *,
00358                    Data, Size);
00359 
00360   extern RPCStatus
00361   VDdataWrite(DbHandle *, const eyedbsm::Oid *, const eyedbsm::Oid *,
00362                   int, int, unsigned int, const Data, const eyedbsm::Oid *, const eyedbsm::Oid *,
00363                   Data, Size);
00364 
00365   /* agreg item indexes */
00366   extern RPCStatus
00367   attributeIndexCreate(DbHandle *, const eyedbsm::Oid *, int, int,
00368                            eyedbsm::Oid *, Data, Size);
00369 
00370   extern RPCStatus
00371   attributeIndexRemove(DbHandle *, const eyedbsm::Oid *, int, int, Data,
00372                            Size);
00373 
00374   extern RPCStatus
00375   indexCreate(DbHandle *, bool index_move, const eyedbsm::Oid *);
00376 
00377   extern RPCStatus
00378   indexRemove(DbHandle *, const eyedbsm::Oid *, int);
00379 
00380   extern RPCStatus
00381   constraintCreate(DbHandle *, const eyedbsm::Oid *);
00382 
00383   extern RPCStatus
00384   constraintDelete(DbHandle *, const eyedbsm::Oid *, int);
00385 
00386   /* collections */
00387   extern RPCStatus
00388   collectionGetByInd(DbHandle *, const eyedbsm::Oid *, int, int *, Data,
00389                          int);
00390 
00391   extern RPCStatus
00392   collectionGetByOid(DbHandle *, const eyedbsm::Oid *, const eyedbsm::Oid *, int *,
00393                          int *);
00394 
00395   extern RPCStatus
00396   collectionGetByValue(DbHandle *, const eyedbsm::Oid *, Data, int,
00397                            int *, int *);
00398 
00399   /* object lock */
00400   extern RPCStatus
00401   setObjectLock(DbHandle *, const eyedbsm::Oid *, int, int *);
00402 
00403   extern RPCStatus
00404   getObjectLock(DbHandle *, const eyedbsm::Oid *, int *);
00405 
00406   /* queries */
00407   extern RPCStatus
00408   queryLangCreate(DbHandle *, const char *, int *, void *, int *);
00409 
00410   extern RPCStatus
00411   queryDatabaseCreate(DbHandle *, int *);
00412 
00413   extern RPCStatus
00414   queryClassCreate(DbHandle *, const eyedbsm::Oid *, int *);
00415 
00416   extern RPCStatus
00417   queryCollectionCreate(DbHandle *, const eyedbsm::Oid *, Bool, int *);
00418 
00419   extern RPCStatus
00420   queryAttributeCreate(DbHandle *, const eyedbsm::Oid *, int, int, Data,
00421                            Data, int, int, int, int *);
00422 
00423   extern RPCStatus
00424   queryDelete(DbHandle *, int);
00425 
00426   extern RPCStatus
00427   queryScanNext(DbHandle *, int qid, int wanted, int *found,
00428                     void *atom_array);
00429 
00430   /* executables */
00431 
00432   extern RPCStatus
00433   execCheck(DbHandle *, const char *intname, const eyedbsm::Oid *oid,
00434                 const char *extref);
00435 
00436   extern RPCStatus
00437   execExecute(DbHandle *, const char *user, const char *passwd,
00438                   const char *intname, 
00439                   const char *name, 
00440                   int exec_type,
00441                   const eyedbsm::Oid *cloid,
00442                   const char *extref,
00443                   const void *sign,
00444                   const eyedbsm::Oid *execoid,
00445                   const eyedbsm::Oid *objoid,
00446                   void *o,
00447                   const void *argarray,
00448                   void *argret);
00449 
00450   extern RPCStatus
00451   execSetExtRefPath(ConnHandle *, const char *user,
00452                         const char *passwd, const char *path);
00453 
00454   extern RPCStatus
00455   execGetExtRefPath(ConnHandle *, const char *user, const char *passwd,
00456                         char path[], unsigned int pathlen);
00457 
00458   extern RPCStatus
00459   set_conn_info(ConnHandle *, const char *, int, const char *, const char *,
00460                 int *, int *, int, char **);
00461 
00462   extern RPCStatus
00463   checkAuth(ConnHandle *, const char *);
00464 
00465   extern RPCStatus
00466   oqlCreate(ConnHandle *, DbHandle *, const char *, int *, void *);
00467 
00468   extern RPCStatus
00469   oqlDelete(ConnHandle *, DbHandle *, int);
00470 
00471   extern RPCStatus
00472   oqlGetResult(ConnHandle *, DbHandle *, int, void *);
00473 
00474   extern RPCStatus
00475   setLogMask(ConnHandle *, eyedblib::int64);
00476 
00477   extern RPCStatus
00478   indexGetCount(DbHandle *, const eyedbsm::Oid *, int *);
00479 
00480   extern RPCStatus
00481   indexGetStats(DbHandle *, const eyedbsm::Oid *, Data *);
00482 
00483   extern RPCStatus
00484   indexSimulStats(DbHandle *, const eyedbsm::Oid *, const Data,
00485                       Size, Data *);
00486 
00487   extern RPCStatus
00488   collectionGetImplStats(DbHandle *, int, const eyedbsm::Oid *, Data *);
00489 
00490   extern RPCStatus
00491   collectionSimulImplStats(DbHandle *, int, const eyedbsm::Oid *, const Data, Size, Data *);
00492 
00493   extern RPCStatus
00494   indexGetImplementation(DbHandle *, const eyedbsm::Oid *, Data *);
00495 
00496   extern RPCStatus
00497   collectionGetImplementation(DbHandle *, int, const eyedbsm::Oid *, Data *);
00498 
00499   extern RPCStatus
00500   getDefaultDataspace(DbHandle *, int *);
00501 
00502   extern RPCStatus
00503   setDefaultDataspace(DbHandle *, int);
00504 
00505   extern RPCStatus
00506   dataspaceSetCurrentDatafile(DbHandle *, int, int);
00507 
00508   extern RPCStatus
00509   dataspaceGetCurrentDatafile(DbHandle *, int, int *);
00510 
00511   extern RPCStatus
00512   getDefaultIndexDataspace(DbHandle *, const eyedbsm::Oid *, int, int *);
00513 
00514   extern RPCStatus
00515   setDefaultIndexDataspace(DbHandle *, const eyedbsm::Oid *, int, int);
00516 
00517   extern RPCStatus
00518   getIndexLocations(DbHandle *, const eyedbsm::Oid *, int, void *);
00519 
00520   extern RPCStatus
00521   moveIndex(DbHandle *, const eyedbsm::Oid *, int, int);
00522 
00523   extern RPCStatus
00524   getInstanceClassLocations(DbHandle *, const eyedbsm::Oid *, int, Data *);
00525 
00526   extern RPCStatus
00527   moveInstanceClass(DbHandle *, const eyedbsm::Oid *, int, int);
00528 
00529   extern RPCStatus
00530   getObjectsLocations(DbHandle *, const eyedbsm::Oid *, unsigned int, void *);
00531 
00532   extern RPCStatus
00533   moveObjects(DbHandle *, const eyedbsm::Oid *, unsigned int cnt,
00534                   int dspid);
00535 
00536   extern RPCStatus
00537   getAttributeLocations(DbHandle *, const eyedbsm::Oid *, int, Data *);
00538 
00539   extern RPCStatus
00540   moveAttribute(DbHandle *, const eyedbsm::Oid *, int, int);
00541 
00542   extern RPCStatus
00543   createDatafile(DbHandle *, const char *, const char *, int, int, int);
00544 
00545   extern RPCStatus
00546   deleteDatafile(DbHandle *, int);
00547 
00548   extern RPCStatus
00549   moveDatafile(DbHandle *, int, const char *);
00550 
00551   extern RPCStatus
00552   defragmentDatafile(DbHandle *, int);
00553 
00554   extern RPCStatus
00555   resizeDatafile(DbHandle *, int, unsigned int);
00556 
00557   extern RPCStatus
00558   getDatafileInfo(DbHandle *, int, void *);
00559 
00560   extern RPCStatus
00561   renameDatafile(DbHandle *, int, const char *);
00562 
00563   extern RPCStatus
00564   createDataspace(DbHandle *, const char *, void *, unsigned int);
00565 
00566   extern RPCStatus
00567   updateDataspace(DbHandle *, int, void *, unsigned int);
00568 
00569   extern RPCStatus
00570   deleteDataspace(DbHandle *, int);
00571 
00572   extern RPCStatus
00573   renameDataspace(DbHandle *, int, const char *);
00574 
00575   extern RPCStatus
00576   getServerOutOfBandData(ConnHandle *, int *, Data *,
00577                              unsigned int *);
00578 
00579   /* misc */
00580   extern RPCStatus
00581   SEconnOpen(const char *, ConnHandle *);
00582 }
00583 
00584 #endif

Generated on Mon Dec 22 18:15:47 2008 for eyedb by  doxygen 1.5.3