00001 #if defined(__WAVE__)
00002 #pragma wave option(preserve: 2, line: 1, output: "preprocessed/logical_file.cpp")
00003 #endif
00004
00005
00006
00007
00008
00009 #if defined(__WAVE__)
00010 #pragma wave option(output: null)
00011 #endif
00012
00013
00014
00015 #define SAGA_NO_IMPORT_ATTRIBUTE
00016 #define SAGA_EXPORT_ATTRIBUTE SAGA_REPLICA_PACKAGE_EXPORT
00017
00018 #include <saga/saga/task.hpp>
00019
00020
00021 #include <saga/saga/replica.hpp>
00022 #include <saga/impl/replica.hpp>
00023 #include <saga/saga/detail/call.hpp>
00024
00025 #include <saga/saga/detail/attribute_impl.hpp>
00026
00027 #ifdef SAGA_DEBUG
00028 #include <saga/saga/packages/replica/preprocessed/logical_file.cpp>
00029 #else
00030
00031 #if defined(__WAVE__)
00032 #pragma wave option(preserve: 2, line: 1, output: "preprocessed/logical_file.cpp")
00033 #endif
00034
00035 namespace saga
00036 {
00037 namespace replica {
00038
00040 namespace metrics
00041 {
00043 saga::metrics::init_data const logical_file_metric_data[] =
00044 {
00045
00046 {
00047 saga::replica::metrics::logical_file_modified,
00048 "Metric fires on logical file changes, it carries the key of"
00049 "the modified logical file.",
00050 attributes::metric_mode_readonly,
00051 "1",
00052 attributes::metric_type_string,
00053 ""
00054 },
00055 {
00056 saga::replica::metrics::logical_file_deleted,
00057 "Metric fires on logical file deletes, it carries the key of"
00058 "the deleted logical file.",
00059 attributes::metric_mode_readonly,
00060 "1",
00061 attributes::metric_type_string,
00062 ""
00063 },
00064 };
00066 }
00067
00068 logical_file::logical_file (session const& s, saga::url url, int mode)
00069 : entry (new saga::impl::logical_file (s, url, mode))
00070 {
00071
00072 this->attribute_base::init (true);
00073
00074
00075 this->saga::object::get_impl()->init();
00076
00077
00078 std::vector<saga::metric> metrics;
00079 for (unsigned int i = 0;
00080 i < sizeof(metrics::logical_file_metric_data)/sizeof(saga::metrics::init_data);
00081 ++i)
00082 {
00083 saga::metrics::init_data const* p = &metrics::logical_file_metric_data[i];
00084 saga::metric m(*this, p->name, p->description, p->mode, p->unit,
00085 p->type, p->value);
00086 metrics.push_back(m);
00087 }
00088 this->monitorable_base::init (metrics);
00089 }
00090
00091 logical_file::logical_file (saga::url url, int mode)
00092 : entry (new saga::impl::logical_file (detail::get_the_session (), url, mode))
00093 {
00094
00095 this->attribute_base::init (true);
00096
00097
00098 this->saga::object::get_impl()->init();
00099
00100
00101 std::vector<saga::metric> metrics;
00102 for (unsigned int i = 0;
00103 i < sizeof(metrics::logical_file_metric_data)/sizeof(saga::metrics::init_data);
00104 ++i)
00105 {
00106 saga::metrics::init_data const* p = &metrics::logical_file_metric_data[i];
00107 saga::metric m(*this, p->name, p->description, p->mode, p->unit,
00108 p->type, p->value);
00109 metrics.push_back(m);
00110 }
00111 this->monitorable_base::init (metrics);
00112 }
00113
00114 logical_file::logical_file(saga::object const& o)
00115 : entry(o)
00116 {
00117 if (this->get_type() != saga::object::LogicalFile)
00118 {
00119 SAGA_THROW("Bad type conversion.", saga::BadParameter);
00120 }
00121 }
00122
00123 logical_file::logical_file (void)
00124 {
00125 }
00126
00127 logical_file::logical_file(saga::impl::logical_file *impl)
00128 : entry (impl)
00129 {
00130 }
00131
00132 logical_file::~logical_file (void)
00133 {
00134 }
00135
00136 logical_file &logical_file::operator= (saga::object const& o)
00137 {
00138 return this->saga::name_space::entry::operator=(o), *this;
00139 }
00140
00141 saga::impl::logical_file* logical_file::get_impl() const
00142 {
00143 typedef saga::object base_type;
00144 return static_cast<saga::impl::logical_file*>(this->base_type::get_impl());
00145 }
00146
00147 TR1::shared_ptr <saga::impl::logical_file> logical_file::get_impl_sp(void) const
00148 {
00149
00150 typedef saga::object base_type;
00151 return TR1::static_pointer_cast <saga::impl::logical_file> (
00152 this->base_type::get_impl_sp());
00153 }
00154
00155
00156 SAGA_CALL_CREATE_IMP_3(logical_file, impl::logical_file, session const&, saga::url, int)
00157
00158
00159 SAGA_CALL_IMP_1(logical_file, add_location, saga::url)
00160 SAGA_CALL_IMP_1(logical_file, remove_location, saga::url)
00161 SAGA_CALL_IMP_2(logical_file, update_location, saga::url, saga::url)
00162 SAGA_CALL_IMP_0(logical_file, list_locations)
00163 SAGA_CALL_IMP_2(logical_file, replicate, saga::url, int)
00164
00165 }
00166
00167 namespace detail
00168 {
00170
00171
00172 template struct SAGA_REPLICA_PACKAGE_EXPORT_REPEAT attribute<replica::logical_file>;
00173
00174 template struct SAGA_REPLICA_PACKAGE_EXPORT attribute_priv<replica::logical_file, task_base::Sync>;
00175 template struct SAGA_REPLICA_PACKAGE_EXPORT attribute_priv<replica::logical_file, task_base::Async>;
00176 template struct SAGA_REPLICA_PACKAGE_EXPORT attribute_priv<replica::logical_file, task_base::Task>;
00177
00178 template struct SAGA_REPLICA_PACKAGE_EXPORT attribute_sync<replica::logical_file>;
00179 }
00180
00182 }
00183
00184 #endif
00185