27 #ifndef I_HDF5RequestHandler_H
28 #define I_HDF5RequestHandler_H
33 #include "BESRequestHandler.h"
34 #include "HDF5_DataMemCache.h"
35 #include <BESDDSResponse.h>
36 #include <BESDataDDSResponse.h>
69 static bool get_usecf() {
return _usecf;}
70 static bool get_pass_fileid() {
return _pass_fileid;}
71 static bool get_disable_structmeta() {
return _disable_structmeta;}
72 static bool get_disable_ecsmeta() {
return _disable_ecsmeta;}
73 static bool get_keep_var_leading_underscore() {
return _keep_var_leading_underscore;}
74 static bool get_check_name_clashing() {
return _check_name_clashing;}
75 static bool get_add_path_attrs() {
return _add_path_attrs;}
76 static bool get_drop_long_string() {
return _drop_long_string;}
77 static bool get_fillvalue_check() {
return _fillvalue_check;}
78 static bool get_check_ignore_obj() {
return _check_ignore_obj;}
79 static bool get_force_flatten_coor_attr() {
return _flatten_coor_attr;}
80 static bool get_eos5_rm_convention_attr_path() {
return _eos5_rm_convention_attr_path;}
81 static bool get_dmr_long_int() {
return _dmr_long_int;}
82 static bool get_no_zero_size_fullnameattr() {
return _no_zero_size_fullnameattr;}
83 static bool get_enable_coord_attr_add_path() {
return _enable_coord_attr_add_path;}
87 static bool get_default_handle_dimension() {
return _default_handle_dimension;}
89 static void set_dmr_64bit_int(libdap::DMR *dmr) { dmr_int64 = dmr;}
90 static libdap::DMR* get_dmr_64bit_int() {
return dmr_int64;}
93 static string get_stp_east_filename() {
return _stp_east_filename;}
94 static string get_stp_north_filename() {
return _stp_north_filename;}
97 static unsigned int get_mdcache_entries() {
return _mdcache_entries;}
98 static unsigned int get_lrdcache_entries() {
return _lrdcache_entries;}
99 static unsigned int get_srdcache_entries() {
return _srdcache_entries;}
100 static float get_cache_purge_level() {
return _cache_purge_level;}
103 static ObjMemCache* get_lrdata_mem_cache() {
return lrdata_mem_cache;}
104 void set_lrdata_mem_cache(
ObjMemCache* my_lrdata_mem_cache)
105 {lrdata_mem_cache=my_lrdata_mem_cache;}
107 static ObjMemCache* get_srdata_mem_cache() {
return srdata_mem_cache;}
108 void set_srdata_mem_cache(
ObjMemCache* my_srdata_mem_cache)
109 {srdata_mem_cache=my_srdata_mem_cache;}
111 static bool get_common_cache_dirs() {
return _common_cache_dirs;}
112 static void get_lrd_cache_dir_list(std::vector<string>& cur_lrd_cache_dir_list)
113 { cur_lrd_cache_dir_list = lrd_cache_dir_list;}
115 static void get_lrd_non_cache_dir_list(std::vector<string>& cur_lrd_non_cache_dir_list)
116 { cur_lrd_non_cache_dir_list = lrd_non_cache_dir_list;}
118 static void get_lrd_var_cache_file_list(std::vector<string>& cur_lrd_var_cache_file_list)
119 { cur_lrd_var_cache_file_list = lrd_var_cache_file_list;}
123 static bool get_use_disk_cache() {
return _use_disk_cache;}
124 static string get_disk_cache_dir() {
return _disk_cache_dir;}
125 static string get_disk_cachefile_prefix() {
return _disk_cachefile_prefix;}
126 static unsigned long long get_disk_cache_size() {
return _disk_cache_size;}
127 static bool get_disk_cache_comp_data() {
return _disk_cache_comp_data;}
128 static bool get_disk_cache_float_only_comp(){
return _disk_cache_float_only_comp_data;}
129 static float get_disk_comp_threshold() {
return _disk_cache_comp_threshold;}
130 static unsigned long get_disk_var_size() {
return _disk_cache_var_size; }
132 static bool get_use_eosgeo_cachefile() {
return _use_latlon_disk_cache; }
133 static string get_latlon_disk_cache_dir() {
return _latlon_disk_cache_dir;}
134 static string get_latlon_disk_cachefile_prefix() {
return _latlon_disk_cachefile_prefix;}
135 static long get_latlon_disk_cache_size() {
return _latlon_disk_cache_size;}
144 void static load_config();
148 static unsigned int _mdcache_entries;
149 static unsigned int _lrdcache_entries;
150 static unsigned int _srdcache_entries;
151 static float _cache_purge_level;
162 static bool _pass_fileid;
163 static bool _disable_structmeta;
164 static bool _disable_ecsmeta;
165 static bool _keep_var_leading_underscore;
166 static bool _check_name_clashing;
167 static bool _add_path_attrs;
168 static bool _drop_long_string;
169 static bool _fillvalue_check;
170 static bool _check_ignore_obj;
171 static bool _flatten_coor_attr;
172 static bool _eos5_rm_convention_attr_path;
173 static bool _dmr_long_int;
174 static bool _no_zero_size_fullnameattr;
175 static bool _enable_coord_attr_add_path;
178 static bool _default_handle_dimension;
179 static std::string _stp_east_filename;
180 static std::string _stp_north_filename;
182 static libdap::DMR *dmr_int64;
183 static bool _use_disk_cache;
184 static std::string _disk_cache_dir;
185 static std::string _disk_cachefile_prefix;
186 static unsigned long long _disk_cache_size;
187 static bool _disk_cache_comp_data;
188 static bool _disk_cache_float_only_comp_data;
189 static float _disk_cache_comp_threshold;
190 static unsigned long _disk_cache_var_size;
193 static bool _use_disk_meta_cache;
194 static bool _use_disk_dds_cache;
195 static std::string _disk_meta_cache_path;
197 static bool _use_latlon_disk_cache;
198 static long _latlon_disk_cache_size;
199 static std::string _latlon_disk_cache_dir;
200 static std::string _latlon_disk_cachefile_prefix;
202 static bool _common_cache_dirs;
203 static std::vector<std::string> lrd_cache_dir_list;
204 static std::vector<string> lrd_non_cache_dir_list;
205 static std::vector<string> lrd_var_cache_file_list;
206 static bool obtain_lrd_common_cache_dirs();
210 static void get_dds_with_attributes(
BESDDSResponse*bdds,
BESDataDDSResponse*data_bdds,
const std::string &container_name,
const std::string &filename,
const std::string &dds_cache_fname,
const std::string &das_cache_fname,
bool dds_from_dc,
bool das_from_dc,
bool build_data);
211 static void get_dds_without_attributes_datadds(
BESDataDDSResponse*data_bdds,
const std::string &container_name,
const std::string &filename);
213 static void read_dds_from_disk_cache(
BESDDSResponse* bdds,
BESDataDDSResponse* data_bdds,
bool build_data,
const std::string & container_name,
const std::string & h5_fname,
214 const std::string & dds_cache_fname,
const std::string &das_cache_fname, hid_t h5_fd,
bool das_from_dc);
216 static void add_das_to_dds(libdap::DDS *dds,
const std::string &container_name,
const std::string &filename,
const std::string &das_cache_fname,hid_t h5_fd,
bool das_from_dc);
218 static bool write_dds_to_disk_cache(
const std::string& dds_cache_fname,libdap::DDS *dds_ptr);
220 static bool write_das_to_disk_cache(
const std::string & das_cache_fname, libdap::DAS *das_ptr);
222 static bool read_das_from_disk_cache(
const std::string & cache_filename,libdap::DAS *das_ptr);
Holds a DDS object within the BES.
Represents an OPeNDAP DataDDS DAP2 data object within the BES.
Structure storing information used by the BES to handle the request.
Represents a specific data type request handler.
An in-memory cache for DapObj (DAS, DDS, ...) objects.