KiCad PCB EDA Suite
Loading...
Searching...
No Matches
kicad_curl.cpp
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright (C) 2015 Mark Roszko <[email protected]>
5 * Copyright (C) 2016 SoftPLC Corporation, Dick Hollenbeck <[email protected]>
6 * Copyright (C) 2015-2024 KiCad Developers, see AUTHORS.txt for contributors.
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 3
11 * of the License, or (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, you may find one here:
20 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
21 * or you may search the http://www.gnu.org website for the version 2 license,
22 * or you may write to the Free Software Foundation, Inc.,
23 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
24 */
25
26// kicad_curl.h must be included before wx headers, to avoid
27// conflicts for some defines, at least on Windows
29
30#include <mutex>
31#include <ki_exception.h> // THROW_IO_ERROR
32
33
34static std::shared_mutex s_curlMutex;
35static bool s_curlShuttingDown = false;
36
37
39{
40 s_curlShuttingDown = false;
41
42 if( curl_global_init( CURL_GLOBAL_ALL ) != CURLE_OK )
43 {
44 THROW_IO_ERROR( "curl_global_init() failed." );
45 }
46}
47
48
50{
51 s_curlShuttingDown = true;
52
53 std::unique_lock lock( s_curlMutex );
54
55 curl_global_cleanup();
56}
57
58
59std::shared_mutex& KICAD_CURL::Mutex()
60{
61 return s_curlMutex;
62}
63
64
66{
67 return s_curlShuttingDown;
68}
69
70
72{
74}
75
76
77std::string GetCurlLibVersion()
78{
79 return LIBCURL_VERSION;
80}
static void Cleanup()
Call curl_global_cleanup for the application.
Definition: kicad_curl.cpp:49
static void Init()
Call curl_global_init for the application.
Definition: kicad_curl.cpp:38
static bool IsShuttingDown()
Returns true if all curl operations should terminate.
Definition: kicad_curl.cpp:65
static std::shared_mutex & Mutex()
Returns the mutex for shared locking when performing curl operations.
Definition: kicad_curl.cpp:59
static const char * GetVersion()
Wrapper for curl_version().
Definition: kicad_curl.h:96
#define THROW_IO_ERROR(msg)
Definition: ki_exception.h:39
std::string GetCurlLibVersion()
Definition: kicad_curl.cpp:77
std::string GetKicadCurlVersion()
Definition: kicad_curl.cpp:71
static std::shared_mutex s_curlMutex
Definition: kicad_curl.cpp:34
static bool s_curlShuttingDown
Definition: kicad_curl.cpp:35