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;
00288   int                           rc;
00289 } globus_rls_attribute_object_t;
00290 
00295 typedef enum {
00296   globus_rls_attr_op_all,       
00297   globus_rls_attr_op_eq,        
00298   globus_rls_attr_op_ne,        
00299   globus_rls_attr_op_gt,        
00300   globus_rls_attr_op_ge,        
00301   globus_rls_attr_op_lt,        
00302   globus_rls_attr_op_le,        
00303   globus_rls_attr_op_btw,       
00304   globus_rls_attr_op_like,      
00305 } globus_rls_attr_op_t;
00306 
00307 /*
00308  * Following are obsolete, please use enum above.
00309  */
00310 #define GLOBUS_RLS_CLIENT_ATTR_OP_ALL globus_rls_attr_op_all
00311 #define GLOBUS_RLS_CLIENT_ATTR_OP_EQ globus_rls_attr_op_eq
00312 #define GLOBUS_RLS_CLIENT_ATTR_OP_NE globus_rls_attr_op_ne
00313 #define GLOBUS_RLS_CLIENT_ATTR_OP_GT globus_rls_attr_op_gt
00314 #define GLOBUS_RLS_CLIENT_ATTR_OP_GE globus_rls_attr_op_ge
00315 #define GLOBUS_RLS_CLIENT_ATTR_OP_LT globus_rls_attr_op_lt
00316 #define GLOBUS_RLS_CLIENT_ATTR_OP_LE globus_rls_attr_op_le
00317 #define GLOBUS_RLS_CLIENT_ATTR_OP_BTW globus_rls_attr_op_btw
00318 #define GLOBUS_RLS_CLIENT_ATTR_OP_LIKE globus_rls_attr_op_like
00319 
00320 
00321 
00322 
00373 typedef struct {
00374   char  *s1;    
00375   char  *s2;    
00376 } globus_rls_string2_t;
00377 
00382 typedef struct {
00383   int                   rc;
00384   globus_rls_string2_t  str2;
00385 } globus_rls_string2_bulk_t;
00386 
00397 extern globus_result_t globus_rls_client_free_list(
00398   globus_list_t                         *list);
00399 
00400 
00401 
00420 extern globus_module_descriptor_t       globus_rls_client_module;
00424 #define GLOBUS_RLS_CLIENT_MODULE        (&globus_rls_client_module)
00425 
00439 #define GLOBUS_RLS_URL_SCHEME           "rls"
00440 
00444 #define GLOBUS_RLS_URL_SCHEME_NOAUTH    "rlsn"
00445 
00449 #define GLOBUS_RLS_SERVER_DEFPORT       39281
00450 
00454 #define MAXERRMSG       1024
00455 
00459 typedef struct {
00460   globus_url_t          url; 
00461   globus_io_handle_t    handle; 
00462   int                   flags; 
00463 } globus_rls_handle_t;
00464 #define FH_IOERROR      0x1     /* If set don't send "close" to server */
00465 #define FH_CLOSED       0x2     /* Globus handle closed (set when       */
00466                                 /* retrying failed IO operation)        */
00467 
00479 void
00480 globus_rls_client_certificate(
00481   char                                  *certfile,
00482   char                                  *keyfile);
00483 
00491 void
00492 globus_rls_client_proxy_certificate(
00493   char                                  *proxy);
00494 
00513 extern globus_result_t globus_rls_client_connect(
00514   char                                  *url,
00515   globus_rls_handle_t                   **h);
00516 
00528 extern globus_result_t globus_rls_client_close(
00529   globus_rls_handle_t           *h);
00530 
00539 extern int globus_rls_client_get_timeout();
00540 
00549 extern void globus_rls_client_set_timeout(
00550   int                           seconds);
00551 
00552 
00553 
00577 extern globus_result_t globus_rls_client_lrc_attr_add(
00578   globus_rls_handle_t           *h,
00579   char                          *key,
00580   globus_rls_attribute_t        *attr);
00581 
00600 extern globus_result_t globus_rls_client_lrc_attr_add_bulk(
00601   globus_rls_handle_t           *h,
00602   globus_list_t                 *attr_obj_list,
00603   globus_list_t                 **str2bulk_list);
00604 
00624 extern globus_result_t globus_rls_client_lrc_attr_create(
00625   globus_rls_handle_t           *h,
00626   char                          *name,
00627   globus_rls_obj_type_t         objtype,
00628   globus_rls_attr_type_t        type);
00629 
00652 extern globus_result_t globus_rls_client_lrc_attr_delete(
00653   globus_rls_handle_t           *h,
00654   char                          *name,
00655   globus_rls_obj_type_t         objtype,
00656   globus_bool_t                 clearvalues);
00657 
00681 extern globus_result_t globus_rls_client_lrc_attr_get(
00682   globus_rls_handle_t           *h,
00683   char                          *name,
00684   globus_rls_obj_type_t         objtype,
00685   globus_list_t                 **attr_list);
00686 
00708 extern globus_result_t globus_rls_client_lrc_attr_modify(
00709   globus_rls_handle_t           *h,
00710   char                          *key,
00711   globus_rls_attribute_t        *attr);
00712 
00731 extern globus_result_t globus_rls_client_lrc_attr_remove(
00732   globus_rls_handle_t           *h,
00733   char                          *key,
00734   globus_rls_attribute_t        *attr);
00735   
00755 extern globus_result_t globus_rls_client_lrc_attr_remove_bulk(
00756   globus_rls_handle_t           *h,
00757   globus_list_t                 *attr_obj_list,
00758   globus_list_t                 **str2bulk_list);
00759 
00809 extern globus_result_t globus_rls_client_lrc_attr_search(
00810   globus_rls_handle_t           *h,
00811   char                          *name,
00812   globus_rls_obj_type_t         objtype,
00813   globus_rls_attr_op_t          op,
00814   globus_rls_attribute_t        *operand1,
00815   globus_rls_attribute_t        *operand2,
00816   int                           *offset,
00817   int                           reslimit,
00818   globus_list_t                 **attr_obj_list);
00819 
00847 extern globus_result_t globus_rls_client_lrc_attr_value_get(
00848   globus_rls_handle_t           *h,
00849   char                          *key,
00850   char                          *name,
00851   globus_rls_obj_type_t         objtype,
00852   globus_list_t                 **attr_list);
00853 
00882 extern globus_result_t globus_rls_client_lrc_attr_value_get_bulk(
00883   globus_rls_handle_t           *h,
00884   globus_list_t                 *keylist,
00885   char                          *name,
00886   globus_rls_obj_type_t         objtype,
00887   globus_list_t                 **attr_obj_list);
00888 
00905 extern globus_result_t globus_rls_client_lrc_add(
00906   globus_rls_handle_t           *h,
00907   char                          *lfn,
00908   char                          *pfn);
00909 
00927 extern globus_result_t globus_rls_client_lrc_add_bulk(
00928   globus_rls_handle_t                   *h,
00929   globus_list_t                         *str2_list,
00930   globus_list_t                         **str2bulk_list);
00931 
00945 extern globus_result_t globus_rls_client_lrc_clear(
00946   globus_rls_handle_t           *h);
00947 
00964 extern globus_result_t globus_rls_client_lrc_create(
00965   globus_rls_handle_t           *h,
00966   char                          *lfn,
00967   char                          *pfn);
00968 
00986 extern globus_result_t globus_rls_client_lrc_create_bulk(
00987   globus_rls_handle_t                   *h,
00988   globus_list_t                         *str2_list,
00989   globus_list_t                         **str2bulk_list);
00990 
01007 extern globus_result_t globus_rls_client_lrc_delete(
01008   globus_rls_handle_t           *h,
01009   char                          *lfn,
01010   char                          *pfn);
01011 
01029 extern globus_result_t globus_rls_client_lrc_delete_bulk(
01030   globus_rls_handle_t                   *h,
01031   globus_list_t                         *str2_list,
01032   globus_list_t                         **str2bulk_list);
01033 
01051 extern globus_result_t globus_rls_client_lrc_exists(
01052   globus_rls_handle_t           *h,
01053   char                          *key,
01054   globus_rls_obj_type_t         objtype);
01055 
01086 extern globus_result_t globus_rls_client_lrc_get_lfn(
01087   globus_rls_handle_t                   *h,
01088   char                                  *pfn,
01089   int                                   *offset,
01090   int                                   reslimit,
01091   globus_list_t                         **str2_list);
01092 
01109 extern globus_result_t globus_rls_client_lrc_get_lfn_bulk(
01110   globus_rls_handle_t                   *h,
01111   globus_list_t                         *pfnlist,
01112   globus_list_t                         **str2bulk_list);
01113 
01150 extern globus_result_t globus_rls_client_lrc_get_lfn_wc(
01151   globus_rls_handle_t                   *h,
01152   char                                  *pfn_pattern,
01153   globus_rls_pattern_t                  type,
01154   int                                   *offset,
01155   int                                   reslimit,
01156   globus_list_t                         **str2_list);
01157 
01186 extern globus_result_t globus_rls_client_lrc_get_pfn(
01187   globus_rls_handle_t                   *h,
01188   char                                  *lfn,
01189   int                                   *offset,
01190   int                                   reslimit,
01191   globus_list_t                         **str2_list);
01192 
01209 extern globus_result_t globus_rls_client_lrc_get_pfn_bulk(
01210   globus_rls_handle_t                   *h,
01211   globus_list_t                         *lfnlist,
01212   globus_list_t                         **str2bulk_list);
01213 
01249 extern globus_result_t globus_rls_client_lrc_get_pfn_wc(
01250   globus_rls_handle_t                   *h,
01251   char                                  *lfn_pattern,
01252   globus_rls_pattern_t                  type,
01253   int                                   *offset,
01254   int                                   reslimit,
01255   globus_list_t                         **str2_list);
01256 
01273 extern globus_result_t globus_rls_client_lrc_mapping_exists(
01274   globus_rls_handle_t           *h,
01275   char                          *lfn,
01276   char                          *pfn);
01277 
01302 extern globus_result_t globus_rls_client_lrc_rli_add(
01303   globus_rls_handle_t           *h,
01304   char                          *rli_url,
01305   int                           flags,
01306   char                          *pattern);
01311 #define FRLI_BLOOMFILTER        0x1
01312 #define FRLI_RLI                0x2     /* Internal use only    */
01313 
01331 extern globus_result_t globus_rls_client_lrc_rli_delete(
01332   globus_rls_handle_t           *h,
01333   char                          *rli_url,
01334   char                          *pattern);
01335 
01360 extern globus_result_t globus_rls_client_lrc_rli_get_part(
01361   globus_rls_handle_t                   *h,
01362   char                                  *rli_url,
01363   char                                  *pattern,
01364   globus_list_t                         **str2_list);
01365 
01370 #define MAXURL  256
01371 
01377 typedef struct {
01378   char          url[MAXURL];    
01379   int           updateinterval; 
01380   int           flags;          
01381   time_t        lastupdate;     
01382 } globus_rls_rli_info_t;
01383 
01389 typedef struct {
01390   char          url[MAXURL];    
01391   time_t        lastupdate;     
01392 } globus_rls_sender_info_t;
01393 
01394 #define globus_rls_lrc_info_t   globus_rls_sender_info_t
01395 
01396 
01413 extern globus_result_t globus_rls_client_lrc_rli_info(
01414   globus_rls_handle_t                   *h,
01415   char                                  *rli_url,
01416   globus_rls_rli_info_t                 *info);
01417 
01434 extern globus_result_t globus_rls_client_lrc_rli_list(
01435   globus_rls_handle_t                   *h,
01436   globus_list_t                         **rliinfo_list);
01437 
01438 
01461 extern globus_result_t globus_rls_client_rli_exists(
01462   globus_rls_handle_t           *h,
01463   char                          *key,
01464   globus_rls_obj_type_t         objtype);
01465 
01496 extern globus_result_t globus_rls_client_rli_get_lrc(
01497   globus_rls_handle_t                   *h,
01498   char                                  *lfn,
01499   int                                   *offset,
01500   int                                   reslimit,
01501   globus_list_t                         **str2_list);
01502 
01519 extern globus_result_t globus_rls_client_rli_get_lrc_bulk(
01520   globus_rls_handle_t                   *h,
01521   globus_list_t                         *lfnlist,
01522   globus_list_t                         **str2bulk_list);
01523 
01560 extern globus_result_t globus_rls_client_rli_get_lrc_wc(
01561   globus_rls_handle_t                   *h,
01562   char                                  *lfn_pattern,
01563   globus_rls_pattern_t                  type,
01564   int                                   *offset,
01565   int                                   reslimit,
01566   globus_list_t                         **str2_list);
01567 
01584 extern globus_result_t globus_rls_client_rli_sender_list(
01585   globus_rls_handle_t                   *h,
01586   globus_list_t                         **senderinfo_list);
01587 
01602 extern globus_result_t globus_rls_client_rli_lrc_list(
01603   globus_rls_handle_t                   *h,
01604   globus_list_t                         **lrcinfo_list);
01605 
01622 extern globus_result_t globus_rls_client_rli_mapping_exists(
01623   globus_rls_handle_t           *h,
01624   char                          *lfn,
01625   char                          *lrc);
01626 
01648 extern globus_result_t globus_rls_client_rli_rli_add(
01649   globus_rls_handle_t           *h,
01650   char                          *rli_url,
01651   char                          *pattern);
01652 
01670 extern globus_result_t globus_rls_client_rli_rli_delete(
01671   globus_rls_handle_t           *h,
01672   char                          *rli_url,
01673   char                          *pattern);
01674 
01699 extern globus_result_t globus_rls_client_rli_rli_get_part(
01700   globus_rls_handle_t                   *h,
01701   char                                  *rli_url,
01702   char                                  *pattern,
01703   globus_list_t                         **str2_list);
01704 
01721 extern globus_result_t globus_rls_client_rli_rli_list(
01722   globus_rls_handle_t                   *h,
01723   globus_list_t                         **rliinfo_list);
01724 
01729 typedef enum {
01730   globus_rls_admin_cmd_ping,    
01731   globus_rls_admin_cmd_quit,    
01732   globus_rls_admin_cmd_ssu      
01733 } globus_rls_admin_cmd_t;
01734 
01735 /*
01736  * The following are obsolete, please use enum above.
01737  */
01738 #define GLOBUS_RLS_ADMIN_PING   globus_rls_admin_ping
01739 #define GLOBUS_RLS_ADMIN_QUIT   globus_rls_admin_quit
01740 #define GLOBUS_RLS_ADMIN_SSU    globus_rls_admin_ssu
01741 
01742 #define MAXVERSION 16
01743 
01749 typedef struct {
01750   char          version[MAXVERSION];
01751   time_t        uptime;
01752   int           flags;          
01753   int           lrc_bloomfilterui;
01754   int           lrc_lfnlistui;
01755   int           lrc_numlfn;
01756   int           lrc_numpfn;
01757   int           lrc_nummap;
01758   int           rli_numlfn;
01759   int           rli_numlrc;
01760   int           rli_numsender;
01761   int           rli_nummap;
01762 } globus_rls_stats_t;
01763 
01768 #define RLS_LRCSERVER            0x1
01769 
01773 #define RLS_RLISERVER            0x2
01774 
01778 #define RLS_RCVLFNLIST           0x4
01779 
01783 #define RLS_RCVBLOOMFILTER       0x8
01784 
01788 #define RLS_SNDLFNLIST          0x10
01789 
01793 #define RLS_SNDBLOOMFILTER      0x20
01794 
01809 extern globus_result_t globus_rls_client_admin(
01810   globus_rls_handle_t           *h,
01811   globus_rls_admin_cmd_t        cmd);
01812 
01813 
01837 extern globus_result_t globus_rls_client_get_configuration(
01838   globus_rls_handle_t           *h,
01839   char                          *option,
01840   globus_list_t                 **conf_list);
01841 
01858 extern globus_result_t globus_rls_client_set_configuration(
01859   globus_rls_handle_t           *h,
01860   char                          *option,
01861   char                          *value);
01862 
01876 extern globus_result_t globus_rls_client_stats(
01877   globus_rls_handle_t           *h,
01878   globus_rls_stats_t            *rlsstats);
01879 
01900 extern char *globus_rls_client_attr2s(
01901   globus_rls_attribute_t                *attr,
01902   char                                  *buf,
01903   int                                   buflen);
01904 
01923 extern globus_result_t globus_rls_client_s2attr(
01924   globus_rls_attr_type_t                type,
01925   char                                  *sval,
01926   globus_rls_attribute_t                *attr);
01927 
01956 extern globus_result_t globus_rls_client_error_info(
01957   globus_result_t               r,
01958   int                           *rc,
01959   char                          *buf,
01960   int                           buflen,
01961   globus_bool_t                 preserve);
01962 
01969 extern int globus_list_len(
01970   globus_list_t                 *len);
01971 
01991 extern char *
01992 globus_rls_errmsg(
01993   int                           rc,
01994   char                          *specificmsg,
01995   char                          *buf,
01996   int                           buflen);
01997 
01998 extern int
01999 mycftime(
02000   char  *s,
02001   int   len,
02002   char  *fmt,
02003   time_t clock);
02004 #endif

Generated on Mon Feb 9 18:05:21 2004 for Globus Replica Location Service by doxygen1.2.17