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, see <https://www.gnu.org/licenses/>.
20 */
21
22// kicad_curl.h must be included before wx headers, to avoid
23// conflicts for some defines, at least on Windows
25
26#include <mutex>
27#include <atomic>
28#include <ki_exception.h> // THROW_IO_ERROR
29
30
31static std::shared_mutex s_curlMutex;
32static std::atomic<bool> s_curlShuttingDown = false;
33
34
36{
37 s_curlShuttingDown = false;
38
39 if( curl_global_init( CURL_GLOBAL_ALL ) != CURLE_OK )
40 THROW_IO_ERROR( "curl_global_init() failed." );
41}
42
43
45{
46 s_curlShuttingDown = true;
47
48 std::unique_lock lock( s_curlMutex );
49
50 curl_global_cleanup();
51}
52
53
54std::shared_mutex& KICAD_CURL::Mutex()
55{
56 return s_curlMutex;
57}
58
59
64
65
67{
69}
70
71
72std::string GetCurlLibVersion()
73{
74 return LIBCURL_VERSION;
75}
static void Cleanup()
Call curl_global_cleanup for the application.
static void Init()
Call curl_global_init for the application.
static bool IsShuttingDown()
Returns true if all curl operations should terminate.
static std::shared_mutex & Mutex()
Returns the mutex for shared locking when performing curl operations.
static const char * GetVersion()
Wrapper for curl_version().
Definition kicad_curl.h:92
#define THROW_IO_ERROR(msg)
macro which captures the "call site" values of FILE_, __FUNCTION & LINE
std::string GetCurlLibVersion()
std::string GetKicadCurlVersion()
static std::shared_mutex s_curlMutex
static std::atomic< bool > s_curlShuttingDown