Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
mpd
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Иван Мажукин
mpd
Commits
9d47b220
Commit
9d47b220
authored
Nov 12, 2017
by
Max Kellermann
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lib/curl: add "noexcept"
parent
c582a9fa
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
71 additions
and
65 deletions
+71
-65
CurlInputPlugin.cxx
src/input/plugins/CurlInputPlugin.cxx
+2
-2
Easy.hxx
src/lib/curl/Easy.hxx
+7
-6
Global.cxx
src/lib/curl/Global.cxx
+9
-8
Global.hxx
src/lib/curl/Global.hxx
+9
-8
Handler.hxx
src/lib/curl/Handler.hxx
+1
-1
Init.cxx
src/lib/curl/Init.cxx
+1
-1
Init.hxx
src/lib/curl/Init.hxx
+1
-1
Multi.hxx
src/lib/curl/Multi.hxx
+7
-6
Request.cxx
src/lib/curl/Request.cxx
+13
-11
Request.hxx
src/lib/curl/Request.hxx
+12
-12
Slist.hxx
src/lib/curl/Slist.hxx
+6
-6
Discovery.cxx
src/lib/upnp/Discovery.cxx
+1
-1
Discovery.hxx
src/lib/upnp/Discovery.hxx
+1
-1
CurlStorage.cxx
src/storage/plugins/CurlStorage.cxx
+1
-1
No files found.
src/input/plugins/CurlInputPlugin.cxx
View file @
9d47b220
...
...
@@ -127,7 +127,7 @@ struct CurlInputStream final : public AsyncInputStream, CurlResponseHandler {
std
::
multimap
<
std
::
string
,
std
::
string
>
&&
headers
)
override
;
void
OnData
(
ConstBuffer
<
void
>
data
)
override
;
void
OnEnd
()
override
;
void
OnError
(
std
::
exception_ptr
e
)
override
;
void
OnError
(
std
::
exception_ptr
e
)
noexcept
override
;
/* virtual methods from AsyncInputStream */
virtual
void
DoResume
()
override
;
...
...
@@ -275,7 +275,7 @@ CurlInputStream::OnEnd()
}
void
CurlInputStream
::
OnError
(
std
::
exception_ptr
e
)
CurlInputStream
::
OnError
(
std
::
exception_ptr
e
)
noexcept
{
postponed_exception
=
std
::
move
(
e
);
...
...
src/lib/curl/Easy.hxx
View file @
9d47b220
...
...
@@ -58,25 +58,26 @@ public:
/**
* Create an empty instance.
*/
CurlEasy
(
std
::
nullptr_t
)
:
handle
(
nullptr
)
{}
CurlEasy
(
std
::
nullptr_t
)
noexcept
:
handle
(
nullptr
)
{}
CurlEasy
(
CurlEasy
&&
src
)
:
handle
(
std
::
exchange
(
src
.
handle
,
nullptr
))
{}
CurlEasy
(
CurlEasy
&&
src
)
noexcept
:
handle
(
std
::
exchange
(
src
.
handle
,
nullptr
))
{}
~
CurlEasy
()
{
~
CurlEasy
()
noexcept
{
if
(
handle
!=
nullptr
)
curl_easy_cleanup
(
handle
);
}
operator
bool
()
const
{
operator
bool
()
const
noexcept
{
return
handle
!=
nullptr
;
}
CurlEasy
&
operator
=
(
CurlEasy
&&
src
)
{
CurlEasy
&
operator
=
(
CurlEasy
&&
src
)
noexcept
{
std
::
swap
(
handle
,
src
.
handle
);
return
*
this
;
}
CURL
*
Get
()
{
CURL
*
Get
()
noexcept
{
return
handle
;
}
...
...
src/lib/curl/Global.cxx
View file @
9d47b220
...
...
@@ -68,7 +68,7 @@ public:
bool
OnSocketReady
(
unsigned
flags
)
noexcept
override
;
private
:
static
constexpr
int
FlagsToCurlCSelect
(
unsigned
flags
)
{
static
constexpr
int
FlagsToCurlCSelect
(
unsigned
flags
)
noexcept
{
return
(
flags
&
(
READ
|
HANGUP
)
?
CURL_CSELECT_IN
:
0
)
|
(
flags
&
WRITE
?
CURL_CSELECT_OUT
:
0
)
|
(
flags
&
ERROR
?
CURL_CSELECT_ERR
:
0
);
...
...
@@ -175,7 +175,7 @@ CurlGlobal::Add(CURL *easy, CurlRequest &request)
}
void
CurlGlobal
::
Remove
(
CURL
*
easy
)
CurlGlobal
::
Remove
(
CURL
*
easy
)
noexcept
{
assert
(
GetEventLoop
().
IsInside
());
assert
(
easy
!=
nullptr
);
...
...
@@ -186,7 +186,7 @@ CurlGlobal::Remove(CURL *easy)
}
static
CurlRequest
*
ToRequest
(
CURL
*
easy
)
ToRequest
(
CURL
*
easy
)
noexcept
{
void
*
p
;
CURLcode
code
=
curl_easy_getinfo
(
easy
,
CURLINFO_PRIVATE
,
&
p
);
...
...
@@ -202,7 +202,7 @@ ToRequest(CURL *easy)
* Runs in the I/O thread. The caller must not hold locks.
*/
inline
void
CurlGlobal
::
ReadInfo
()
CurlGlobal
::
ReadInfo
()
noexcept
{
assert
(
GetEventLoop
().
IsInside
());
...
...
@@ -220,7 +220,7 @@ CurlGlobal::ReadInfo()
}
inline
void
CurlGlobal
::
UpdateTimeout
(
long
timeout_ms
)
CurlGlobal
::
UpdateTimeout
(
long
timeout_ms
)
noexcept
{
if
(
timeout_ms
<
0
)
{
timeout_event
.
Cancel
();
...
...
@@ -238,7 +238,8 @@ CurlGlobal::UpdateTimeout(long timeout_ms)
}
int
CurlGlobal
::
TimerFunction
(
gcc_unused
CURLM
*
_global
,
long
timeout_ms
,
void
*
userp
)
CurlGlobal
::
TimerFunction
(
gcc_unused
CURLM
*
_global
,
long
timeout_ms
,
void
*
userp
)
noexcept
{
auto
&
global
=
*
(
CurlGlobal
*
)
userp
;
assert
(
_global
==
global
.
multi
.
Get
());
...
...
@@ -248,13 +249,13 @@ CurlGlobal::TimerFunction(gcc_unused CURLM *_global, long timeout_ms, void *user
}
void
CurlGlobal
::
OnTimeout
()
CurlGlobal
::
OnTimeout
()
noexcept
{
SocketAction
(
CURL_SOCKET_TIMEOUT
,
0
);
}
void
CurlGlobal
::
SocketAction
(
curl_socket_t
fd
,
int
ev_bitmask
)
CurlGlobal
::
SocketAction
(
curl_socket_t
fd
,
int
ev_bitmask
)
noexcept
{
int
running_handles
;
CURLMcode
mcode
=
curl_multi_socket_action
(
multi
.
Get
(),
fd
,
ev_bitmask
,
...
...
src/lib/curl/Global.hxx
View file @
9d47b220
...
...
@@ -50,25 +50,25 @@ class CurlGlobal final {
public
:
explicit
CurlGlobal
(
EventLoop
&
_loop
);
EventLoop
&
GetEventLoop
()
{
EventLoop
&
GetEventLoop
()
noexcept
{
return
timeout_event
.
GetEventLoop
();
}
void
Add
(
CURL
*
easy
,
CurlRequest
&
request
);
void
Remove
(
CURL
*
easy
);
void
Remove
(
CURL
*
easy
)
noexcept
;
/**
* Check for finished HTTP responses.
*
* Runs in the I/O thread. The caller must not hold locks.
*/
void
ReadInfo
();
void
ReadInfo
()
noexcept
;
void
Assign
(
curl_socket_t
fd
,
CurlSocket
&
cs
)
{
void
Assign
(
curl_socket_t
fd
,
CurlSocket
&
cs
)
noexcept
{
curl_multi_assign
(
multi
.
Get
(),
fd
,
&
cs
);
}
void
SocketAction
(
curl_socket_t
fd
,
int
ev_bitmask
);
void
SocketAction
(
curl_socket_t
fd
,
int
ev_bitmask
)
noexcept
;
void
InvalidateSockets
()
{
SocketAction
(
CURL_SOCKET_TIMEOUT
,
0
);
...
...
@@ -85,11 +85,12 @@ public:
}
private
:
void
UpdateTimeout
(
long
timeout_ms
);
static
int
TimerFunction
(
CURLM
*
global
,
long
timeout_ms
,
void
*
userp
);
void
UpdateTimeout
(
long
timeout_ms
)
noexcept
;
static
int
TimerFunction
(
CURLM
*
global
,
long
timeout_ms
,
void
*
userp
)
noexcept
;
/* callback for #timeout_event */
void
OnTimeout
();
void
OnTimeout
()
noexcept
;
};
#endif
src/lib/curl/Handler.hxx
View file @
9d47b220
...
...
@@ -42,7 +42,7 @@ public:
std
::
multimap
<
std
::
string
,
std
::
string
>
&&
headers
)
=
0
;
virtual
void
OnData
(
ConstBuffer
<
void
>
data
)
=
0
;
virtual
void
OnEnd
()
=
0
;
virtual
void
OnError
(
std
::
exception_ptr
e
)
=
0
;
virtual
void
OnError
(
std
::
exception_ptr
e
)
noexcept
=
0
;
};
#endif
src/lib/curl/Init.cxx
View file @
9d47b220
...
...
@@ -57,7 +57,7 @@ CurlInit::CurlInit(EventLoop &event_loop)
instance
=
new
CurlGlobal
(
event_loop
);
}
CurlInit
::~
CurlInit
()
CurlInit
::~
CurlInit
()
noexcept
{
const
std
::
lock_guard
<
Mutex
>
protect
(
mutex
);
if
(
--
ref
>
0
)
...
...
src/lib/curl/Init.hxx
View file @
9d47b220
...
...
@@ -47,7 +47,7 @@ class CurlInit {
public
:
explicit
CurlInit
(
EventLoop
&
event_loop
);
~
CurlInit
();
~
CurlInit
()
noexcept
;
CurlInit
(
const
CurlInit
&
)
=
delete
;
CurlInit
&
operator
=
(
const
CurlInit
&
)
=
delete
;
...
...
src/lib/curl/Multi.hxx
View file @
9d47b220
...
...
@@ -58,25 +58,26 @@ public:
/**
* Create an empty instance.
*/
CurlMulti
(
std
::
nullptr_t
)
:
handle
(
nullptr
)
{}
CurlMulti
(
std
::
nullptr_t
)
noexcept
:
handle
(
nullptr
)
{}
CurlMulti
(
CurlMulti
&&
src
)
:
handle
(
std
::
exchange
(
src
.
handle
,
nullptr
))
{}
CurlMulti
(
CurlMulti
&&
src
)
noexcept
:
handle
(
std
::
exchange
(
src
.
handle
,
nullptr
))
{}
~
CurlMulti
()
{
~
CurlMulti
()
noexcept
{
if
(
handle
!=
nullptr
)
curl_multi_cleanup
(
handle
);
}
operator
bool
()
const
{
operator
bool
()
const
noexcept
{
return
handle
!=
nullptr
;
}
CurlMulti
&
operator
=
(
CurlMulti
&&
src
)
{
CurlMulti
&
operator
=
(
CurlMulti
&&
src
)
noexcept
{
std
::
swap
(
handle
,
src
.
handle
);
return
*
this
;
}
CURLM
*
Get
()
{
CURLM
*
Get
()
noexcept
{
return
handle
;
}
...
...
src/lib/curl/Request.cxx
View file @
9d47b220
...
...
@@ -66,13 +66,13 @@ CurlRequest::CurlRequest(CurlGlobal &_global, const char *url,
easy
.
SetOption
(
CURLOPT_URL
,
url
);
}
CurlRequest
::~
CurlRequest
()
CurlRequest
::~
CurlRequest
()
noexcept
{
FreeEasy
();
}
void
CurlRequest
::
Start
()
CurlRequest
::
Start
()
noexcept
{
assert
(
!
registered
);
...
...
@@ -81,7 +81,7 @@ CurlRequest::Start()
}
void
CurlRequest
::
Stop
()
CurlRequest
::
Stop
()
noexcept
{
if
(
!
registered
)
return
;
...
...
@@ -91,7 +91,7 @@ CurlRequest::Stop()
}
void
CurlRequest
::
FreeEasy
()
CurlRequest
::
FreeEasy
()
noexcept
{
if
(
!
easy
)
return
;
...
...
@@ -101,7 +101,7 @@ CurlRequest::FreeEasy()
}
void
CurlRequest
::
Resume
()
CurlRequest
::
Resume
()
noexcept
{
assert
(
registered
);
...
...
@@ -143,7 +143,7 @@ CurlRequest::FinishBody()
}
void
CurlRequest
::
Done
(
CURLcode
result
)
CurlRequest
::
Done
(
CURLcode
result
)
noexcept
{
Stop
();
...
...
@@ -180,7 +180,7 @@ IsResponseBoundaryHeader(StringView s) noexcept
}
inline
void
CurlRequest
::
HeaderFunction
(
StringView
s
)
CurlRequest
::
HeaderFunction
(
StringView
s
)
noexcept
{
if
(
state
>
State
::
HEADERS
)
return
;
...
...
@@ -216,7 +216,8 @@ CurlRequest::HeaderFunction(StringView s)
}
size_t
CurlRequest
::
_HeaderFunction
(
void
*
ptr
,
size_t
size
,
size_t
nmemb
,
void
*
stream
)
CurlRequest
::
_HeaderFunction
(
void
*
ptr
,
size_t
size
,
size_t
nmemb
,
void
*
stream
)
noexcept
{
CurlRequest
&
c
=
*
(
CurlRequest
*
)
stream
;
...
...
@@ -227,7 +228,7 @@ CurlRequest::_HeaderFunction(void *ptr, size_t size, size_t nmemb, void *stream)
}
inline
size_t
CurlRequest
::
DataReceived
(
const
void
*
ptr
,
size_t
received_size
)
CurlRequest
::
DataReceived
(
const
void
*
ptr
,
size_t
received_size
)
noexcept
{
assert
(
received_size
>
0
);
...
...
@@ -249,7 +250,8 @@ CurlRequest::DataReceived(const void *ptr, size_t received_size)
}
size_t
CurlRequest
::
WriteFunction
(
void
*
ptr
,
size_t
size
,
size_t
nmemb
,
void
*
stream
)
CurlRequest
::
WriteFunction
(
void
*
ptr
,
size_t
size
,
size_t
nmemb
,
void
*
stream
)
noexcept
{
CurlRequest
&
c
=
*
(
CurlRequest
*
)
stream
;
...
...
@@ -261,7 +263,7 @@ CurlRequest::WriteFunction(void *ptr, size_t size, size_t nmemb, void *stream)
}
void
CurlRequest
::
OnPostponeError
()
CurlRequest
::
OnPostponeError
()
noexcept
{
assert
(
postponed_error
);
...
...
src/lib/curl/Request.hxx
View file @
9d47b220
...
...
@@ -80,7 +80,7 @@ public:
*/
CurlRequest
(
CurlGlobal
&
_global
,
const
char
*
url
,
CurlResponseHandler
&
_handler
);
~
CurlRequest
();
~
CurlRequest
()
noexcept
;
CurlRequest
(
const
CurlRequest
&
)
=
delete
;
CurlRequest
&
operator
=
(
const
CurlRequest
&
)
=
delete
;
...
...
@@ -91,16 +91,16 @@ public:
*
* This method must be called in the event loop thread.
*/
void
Start
();
void
Start
()
noexcept
;
/**
* Unregister this request via CurlGlobal::Remove().
*
* This method must be called in the event loop thread.
*/
void
Stop
();
void
Stop
()
noexcept
;
CURL
*
Get
()
{
CURL
*
Get
()
noexcept
{
return
easy
.
Get
();
}
...
...
@@ -115,36 +115,36 @@ public:
*/
struct
Pause
{};
void
Resume
();
void
Resume
()
noexcept
;
/**
* A HTTP request is finished. Called by #CurlGlobal.
*/
void
Done
(
CURLcode
result
);
void
Done
(
CURLcode
result
)
noexcept
;
private
:
/**
* Frees the current "libcurl easy" handle, and everything
* associated with it.
*/
void
FreeEasy
();
void
FreeEasy
()
noexcept
;
void
FinishHeaders
();
void
FinishBody
();
size_t
DataReceived
(
const
void
*
ptr
,
size_t
size
);
size_t
DataReceived
(
const
void
*
ptr
,
size_t
size
)
noexcept
;
void
HeaderFunction
(
StringView
s
);
void
HeaderFunction
(
StringView
s
)
noexcept
;
void
OnPostponeError
();
void
OnPostponeError
()
noexcept
;
/** called by curl when new data is available */
static
size_t
_HeaderFunction
(
void
*
ptr
,
size_t
size
,
size_t
nmemb
,
void
*
stream
);
void
*
stream
)
noexcept
;
/** called by curl when new data is available */
static
size_t
WriteFunction
(
void
*
ptr
,
size_t
size
,
size_t
nmemb
,
void
*
stream
);
void
*
stream
)
noexcept
;
};
#endif
src/lib/curl/Slist.hxx
View file @
9d47b220
...
...
@@ -41,26 +41,26 @@ class CurlSlist {
struct
curl_slist
*
head
=
nullptr
;
public
:
CurlSlist
()
=
default
;
CurlSlist
()
noexcept
=
default
;
CurlSlist
(
CurlSlist
&&
src
)
CurlSlist
(
CurlSlist
&&
src
)
noexcept
:
head
(
std
::
exchange
(
src
.
head
,
nullptr
))
{}
~
CurlSlist
()
{
~
CurlSlist
()
noexcept
{
if
(
head
!=
nullptr
)
curl_slist_free_all
(
head
);
}
CurlSlist
&
operator
=
(
CurlSlist
&&
src
)
{
CurlSlist
&
operator
=
(
CurlSlist
&&
src
)
noexcept
{
std
::
swap
(
head
,
src
.
head
);
return
*
this
;
}
struct
curl_slist
*
Get
()
{
struct
curl_slist
*
Get
()
noexcept
{
return
head
;
}
void
Clear
()
{
void
Clear
()
noexcept
{
curl_slist_free_all
(
head
);
head
=
nullptr
;
}
...
...
src/lib/upnp/Discovery.cxx
View file @
9d47b220
...
...
@@ -86,7 +86,7 @@ UPnPDeviceDirectory::Downloader::OnEnd()
}
void
UPnPDeviceDirectory
::
Downloader
::
OnError
(
std
::
exception_ptr
e
)
UPnPDeviceDirectory
::
Downloader
::
OnError
(
std
::
exception_ptr
e
)
noexcept
{
LogError
(
e
);
Destroy
();
...
...
src/lib/upnp/Discovery.hxx
View file @
9d47b220
...
...
@@ -118,7 +118,7 @@ class UPnPDeviceDirectory final : UpnpCallback {
std
::
multimap
<
std
::
string
,
std
::
string
>
&&
headers
)
override
;
void
OnData
(
ConstBuffer
<
void
>
data
)
override
;
void
OnEnd
()
override
;
void
OnError
(
std
::
exception_ptr
e
)
override
;
void
OnError
(
std
::
exception_ptr
e
)
noexcept
override
;
};
CurlInit
curl
;
...
...
src/storage/plugins/CurlStorage.cxx
View file @
9d47b220
...
...
@@ -144,7 +144,7 @@ private:
}
/* virtual methods from CurlResponseHandler */
void
OnError
(
std
::
exception_ptr
e
)
final
{
void
OnError
(
std
::
exception_ptr
e
)
noexcept
final
{
const
std
::
lock_guard
<
Mutex
>
lock
(
mutex
);
postponed_error
=
std
::
move
(
e
);
SetDone
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment