- Main Page
- Related Pages
- Namespaces
- Classes
- Files

- Search for |

# cpr_directory.hpp

Go to the documentation of this file.

    00001 #ifndef SAGA_SAGA_PACKAGES_DATA_CPR_DIRECTORY_HPP
    00002 #define SAGA_SAGA_PACKAGES_DATA_CPR_DIRECTORY_HPP
    00003
    00004 #if defined(__WAVE__)
    00005 #pragma wave option(preserve: 2, line: 1, output: "preprocessed/cpr_directory.hpp")
    00006 #endif
    00007 //  Copyright (c) 2005-2009 Hartmut Kaiser
    00008 //  Copyright (c) 2007 Ole Weidner (oweidner@cct.lsu.edu)
    00009 //  Copyright (c) 2008 Andre Merzky (andre@merzky.net)
    00010 //
    00011 //  Distributed under the Boost Software License, Version 1.0. (See accompanying
    00012 //  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
    00013
    00014 #if defined(__WAVE__)
    00015 #pragma wave option(output: null)
    00016 #endif
    00017
    00018 #if defined(_MSC_VER) && (_MSC_VER >= 1200)
    00019 #pragma once
    00020 #endif
    00021
    00022 // include stl
    00023 #include <string>
    00024
    00025 // include dependent spec sections
    00026 #include <saga/saga/util.hpp>
    00027 #include <saga/saga/base.hpp>
    00028 #include <saga/saga/call.hpp>
    00029 #include <saga/saga/types.hpp>
    00030 #include <saga/saga/object.hpp>
    00031 #include <saga/saga/session.hpp>
    00032 #include <saga/saga/detail/attribute.hpp>
    00033
    00034 #include <saga/saga/packages/cpr/cpr_checkpoint.hpp>
    00035 #include <saga/saga/packages/namespace/namespace_dir.hpp>
    00036
    00037 // suppress warnings about dependent classes not being exported from the dll
    00038 #if defined(BOOST_MSVC)
    00039 #pragma warning(push)
    00040 #pragma warning(disable: 4251 4231 4275 4660 4244)
    00041 #endif
    00042
    00043 #ifdef SAGA_DEBUG
    00044 #include <saga/saga/packages/file/preprocessed/cpr_directory.hpp>
    00045 #else
    00046
    00047 #if defined(__WAVE__)
    00048 #pragma wave option(preserve: 2, line: 1, output: "preprocessed/cpr_directory.hpp")
    00049 #endif
    00051 namespace saga
    00052 {
    00053
    00054     namespace cpr
    00055     {
    00056
    00057         namespace metrics
    00058         {
    00059             //  metric names for a advert entries
    00060             char const* const directory_created_entry  = "directory.CreatedEntry";
    00061             char const* const directory_modified_entry = "directory.ModifiedEntry";
    00062             char const* const directory_deleted_entry  = "directory.DeletedEntry";
    00063         }
    00064
    00068         class SAGA_CPR_PACKAGE_EXPORT directory
    00069           : public saga::name_space::directory,
    00070             public saga::detail::attribute<directory>
    00071         {
    00072         protected:
    00074
    00075             friend class saga::impl::cpr_directory;
    00076             friend struct saga::detail::attribute<directory>;  // needs to access get_impl()
    00077             typedef saga::detail::attribute<directory> attribute_base;
    00078             typedef saga::name_space::directory::monitorable_base monitorable_base;
    00080
    00081         private:
    00083             // factory
    00084             SAGA_CALL_CREATE_PRIV_3(session const&, saga::url, int)
    00085
    00086
    00087             SAGA_CALL_PRIV_1 (is_checkpoint, saga::url)
    00088             SAGA_CALL_PRIV_4 (find,          std::string, std::vector<std::string>, int, std::string)
    00089             SAGA_CALL_PRIV_3 (set_parent,    saga::url,   saga::url, int)
    00090             SAGA_CALL_PRIV_2 (get_parent,    saga::url,   int)
    00091             SAGA_CALL_PRIV_1 (get_file_num,  saga::url)
    00092             SAGA_CALL_PRIV_1 (list_files,    saga::url)
    00093             SAGA_CALL_PRIV_2 (add_file,      saga::url,   saga::url)
    00094             SAGA_CALL_PRIV_2 (get_file,      saga::url,   int)
    00095             SAGA_CALL_PRIV_3 (open_file,     saga::url,   int,       int)
    00096             SAGA_CALL_PRIV_3 (open_file,     saga::url,   saga::url, int)
    00097             SAGA_CALL_PRIV_2 (remove_file,   saga::url,   int)
    00098             SAGA_CALL_PRIV_2 (remove_file,   saga::url,   saga::url)
    00099             SAGA_CALL_PRIV_3 (update_file,   saga::url,   int,       saga::url)
    00100             SAGA_CALL_PRIV_3 (update_file,   saga::url,   saga::url, saga::url)
    00101             SAGA_CALL_PRIV_3 (stage_file,    saga::url,   int,       saga::url)
    00102             SAGA_CALL_PRIV_3 (stage_file,    saga::url,   saga::url, saga::url)
    00103             SAGA_CALL_PRIV_2 (stage_file,    saga::url,   saga::url)
    00104
    00105             // overload open methods from namespace_dir
    00106             SAGA_CALL_PRIV_2 (open,          saga::url,   int)
    00107             SAGA_CALL_PRIV_2 (open_dir,      saga::url,   int)
    00109
    00110         protected:
    00112
    00113             TR1::shared_ptr <saga::impl::cpr_directory> get_impl_sp() const;
    00114             saga::impl::cpr_directory* get_impl() const;
    00115             explicit directory(saga::impl::cpr_directory *impl);
    00117
    00118         public:
    00123             directory (session const& s, saga::url url,
    00124                        int mode = saga::cpr::ReadWrite);
    00125
    00130             explicit directory (saga::url url,
    00131                                 int mode = saga::cpr::ReadWrite);
    00132
    00137             explicit directory (saga::object const& o);
    00138
    00143             directory (void);
    00144
    00149             ~directory (void);
    00150
    00154             static directory create(session const& s, saga::url url,
    00155                 int mode = Read)
    00156             {
    00157                 return directory(s, url, mode);
    00158             }
    00159             SAGA_CALL_CREATE_3_DEF_1(session const&, saga::url, int, Read)
    00160
    00161
    00163             static directory create(saga::url url, int mode = Read)
    00164             {
    00165                 return directory(url, mode);
    00166             }
    00167             template <typename Tag>
    00168             static saga::task create(saga::url url, int mode = Read)
    00169             {
    00170                 return create<Tag>(detail::get_the_session(), url, mode);
    00171             }
    00172
    00177             directory& operator=(saga::object const& o);
    00178
    00184             bool is_checkpoint (saga::url url)
    00185             {
    00186                 saga::task t = is_checkpointpriv (url, saga::task_base::Sync());
    00187                 return t.get_result<bool>();
    00188             }
    00190             SAGA_CALL_PUB_1_DEF_0 (is_checkpoint, saga::url)
    00192
    00193
    00201             saga::cpr::checkpoint open (saga::url url,
    00202                                         int flags = saga::cpr::Read)
    00203             {
    00204                 saga::task t = openpriv (url, flags, saga::task_base::Sync ());
    00205                 return t.get_result <saga::cpr::checkpoint> ();
    00206             }
    00208             SAGA_CALL_PUB_2_DEF_1 (open, saga::url, int, saga::cpr::Read)
    00210
    00211
    00219             saga::cpr::directory open_dir (saga::url url,
    00220                                            int flags = saga::cpr::Read)
    00221             {
    00222                 saga::task t = open_dirpriv(url, flags, saga::task_base::Sync());
    00223                 return t.get_result<saga::cpr::directory>();
    00224             }
    00226             SAGA_CALL_PUB_2_DEF_1 (open_dir, saga::url, int, saga::cpr::None)
    00228
    00229
    00238             std::vector<saga::url> find (std::string name_pattern,
    00239                                          std::vector<std::string> const & meta_pattern = std::vector <std::string>(),
    00240                                          int         flags = saga::cpr::None,
    00241                                          std::string spec  = "")
    00242             {
    00243                 saga::task t = findpriv (name_pattern, meta_pattern, flags, spec,
    00244                                          saga::task_base::Sync());
    00245                 return t.get_result<std::vector<saga::url> >();
    00246             }
    00248             SAGA_CALL_PUB_4_DEF_3  (find, std::string,
    00249                                     std::vector<std::string>,
    00250                                     std::vector<std::string>(),
    00251                                     int, saga::cpr::None,
    00252                                     std::string, "");
    00254
    00261             void set_parent (saga::url checkpoint, saga::url parent, int generation = 1)
    00262             {
    00263                 set_parentpriv (checkpoint, parent, generation,
    00264                                 saga::task_base::Sync());
    00265             }
    00267             SAGA_CALL_PUB_3_DEF_1 (set_parent, saga::url, saga::url, int, 1)
    00269
    00270
    00275             saga::url get_parent (saga::url checkpoint, int generation = 1)
    00276             {
    00277                 saga::task t = get_parentpriv (checkpoint, generation,
    00278                                                saga::task_base::Sync());
    00279                 return t.get_result <saga::url> ();
    00280             }
    00282             SAGA_CALL_PUB_2_DEF_1 (get_parent, saga::url, int, 1)
    00284
    00285
    00286
    00291             int get_file_num (saga::url checkpoint)
    00292             {
    00293                 saga::task t = get_file_numpriv(checkpoint, saga::task_base::Sync());
    00294                 return t.get_result <int> ();
    00295             }
    00297             SAGA_CALL_PUB_1_DEF_0 (get_file_num, saga::url)
    00299
    00300
    00305             std::vector <saga::url> list_files (saga::url checkpoint)
    00306             {
    00307                 saga::task t = list_filespriv (checkpoint, saga::task_base::Sync());
    00308                 return t.get_result <std::vector <saga::url> > ();
    00309             }
    00311             SAGA_CALL_PUB_1_DEF_0 (list_files, saga::url)
    00313
    00314
    00320             int add_file (saga::url checkpoint, saga::url url)
    00321             {
    00322                 saga::task t = add_filepriv(checkpoint, url, saga::task_base::Sync());
    00323                 return t.get_result <int> ();
    00324             }
    00326             SAGA_CALL_PUB_2_DEF_0 (add_file, saga::url, saga::url)
    00328
    00329
    00330
    00336             saga::url get_file (saga::url checkpoint, int id)
    00337             {
    00338                 saga::task t = get_filepriv(checkpoint, id, saga::task_base::Sync());
    00339                 return t.get_result <saga::url> ();
    00340             }
    00342             SAGA_CALL_PUB_2_DEF_0 (get_file, saga::url, int)
    00344
    00345
    00346
    00353             saga::filesystem::file open_file (saga::url checkpoint, int id,
    00354                                               int flags = CreateParents | Lock | ReadWrite)
    00355             {
    00356                 saga::task t = open_filepriv(checkpoint, id, flags, saga::task_base::Sync());
    00357                 return t.get_result <saga::filesystem::file> ();
    00358             }
    00360             SAGA_CALL_PUB_3_DEF_1 (open_file, saga::url, int, int,
    00361                                    CreateParents | Lock | ReadWrite);
    00363
    00371             saga::filesystem::file open_file (saga::url checkpoint, saga::url url,
    00372                                               int flags = CreateParents | Lock | ReadWrite)
    00373             {
    00374                 saga::task t = open_filepriv(checkpoint, url, flags, saga::task_base::Sync());
    00375                 return t.get_result <saga::filesystem::file> ();
    00376             }
    00378             SAGA_CALL_PUB_3_DEF_1 (open_file, saga::url, saga::url, int,
    00379                                    CreateParents | Lock | ReadWrite);
    00381
    00382
    00389             void remove_file (saga::url checkpoint, int id)
    00390             {
    00391                 saga::task t = remove_filepriv(checkpoint, id, saga::task_base::Sync());
    00392                 t.get_result ();
    00393             }
    00395             SAGA_CALL_PUB_2_DEF_0 (remove_file, saga::url, int)
    00397
    00398
    00404             void remove_file (saga::url checkpoint, saga::url url)
    00405             {
    00406                 saga::task t = remove_filepriv(checkpoint, url, saga::task_base::Sync());
    00407                 t.get_result ();
    00408             }
    00410             SAGA_CALL_PUB_2_DEF_0 (remove_file, saga::url, saga::url)
    00412
    00413
    00414
    00421             void update_file (saga::url checkpoint, int id, saga::url new_url)
    00422             {
    00423                 saga::task t = update_filepriv(checkpoint, id, new_url, saga::task_base::Sync());
    00424                 t.get_result ();
    00425             }
    00427             SAGA_CALL_PUB_3_DEF_0 (update_file, saga::url, int, saga::url)
    00429
    00430
    00437             void update_file (saga::url checkpoint, saga::url old_url, saga::url new_url)
    00438             {
    00439                 saga::task t = update_filepriv(checkpoint, old_url, new_url, saga::task_base::Sync());
    00440                 t.get_result ();
    00441             }
    00443             SAGA_CALL_PUB_3_DEF_0 (update_file, saga::url, saga::url, saga::url)
    00445
    00446
    00447
    00454             void stage_file (saga::url checkpoint, int id, saga::url new_url)
    00455             {
    00456                 saga::task t = stage_filepriv(checkpoint, id, new_url, saga::task_base::Sync());
    00457                 t.get_result ();
    00458             }
    00460             SAGA_CALL_PUB_3_DEF_0 (stage_file, saga::url, int, saga::url)
    00462
    00463
    00470             void stage_file (saga::url checkpoint, saga::url old_url, saga::url new_url)
    00471             {
    00472                 saga::task t = stage_filepriv(checkpoint, old_url, new_url, saga::task_base::Sync());
    00473                 t.get_result ();
    00474             }
    00476             SAGA_CALL_PUB_3_DEF_0 (stage_file, saga::url, saga::url, saga::url)
    00478
    00479
    00485             void stage_file (saga::url checkpoint, saga::url new_url)
    00486             {
    00487                 saga::task t = stage_filepriv(checkpoint, new_url, saga::task_base::Sync());
    00488                 t.get_result ();
    00489             }
    00491             SAGA_CALL_PUB_2_DEF_0 (stage_file, saga::url, saga::url)
    00493         };
    00494
    00495     }}
    00496
    00497 #if defined(__WAVE__)
    00498 #pragma wave option(output: null)
    00499 #endif
    00500
    00501 #endif // !defined(SAGA_DEBUG)
    00502
    00503 // re-enable warnings about dependent classes not being exported from the dll
    00504 #if defined(BOOST_MSVC)
    00505 #pragma warning(pop)
    00506 #endif
    00507
    00508 #endif // SAGA_SAGA_PACKAGES_DATA_CPR_DIRECTORY_HPP