Disk ARchive  2.6.8
Full featured and portable backup and archiving tool
mycurl_easyhandle_sharing.hpp
Go to the documentation of this file.
1 /*********************************************************************/
2 // dar - disk archive - a backup/restoration program
3 // Copyright (C) 2002-2020 Denis Corbin
4 //
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License
7 // as published by the Free Software Foundation; either version 2
8 // of the License, or (at your option) any later version.
9 //
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software
17 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 //
19 // to contact the author : http://dar.linux.free.fr/email.html
20 /*********************************************************************/
21 
25 
26 #ifndef MYCURL_EASYHANDLE_SHARING_HPP
27 #define MYCURL_EASYHANDLE_SHARING_HPP
28 
29 #include "../my_config.h"
30 
31 extern "C"
32 {
33 #if LIBCURL_AVAILABLE
34 #if HAVE_CURL_CURL_H
35 #include <curl/curl.h>
36 #endif
37 #endif
38 } // end extern "C"
39 
40 #include <deque>
41 #include "erreurs.hpp"
42 #include "mycurl_shared_handle.hpp"
43 
44 namespace libdar
45 {
48 
49 #if LIBCURL_AVAILABLE
50 
52 
53  class mycurl_easyhandle_sharing
54  {
55  public:
56  mycurl_easyhandle_sharing() = default;
57  mycurl_easyhandle_sharing(const mycurl_easyhandle_sharing & ref): root(ref.root) { clone_table.clear(); };
58  mycurl_easyhandle_sharing(mycurl_easyhandle_sharing && ref) noexcept: root(std::move(ref.root)) { std::swap(clone_table, ref.clone_table); };
59  mycurl_easyhandle_sharing & operator = (const mycurl_easyhandle_sharing & ref) = delete;
60  mycurl_easyhandle_sharing & operator = (mycurl_easyhandle_sharing && ref) noexcept = delete;
61  ~mycurl_easyhandle_sharing() = default;
62 
63  CURL *get_root_handle() const { return root.get_handle(); };
64 
65  mycurl_shared_handle alloc_instance() const;
66 
67  private:
68  mycurl_easyhandle_node root;
69  std::deque<smart_pointer<mycurl_easyhandle_node> > clone_table;
70  };
71 
72 #else
73 
74  class mycurl_easyhandle_sharing
75  {
76  public:
77  mycurl_easyhandle_sharing() { throw Ecompilation("remote repository"); };
78  };
79 
80 #endif
81 
83 
84 } // end of namespace
85 
86 #endif
mycurl_shared_handle.hpp
structure used to optimize network session creation done by libcurl
erreurs.hpp
contains all the excetion class thrown by libdar
libdar
libdar namespace encapsulate all libdar symbols
Definition: archive.hpp:46