| Disk ARchive 2.6.12 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:47