00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef GLOBUS_DONT_DOCUMENT_INTERNAL
00018
00023 #include "globus_symboltable.h"
00024
00025
00026 #define GLOBUS_L_GASS_CACHE_DEFAULT_DIR_ENV_VAR "GLOBUS_GASS_CACHE_DEFAULT"
00027 #define GLOBUS_L_GASS_CACHE_DEBUG "GLOBUS_GASS_CACHE_DEBUG"
00028
00029
00030
00031
00032
00033
00034 #define GLOBUS_L_DOT_GLOBUS_DIR_NAME "/.globus"
00035 #define GLOBUS_L_GASS_CACHE_DEFAULT_DIR_NAME "/.gass_cache"
00036 #define GLOBUS_L_GASS_CACHE_GLOBAL_DIR "global"
00037 #define GLOBUS_L_GASS_CACHE_LOCAL_DIR "local"
00038 #define GLOBUS_L_GASS_CACHE_TMP_DIR "tmp"
00039 #define GLOBUS_L_GASS_CACHE_LOG_DIR "log"
00040
00041
00042 #ifdef _WIN32
00043 #define GLOBUS_L_GASS_CACHE_MODE_RWX (_S_IRWXU)
00044 #define GLOBUS_L_GASS_CACHE_MODE_RW (_S_IRUSR|_S_IWUSR)
00045 #else
00046 #define GLOBUS_L_GASS_CACHE_MODE_RWX \
00047 (S_IRWXU|S_IRWXG|S_IRWXO)
00048 #define GLOBUS_L_GASS_CACHE_MODE_RW \
00049 (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
00050 #endif
00051 #define GLOBUS_L_GASS_CACHE_DIR_MODE GLOBUS_L_GASS_CACHE_MODE_RWX
00052 #define GLOBUS_L_GASS_CACHE_DATAFILE_MODE GLOBUS_L_GASS_CACHE_MODE_RWX
00053 #define GLOBUS_L_GASS_CACHE_UNIQFILE_MODE GLOBUS_L_GASS_CACHE_MODE_RWX
00054 #define GLOBUS_L_GASS_CACHE_URLFILE_MODE GLOBUS_L_GASS_CACHE_MODE_RW
00055 #define GLOBUS_L_GASS_CACHE_TAGFILE_MODE GLOBUS_L_GASS_CACHE_MODE_RW
00056 #define GLOBUS_L_GASS_CACHE_SKEWFILE_MODE GLOBUS_L_GASS_CACHE_MODE_RW
00057
00058
00059 #define LOCK_SLEEP_USEC 500000
00060
00061
00062 #define DATA_FILE "data"
00063 #define DATA_FILE_PAT "data"
00064 #define DATA_FILE_PAT_LEN 4
00065 #define UDATA_FILE "data."
00066 #define UDATA_FILE_PAT "data."
00067 #define UDATA_FILE_PAT_LEN 5
00068 #define LOCK_FILE "lock"
00069 #define URL_FILE "url"
00070 #define TAG_FILE "tag"
00071 #define UNIQ_NAME_FORMAT "%s_%lx_%lx"
00072 #define UNIQ_NAME_MAX (20 + MAXHOSTNAMELEN)
00073
00074 #define MAX_FILENAME_LEN ( DATA_FILE_PAT_LEN + UNIQ_NAME_MAX )
00075
00076
00077 #define LOCK_MAX_SECONDS 30
00078 #define LOCK_SLEEP_USEC 500000
00079 #define NOTREADY_MAX_SECONDS 300
00080 #define NOTREADY_CHECK_SECONDS 10
00081 #define SKEWCALC_SECONDS 3600
00082 #define EBUSY_SLEEP_USEC 10000
00083
00084
00085
00086
00087
00088
00089
00090 #define LINKBUG_SLEEP_USEC 50000
00091 #define LINKBUG_MAX_RETRY 100
00092
00093
00094
00095
00096 #define MAKE_DIRTREE_MAX_TRIES 100
00097 #define UNLINK_MAX_TRIES 20
00098 #define CREATE_MAX_TRIES 20
00099
00100
00101
00102
00103
00104
00105
00106
00107 #define LOCK_TOUT 600
00108
00109 #define GLOBUS_L_GASS_CACHE_NULL_TAG "null"
00110
00111
00112
00113
00114
00115
00116
00117 #ifdef DEBUG
00118
00119 #define CACHE_TRACE(_f_)\
00120 globus_l_gass_cache_trace(__FILE__,__LINE__, (_f_) )
00121 #define CACHE_TRACE2(_f_,_a1_)\
00122 globus_l_gass_cache_trace(__FILE__,__LINE__, (_f_),(_a1_) )
00123 #define CACHE_TRACE3(_f_,_a1_,_a2_)\
00124 globus_l_gass_cache_trace(__FILE__,__LINE__, (_f_),(_a1_),(_a2_) )
00125 #define CACHE_TRACE4(_f_,_a1_,_a2_,_a3_)\
00126 globus_l_gass_cache_trace(__FILE__,__LINE__,\
00127 (_f_),(_a1_),(_a2_),(_a3_) )
00128 #define CACHE_TRACE5(_f_,_a1_,_a2_,_a3_,_a4_)\
00129 globus_l_gass_cache_trace(__FILE__,__LINE__,\
00130 (_f_),(_a1_),(_a2_),(_a3_),(_a4_) )
00131
00132 #ifdef GLOBUS_L_GASS_CACHE_LOG
00133 #define GLOBUS_L_GASS_CACHE_LG(_f_)\
00134 globus_l_gass_cache_trace(__FILE__,__LINE__, (_f_) );\
00135 globus_l_gass_cache_log(cache_handle->log_FILE, (_f_) )
00136 #define GLOBUS_L_GASS_CACHE_LG2(_f_,_a1_)\
00137 globus_l_gass_cache_trace(__FILE__,__LINE__, (_f_),(_a1_) );\
00138 globus_l_gass_cache_log(cache_handle->log_FILE, (_f_),(_a1_) )
00139 #define GLOBUS_L_GASS_CACHE_LG3(_f_,_a1_,_a2_)\
00140 globus_l_gass_cache_trace(__FILE__,__LINE__, (_f_),(_a1_),(_a2_) );\
00141 globus_l_gass_cache_log(cache_handle->log_FILE, (_f_),(_a1_),(_a2_) )
00142 #define GLOBUS_L_GASS_CACHE_LG4(_f_,_a1_,_a2_,_a3_)\
00143 globus_l_gass_cache_trace(__FILE__,__LINE__,(_f_),(_a1_),(_a2_),(_a3_) );\
00144 globus_l_gass_cache_log(cache_handle->log_FILE,(_f_),(_a1_),(_a2_),(_a3_) )
00145
00146 #else
00147 #define GLOBUS_L_GASS_CACHE_LG(_f_)
00148 #define GLOBUS_L_GASS_CACHE_LG2(_f_,_a1_)
00149 #define GLOBUS_L_GASS_CACHE_LG3(_f_,_a1_,_a2_)
00150 #define GLOBUS_L_GASS_CACHE_LG4(_f_,_a1_,_a2_,_a3_)
00151 #endif
00152
00153 #else
00154
00155 #define CACHE_TRACE(_f_)
00156 #define CACHE_TRACE2(_f_,_a1_)
00157 #define CACHE_TRACE3(_f_,_a1_,_a2_)
00158 #define CACHE_TRACE4(_f_,_a1_,_a2_,_a3_)
00159 #define CACHE_TRACE5(_f_,_a1_,_a2_,_a3_,_a4_)
00160 #ifdef GLOBUS_L_GASS_CACHE_LOG
00161 #define GLOBUS_L_GASS_CACHE_LG(_f_)\
00162 globus_l_gass_cache_log(cache_handle->log_FILE, _f_ );
00163 #define GLOBUS_L_GASS_CACHE_LG2(_f_,_a1_)\
00164 globus_l_gass_cache_log(cache_handle->log_FILE, (_f_),(_a1_) );
00165 #define GLOBUS_L_GASS_CACHE_LG3(_f_,_a1_,_a2_)\
00166 globus_l_gass_cache_log(cache_handle->log_FILE,\
00167 (_f_),(_a1_),(_a2_) );
00168 #define GLOBUS_L_GASS_CACHE_LG4(_f_,_a1_,_a2_,_a3_)\
00169 globus_l_gass_cache_log(cache_handle->log_FILE,\
00170 (_f_),(_a1_),(_a2_),(_a3_) );
00171 #else
00172 #define GLOBUS_L_GASS_CACHE_LG(_f_)
00173 #define GLOBUS_L_GASS_CACHE_LG2(_f_,_a1_)
00174 #define GLOBUS_L_GASS_CACHE_LG3(_f_,_a1_,_a2_)
00175 #define GLOBUS_L_GASS_CACHE_LG4(_f_,_a1_,_a2_,_a3_)
00176 #endif
00177
00178 typedef struct globus_i_gass_cache_t
00179 {
00180
00181 void* init;
00182
00183
00184 char *cache_directory_path;
00185 char *global_directory_path;
00186 char *local_directory_path;
00187 char *tmp_directory_path;
00188
00189
00190 int global_dir_len;
00191 int local_dir_len;
00192 int tmp_dir_len;
00193
00194
00195 int max_mangled_url;
00196 int max_mangled_tag;
00197
00198
00199 unsigned mangling_options;
00200
00201
00202 int cache_type;
00203
00204
00205 int directory_levels;
00206
00207
00208 FILE* log_FILE;
00209 char *log_file_name;
00210 }
00211 globus_i_gass_cache_t;
00212
00213
00214
00215 #endif
00216
00217 #endif