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 The 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 <atomic>
32#include <ki_exception.h> // THROW_IO_ERROR
33
34
35static std::shared_mutex s_curlMutex;
36static std::atomic<bool> s_curlShuttingDown = false;
37
38
40{
41 s_curlShuttingDown = false;
42
43 if( curl_global_init( CURL_GLOBAL_ALL ) != CURLE_OK )
44 THROW_IO_ERROR( "curl_global_init() failed." );
45}
46
47
49{
50 s_curlShuttingDown = true;
51
52 std::unique_lock lock( s_curlMutex );
53
54 curl_global_cleanup();
55}
56
57
58std::shared_mutex& KICAD_CURL::Mutex()
59{
60 return s_curlMutex;
61}
62
63
65{
66 return s_curlShuttingDown;
67}
68
69
71{
73}
74
75
76std::string GetCurlLibVersion()
77{
78 return LIBCURL_VERSION;
79}
static void Cleanup()
Call curl_global_cleanup for the application.
Definition: kicad_curl.cpp:48
static void Init()
Call curl_global_init for the application.
Definition: kicad_curl.cpp:39
static bool IsShuttingDown()
Returns true if all curl operations should terminate.
Definition: kicad_curl.cpp:64
static std::shared_mutex & Mutex()
Returns the mutex for shared locking when performing curl operations.
Definition: kicad_curl.cpp:58
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:76
std::string GetKicadCurlVersion()
Definition: kicad_curl.cpp:70
static std::shared_mutex s_curlMutex
Definition: kicad_curl.cpp:35
static std::atomic< bool > s_curlShuttingDown
Definition: kicad_curl.cpp:36