Main Page   Modules   Compound List   File List   Compound Members  

globus_rls_client.h

00001 #ifndef _globus_rls_client_h_
00002 #define _globus_rls_client_h_
00003 
00004 #include <globus_io.h>
00005 #include <globus_error_string.h>
00006 
00048 #define GLOBUS_RLS_SUCCESS              0
00049 
00053 #define GLOBUS_RLS_GLOBUSERR            1
00054 
00058 #define GLOBUS_RLS_INVHANDLE            2
00059 
00063 #define GLOBUS_RLS_BADURL               3
00064 
00068 #define GLOBUS_RLS_NOMEMORY             4
00069 
00073 #define GLOBUS_RLS_OVERFLOW             5
00074 
00078 #define GLOBUS_RLS_BADARG               6
00079 
00083 #define GLOBUS_RLS_PERM                 7
00084 
00088 #define GLOBUS_RLS_BADMETHOD            8
00089 
00093 #define GLOBUS_RLS_INVSERVER            9
00094 
00098 #define GLOBUS_RLS_MAPPING_NEXIST       10
00099 
00103 #define GLOBUS_RLS_LFN_EXIST            11
00104 
00108 #define GLOBUS_RLS_LFN_NEXIST           12
00109 
00113 #define GLOBUS_RLS_PFN_EXIST            13
00114 
00118 #define GLOBUS_RLS_PFN_NEXIST           14
00119 
00123 #define GLOBUS_RLS_LRC_EXIST            15
00124 
00128 #define GLOBUS_RLS_LRC_NEXIST           16
00129 
00133 #define GLOBUS_RLS_DBERROR              17
00134 
00138 #define GLOBUS_RLS_RLI_EXIST            18
00139 
00143 #define GLOBUS_RLS_RLI_NEXIST           19
00144 
00148 #define GLOBUS_RLS_MAPPING_EXIST        20
00149 
00153 #define GLOBUS_RLS_INV_ATTR_TYPE        21
00154 
00158 #define GLOBUS_RLS_ATTR_EXIST           22
00159 
00163 #define GLOBUS_RLS_ATTR_NEXIST          23
00164 
00168 #define GLOBUS_RLS_INV_OBJ_TYPE         24
00169 
00173 #define GLOBUS_RLS_INV_ATTR_OP          25
00174 
00178 #define GLOBUS_RLS_UNSUPPORTED          26
00179 
00183 #define GLOBUS_RLS_TIMEOUT              27
00184 
00188 #define GLOBUS_RLS_TOO_MANY_CONNECTIONS 28
00189 
00194 #define GLOBUS_RLS_ATTR_VALUE_NEXIST    29
00195 
00200 #define GLOBUS_RLS_ATTR_INUSE           30
00201 
00211 typedef enum {
00212   rls_pattern_unix,     
00213   rls_pattern_sql       
00214 } globus_rls_pattern_t;
00215 
00216 /* Obsolete, use globus_rls_pattern_t */
00217 #define globus_rls_pattern_type globus_rls_pattern_t;
00218 
00219 #define BUFLEN  1024
00220 
00225 typedef enum {
00226   globus_rls_attr_type_date,    
00227   globus_rls_attr_type_flt,     
00228   globus_rls_attr_type_int,     
00229   globus_rls_attr_type_str      
00230 } globus_rls_attr_type_t;
00231 
00232 /*
00233  * Obsolete names for attribute value types, please use enum above.
00234  */
00235 #define GLOBUS_RLS_ATTR_TYPE_DATE       globus_rls_attr_type_date
00236 #define GLOBUS_RLS_ATTR_TYPE_FLT        globus_rls_attr_type_flt
00237 #define GLOBUS_RLS_ATTR_TYPE_INT        globus_rls_attr_type_int
00238 #define GLOBUS_RLS_ATTR_TYPE_STR        globus_rls_attr_type_str
00239 
00244 typedef enum {
00245   globus_rls_obj_lrc_lfn,       
00246   globus_rls_obj_lrc_pfn,       
00247   globus_rls_obj_rli_lfn,       
00248   globus_rls_obj_rli_lrc        
00249 } globus_rls_obj_type_t;
00250 
00251 /*
00252  * The following are obsolete, please use the enum above.
00253  */
00254 #define GLOBUS_RLS_CLIENT_LRC_OBJ_LFN   globus_rls_obj_lrc_lfn
00255 #define GLOBUS_RLS_CLIENT_LRC_OBJ_PFN   globus_rls_obj_lrc_pfn
00256 #define GLOBUS_RLS_CLIENT_RLI_OBJ_LFN   globus_rls_obj_rli_lfn
00257 #define GLOBUS_RLS_CLIENT_RLI_OBJ_LRC   globus_rls_obj_rli_lrc
00258 
00263 typedef struct {
00264   char                  *name;          
00265   globus_rls_obj_type_t objtype;        
00266   globus_rls_attr_type_t type;          
00268   union {
00269     time_t      t;      
00270     double      d;      
00271     int         i;      
00272     char        *s;     
00273   }                     val;
00274 } globus_rls_attribute_t;
00275 
00282 typedef struct {
00284   globus_rls_attribute_t        attr;
00286   char                          *key;
00287 } globus_rls_attribute_object_t;
00288 
00293 typedef enum {
00294   globus_rls_attr_op_all,       
00295   globus_rls_attr_op_eq,        
00296   globus_rls_attr_op_ne,        
00297   globus_rls_attr_op_gt,        
00298   globus_rls_attr_op_ge,        
00299   globus_rls_attr_op_lt,        
00300   globus_rls_attr_op_le,        
00301   globus_rls_attr_op_btw,       
00302   globus_rls_attr_op_like,      
00303 } globus_rls_attr_op_t;
00304 
00305 /*
00306  * Following are obsolete, please use enum above.
00307  */
00308 #define GLOBUS_RLS_CLIENT_ATTR_OP_ALL globus_rls_attr_op_all
00309 #define GLOBUS_RLS_CLIENT_ATTR_OP_EQ globus_rls_attr_op_eq
00310 #define GLOBUS_RLS_CLIENT_ATTR_OP_NE globus_rls_attr_op_ne
00311 #define GLOBUS_RLS_CLIENT_ATTR_OP_GT globus_rls_attr_op_gt
00312 #define GLOBUS_RLS_CLIENT_ATTR_OP_GE globus_rls_attr_op_ge
00313 #define GLOBUS_RLS_CLIENT_ATTR_OP_LT globus_rls_attr_op_lt
00314 #define GLOBUS_RLS_CLIENT_ATTR_OP_LE globus_rls_attr_op_le
00315 #define GLOBUS_RLS_CLIENT_ATTR_OP_BTW globus_rls_attr_op_btw
00316 #define GLOBUS_RLS_CLIENT_ATTR_OP_LIKE globus_rls_attr_op_like
00317 
00318 
00319 
00320 
00371 typedef struct {
00372   char  *s1;    
00373   char  *s2;    
00374 } globus_rls_string2_t;
00375 
00380 typedef struct {
00381   int                   rc;
00382   globus_rls_string2_t  str2;
00383 } globus_rls_string2_bulk_t;
00384 
00395 extern globus_result_t globus_rls_client_free_list(
00396   globus_list_t                         *list);
00397 
00398 
00399 
00418 extern globus_module_descriptor_t       globus_rls_client_module;
00422 #define GLOBUS_RLS_CLIENT_MODULE        (&globus_rls_client_module)
00423 
00437 #define GLOBUS_RLS_URL_SCHEME           "rls"
00438 
00442 #define GLOBUS_RLS_URL_SCHEME_NOAUTH    "rlsn"
00443 
00447 #define GLOBUS_RLS_SERVER_DEFPORT       39281
00448 
00452 #define MAXERRMSG       1024
00453 
00457 typedef struct {
00458   globus_url_t          url; 
00459   globus_io_handle_t    handle; 
00460   int                   flags; 
00461 } globus_rls_handle_t;
00462 #define FH_IOERROR      0x1     /* If set don't send "close" to server */
00463 #define FH_CLOSED       0x2     /* Globus handle closed (set when       */
00464                                 /* retrying failed IO operation)        */
00465 
00477 void
00478 globus_rls_client_certificate(
00479   char                                  *certfile,
00480   char                                  *keyfile);
00481 
00489 void
00490 globus_rls_client_proxy_certificate(
00491   char                                  *proxy);
00492 
00511 extern globus_result_t globus_rls_client_connect(
00512   char                                  *url,
00513   globus_rls_handle_t                   **h);
00514 
00526 extern globus_result_t globus_rls_client_close(
00527   globus_rls_handle_t           *h);
00528 
00537 extern int globus_rls_client_get_timeout();
00538 
00547 extern void globus_rls_client_set_timeout(
00548   int                           seconds);
00549 
00550 
00551 
00575 extern globus_result_t globus_rls_client_lrc_attr_add(
00576   globus_rls_handle_t           *h,
00577   char                          *key,
00578   globus_rls_attribute_t        *attr);
00579 
00599 extern globus_result_t globus_rls_client_lrc_attr_create(
00600   globus_rls_handle_t           *h,
00601   char                          *name,
00602   globus_rls_obj_type_t         objtype,
00603   globus_rls_attr_type_t        type);
00604 
00627 extern globus_result_t globus_rls_client_lrc_attr_delete(
00628   globus_rls_handle_t           *h,
00629   char                          *name,
00630   globus_rls_obj_type_t         objtype,
00631   globus_bool_t                 clearvalues);
00632 
00656 extern globus_result_t globus_rls_client_lrc_attr_get(
00657   globus_rls_handle_t           *h,
00658   char                          *name,
00659   globus_rls_obj_type_t         objtype,
00660   globus_list_t                 **attr_list);
00661 
00683 extern globus_result_t globus_rls_client_lrc_attr_modify(
00684   globus_rls_handle_t           *h,
00685   char                          *key,
00686   globus_rls_attribute_t        *attr);
00687 
00706 extern globus_result_t globus_rls_client_lrc_attr_remove(
00707   globus_rls_handle_t           *h,
00708   char                          *key,
00709   globus_rls_attribute_t        *attr);
00710   
00760 extern globus_result_t globus_rls_client_lrc_attr_search(
00761   globus_rls_handle_t           *h,
00762   char                          *name,
00763   globus_rls_obj_type_t         objtype,
00764   globus_rls_attr_op_t          op,
00765   globus_rls_attribute_t        *operand1,
00766   globus_rls_attribute_t        *operand2,
00767   int                           *offset,
00768   int                           reslimit,
00769   globus_list_t                 **attr_obj_list);
00770 
00798 extern globus_result_t globus_rls_client_lrc_attr_value_get(
00799   globus_rls_handle_t           *h,
00800   char                          *key,
00801   char                          *name,
00802   globus_rls_obj_type_t         objtype,
00803   globus_list_t                 **attr_list);
00804 
00821 extern globus_result_t globus_rls_client_lrc_add(
00822   globus_rls_handle_t           *h,
00823   char                          *lfn,
00824   char                          *pfn);
00825 
00843 extern globus_result_t globus_rls_client_lrc_add_bulk(
00844   globus_rls_handle_t                   *h,
00845   globus_list_t                         *str2_list,
00846   globus_list_t                         **str2bulk_list);
00847 
00861 extern globus_result_t globus_rls_client_lrc_clear(
00862   globus_rls_handle_t           *h);
00863 
00880 extern globus_result_t globus_rls_client_lrc_create(
00881   globus_rls_handle_t           *h,
00882   char                          *lfn,
00883   char                          *pfn);
00884 
00902 extern globus_result_t globus_rls_client_lrc_create_bulk(
00903   globus_rls_handle_t                   *h,
00904   globus_list_t                         *str2_list,
00905   globus_list_t                         **str2bulk_list);
00906 
00923 extern globus_result_t globus_rls_client_lrc_delete(
00924   globus_rls_handle_t           *h,
00925   char                          *lfn,
00926   char                          *pfn);
00927 
00945 extern globus_result_t globus_rls_client_lrc_delete_bulk(
00946   globus_rls_handle_t                   *h,
00947   globus_list_t                         *str2_list,
00948   globus_list_t                         **str2bulk_list);
00949 
00967 extern globus_result_t globus_rls_client_lrc_exists(
00968   globus_rls_handle_t           *h,
00969   char                          *key,
00970   globus_rls_obj_type_t         objtype);
00971 
01002 extern globus_result_t globus_rls_client_lrc_get_lfn(
01003   globus_rls_handle_t                   *h,
01004   char                                  *pfn,
01005   int                                   *offset,
01006   int                                   reslimit,
01007   globus_list_t                         **str2_list);
01008 
01025 extern globus_result_t globus_rls_client_lrc_get_lfn_bulk(
01026   globus_rls_handle_t                   *h,
01027   globus_list_t                         *pfnlist,
01028   globus_list_t                         **str2bulk_list);
01029 
01066 extern globus_result_t globus_rls_client_lrc_get_lfn_wc(
01067   globus_rls_handle_t                   *h,
01068   char                                  *pfn_pattern,
01069   globus_rls_pattern_t                  type,
01070   int                                   *offset,
01071   int                                   reslimit,
01072   globus_list_t                         **str2_list);
01073 
01102 extern globus_result_t globus_rls_client_lrc_get_pfn(
01103   globus_rls_handle_t                   *h,
01104   char                                  *lfn,
01105   int                                   *offset,
01106   int                                   reslimit,
01107   globus_list_t                         **str2_list);
01108 
01125 extern globus_result_t globus_rls_client_lrc_get_pfn_bulk(
01126   globus_rls_handle_t                   *h,
01127   globus_list_t                         *lfnlist,
01128   globus_list_t                         **str2bulk_list);
01129 
01165 extern globus_result_t globus_rls_client_lrc_get_pfn_wc(
01166   globus_rls_handle_t                   *h,
01167   char                                  *lfn_pattern,
01168   globus_rls_pattern_t                  type,
01169   int                                   *offset,
01170   int                                   reslimit,
01171   globus_list_t                         **str2_list);
01172 
01189 extern globus_result_t globus_rls_client_lrc_mapping_exists(
01190   globus_rls_handle_t           *h,
01191   char                          *lfn,
01192   char                          *pfn);
01193 
01218 extern globus_result_t globus_rls_client_lrc_rli_add(
01219   globus_rls_handle_t           *h,
01220   char                          *rli_url,
01221   int                           flags,
01222   char                          *pattern);
01227 #define FRLI_BLOOMFILTER        0x1
01228 
01246 extern globus_result_t globus_rls_client_lrc_rli_delete(
01247   globus_rls_handle_t           *h,
01248   char                          *rli_url,
01249   char                          *pattern);
01250 
01275 extern globus_result_t globus_rls_client_lrc_rli_get_part(
01276   globus_rls_handle_t                   *h,
01277   char                                  *rli_url,
01278   char                                  *pattern,
01279   globus_list_t                         **str2_list);
01280 
01285 #define MAXURL  256
01286 
01292 typedef struct {
01293   char          url[MAXURL];    
01294   int           updateinterval; 
01295   int           flags;          
01296   time_t        lastupdate;     
01297 } globus_rls_rli_info_t;
01298 
01303 typedef struct {
01304   char          url[MAXURL];    
01305   time_t        lastupdate;     
01306 } globus_rls_lrc_info_t;
01307 
01308 
01325 extern globus_result_t globus_rls_client_lrc_rli_info(
01326   globus_rls_handle_t                   *h,
01327   char                                  *rli_url,
01328   globus_rls_rli_info_t                 *info);
01329 
01346 extern globus_result_t globus_rls_client_lrc_rli_list(
01347   globus_rls_handle_t                   *h,
01348   globus_list_t                         **rliinfo_list);
01349 
01350 
01373 extern globus_result_t globus_rls_client_rli_exists(
01374   globus_rls_handle_t           *h,
01375   char                          *key,
01376   globus_rls_obj_type_t         objtype);
01377 
01408 extern globus_result_t globus_rls_client_rli_get_lrc(
01409   globus_rls_handle_t                   *h,
01410   char                                  *lfn,
01411   int                                   *offset,
01412   int                                   reslimit,
01413   globus_list_t                         **str2_list);
01414 
01431 extern globus_result_t globus_rls_client_rli_get_lrc_bulk(
01432   globus_rls_handle_t                   *h,
01433   globus_list_t                         *lfnlist,
01434   globus_list_t                         **str2bulk_list);
01435 
01472 extern globus_result_t globus_rls_client_rli_get_lrc_wc(
01473   globus_rls_handle_t                   *h,
01474   char                                  *lfn_pattern,
01475   globus_rls_pattern_t                  type,
01476   int                                   *offset,
01477   int                                   reslimit,
01478   globus_list_t                         **str2_list);
01479 
01496 extern globus_result_t globus_rls_client_rli_lrc_list(
01497   globus_rls_handle_t                   *h,
01498   globus_list_t                         **lrcinfo_list);
01499 
01516 extern globus_result_t globus_rls_client_rli_mapping_exists(
01517   globus_rls_handle_t           *h,
01518   char                          *lfn,
01519   char                          *lrc);
01520 
01521 
01526 typedef enum {
01527   globus_rls_admin_cmd_ping,    
01528   globus_rls_admin_cmd_quit,    
01529   globus_rls_admin_cmd_ssu      
01530 } globus_rls_admin_cmd_t;
01531 
01532 /*
01533  * The following are obsolete, please use enum above.
01534  */
01535 #define GLOBUS_RLS_ADMIN_PING   globus_rls_admin_ping
01536 #define GLOBUS_RLS_ADMIN_QUIT   globus_rls_admin_quit
01537 #define GLOBUS_RLS_ADMIN_SSU    globus_rls_admin_ssu
01538 
01539 #define MAXVERSION 16
01540 
01546 typedef struct {
01547   char          version[MAXVERSION];
01548   time_t        uptime;
01549   int           flags;          
01550   int           lrc_bloomfilterui;
01551   int           lrc_lfnlistui;
01552   int           lrc_numlfn;
01553   int           lrc_numpfn;
01554   int           lrc_nummap;
01555   int           rli_numlfn;
01556   int           rli_numlrc;
01557   int           rli_nummap;
01558 } globus_rls_stats_t;
01559 
01564 #define RLS_LRCSERVER            0x1
01565 
01569 #define RLS_RLISERVER            0x2
01570 
01574 #define RLS_RCVLFNLIST           0x4
01575 
01579 #define RLS_RCVBLOOMFILTER       0x8
01580 
01584 #define RLS_SNDLFNLIST          0x10
01585 
01589 #define RLS_SNDBLOOMFILTER      0x20
01590 
01605 extern globus_result_t globus_rls_client_admin(
01606   globus_rls_handle_t           *h,
01607   globus_rls_admin_cmd_t        cmd);
01608 
01609 
01633 extern globus_result_t globus_rls_client_get_configuration(
01634   globus_rls_handle_t           *h,
01635   char                          *option,
01636   globus_list_t                 **conf_list);
01637 
01654 extern globus_result_t globus_rls_client_set_configuration(
01655   globus_rls_handle_t           *h,
01656   char                          *option,
01657   char                          *value);
01658 
01672 extern globus_result_t globus_rls_client_stats(
01673   globus_rls_handle_t           *h,
01674   globus_rls_stats_t            *rlsstats);
01675 
01696 extern char *globus_rls_client_attr2s(
01697   globus_rls_attribute_t                *attr,
01698   char                                  *buf,
01699   int                                   buflen);
01700 
01719 extern globus_result_t globus_rls_client_s2attr(
01720   globus_rls_attr_type_t                type,
01721   char                                  *sval,
01722   globus_rls_attribute_t                *attr);
01723 
01752 extern globus_result_t globus_rls_client_error_info(
01753   globus_result_t               r,
01754   int                           *rc,
01755   char                          *buf,
01756   int                           buflen,
01757   globus_bool_t                 preserve);
01758 
01765 extern int globus_list_len(
01766   globus_list_t                 *len);
01767 
01787 extern char *
01788 globus_rls_errmsg(
01789   int                           rc,
01790   char                          *specificmsg,
01791   char                          *buf,
01792   int                           buflen);
01793 
01794 extern int
01795 mycftime(
01796   char  *s,
01797   int   len,
01798   char  *fmt,
01799   time_t clock);
01800 #endif

Generated on Tue May 27 15:56:07 2003 for Globus Replica Location Service by doxygen1.2.17