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
7063c423
Commit
7063c423
authored
Dec 19, 2016
by
Max Kellermann
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
input/curl: rename class CurlMulti to CurlGlobal
parent
36b93993
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
34 additions
and
34 deletions
+34
-34
CurlInputPlugin.cxx
src/input/plugins/CurlInputPlugin.cxx
+34
-34
No files found.
src/input/plugins/CurlInputPlugin.cxx
View file @
7063c423
...
...
@@ -131,17 +131,17 @@ struct CurlInputStream final : public AsyncInputStream {
virtual
void
DoSeek
(
offset_type
new_offset
)
override
;
};
class
Curl
Multi
;
class
Curl
Global
;
/**
* Monitor for one socket created by CURL.
*/
class
CurlSocket
final
:
SocketMonitor
{
Curl
Multi
&
multi
;
Curl
Global
&
global
;
public
:
CurlSocket
(
Curl
Multi
&
_multi
,
EventLoop
&
_loop
,
int
_fd
)
:
SocketMonitor
(
_fd
,
_loop
),
multi
(
_multi
)
{}
CurlSocket
(
Curl
Global
&
_global
,
EventLoop
&
_loop
,
int
_fd
)
:
SocketMonitor
(
_fd
,
_loop
),
global
(
_global
)
{}
~
CurlSocket
()
{
/* TODO: sometimes, CURL uses CURL_POLL_REMOVE after
...
...
@@ -193,13 +193,13 @@ private:
/**
* Manager for the global CURLM object.
*/
class
Curl
Multi
final
:
private
TimeoutMonitor
{
class
Curl
Global
final
:
private
TimeoutMonitor
{
CURLM
*
const
multi
;
public
:
Curl
Multi
(
EventLoop
&
_loop
,
CURLM
*
_multi
);
Curl
Global
(
EventLoop
&
_loop
,
CURLM
*
_multi
);
~
Curl
Multi
()
{
~
Curl
Global
()
{
curl_multi_cleanup
(
multi
);
}
...
...
@@ -234,7 +234,7 @@ public:
}
private
:
static
int
TimerFunction
(
CURLM
*
multi
,
long
timeout_ms
,
void
*
userp
);
static
int
TimerFunction
(
CURLM
*
global
,
long
timeout_ms
,
void
*
userp
);
virtual
void
OnTimeout
()
override
;
};
...
...
@@ -253,13 +253,13 @@ static unsigned proxy_port;
static
bool
verify_peer
,
verify_host
;
static
Curl
Multi
*
curl_multi
;
static
Curl
Global
*
curl_global
;
static
constexpr
Domain
curl_domain
(
"curl"
);
static
constexpr
Domain
curlm_domain
(
"curlm"
);
Curl
Multi
::
CurlMulti
(
EventLoop
&
_loop
,
CURLM
*
_multi
)
:
TimeoutMonitor
(
_loop
),
multi
(
_mu
lti
)
Curl
Global
::
CurlGlobal
(
EventLoop
&
_loop
,
CURLM
*
_mutex
)
:
TimeoutMonitor
(
_loop
),
multi
(
_mu
tex
)
{
curl_multi_setopt
(
multi
,
CURLMOPT_SOCKETFUNCTION
,
CurlSocket
::
SocketFunction
);
...
...
@@ -301,9 +301,9 @@ CurlInputStream::DoResume()
/* libcurl older than 7.32.0 does not update
its sockets after curl_easy_pause(); force
libcurl to do it now */
curl_
multi
->
ResumeSockets
();
curl_
global
->
ResumeSockets
();
curl_
multi
->
InvalidateSockets
();
curl_
global
->
InvalidateSockets
();
mutex
.
lock
();
}
...
...
@@ -312,7 +312,7 @@ int
CurlSocket
::
SocketFunction
(
gcc_unused
CURL
*
easy
,
curl_socket_t
s
,
int
action
,
void
*
userp
,
void
*
socketp
)
{
CurlMulti
&
multi
=
*
(
CurlMulti
*
)
userp
;
auto
&
global
=
*
(
CurlGlobal
*
)
userp
;
CurlSocket
*
cs
=
(
CurlSocket
*
)
socketp
;
assert
(
io_thread_inside
());
...
...
@@ -323,8 +323,8 @@ CurlSocket::SocketFunction(gcc_unused CURL *easy,
}
if
(
cs
==
nullptr
)
{
cs
=
new
CurlSocket
(
multi
,
io_thread_get
(),
s
);
multi
.
Assign
(
s
,
*
cs
);
cs
=
new
CurlSocket
(
global
,
io_thread_get
(),
s
);
global
.
Assign
(
s
,
*
cs
);
}
else
{
#ifdef USE_EPOLL
/* when using epoll, we need to unregister the socket
...
...
@@ -350,7 +350,7 @@ CurlSocket::OnSocketReady(unsigned flags)
{
assert
(
io_thread_inside
());
multi
.
SocketAction
(
Get
(),
FlagsToCurlCSelect
(
flags
));
global
.
SocketAction
(
Get
(),
FlagsToCurlCSelect
(
flags
));
return
true
;
}
...
...
@@ -360,7 +360,7 @@ CurlSocket::OnSocketReady(unsigned flags)
* Throws std::runtime_error on error.
*/
inline
void
Curl
Multi
::
Add
(
CurlInputStream
*
c
)
Curl
Global
::
Add
(
CurlInputStream
*
c
)
{
assert
(
io_thread_inside
());
assert
(
c
!=
nullptr
);
...
...
@@ -387,12 +387,12 @@ input_curl_easy_add_indirect(CurlInputStream *c)
assert
(
c
->
easy
);
BlockingCall
(
io_thread_get
(),
[
c
](){
curl_
multi
->
Add
(
c
);
curl_
global
->
Add
(
c
);
});
}
inline
void
Curl
Multi
::
Remove
(
CurlInputStream
*
c
)
Curl
Global
::
Remove
(
CurlInputStream
*
c
)
{
curl_multi_remove_handle
(
multi
,
c
->
easy
.
Get
());
}
...
...
@@ -405,7 +405,7 @@ CurlInputStream::FreeEasy()
if
(
!
easy
)
return
;
curl_
multi
->
Remove
(
this
);
curl_
global
->
Remove
(
this
);
easy
=
nullptr
;
...
...
@@ -418,7 +418,7 @@ CurlInputStream::FreeEasyIndirect()
{
BlockingCall
(
io_thread_get
(),
[
this
](){
FreeEasy
();
curl_
multi
->
InvalidateSockets
();
curl_
global
->
InvalidateSockets
();
});
assert
(
!
easy
);
...
...
@@ -464,7 +464,7 @@ input_curl_handle_done(CURL *easy_handle, CURLcode result)
}
void
Curl
Multi
::
SocketAction
(
curl_socket_t
fd
,
int
ev_bitmask
)
Curl
Global
::
SocketAction
(
curl_socket_t
fd
,
int
ev_bitmask
)
{
int
running_handles
;
CURLMcode
mcode
=
curl_multi_socket_action
(
multi
,
fd
,
ev_bitmask
,
...
...
@@ -483,7 +483,7 @@ CurlMulti::SocketAction(curl_socket_t fd, int ev_bitmask)
* Runs in the I/O thread. The caller must not hold locks.
*/
inline
void
Curl
Multi
::
ReadInfo
()
Curl
Global
::
ReadInfo
()
{
assert
(
io_thread_inside
());
...
...
@@ -498,13 +498,13 @@ CurlMulti::ReadInfo()
}
int
Curl
Multi
::
TimerFunction
(
gcc_unused
CURLM
*
_multi
,
long
timeout_ms
,
void
*
userp
)
Curl
Global
::
TimerFunction
(
gcc_unused
CURLM
*
_global
,
long
timeout_ms
,
void
*
userp
)
{
CurlMulti
&
multi
=
*
(
CurlMulti
*
)
userp
;
assert
(
_
multi
==
multi
.
multi
);
auto
&
global
=
*
(
CurlGlobal
*
)
userp
;
assert
(
_
global
==
global
.
multi
);
if
(
timeout_ms
<
0
)
{
multi
.
Cancel
();
global
.
Cancel
();
return
0
;
}
...
...
@@ -515,12 +515,12 @@ CurlMulti::TimerFunction(gcc_unused CURLM *_multi, long timeout_ms, void *userp)
of 10ms. */
timeout_ms
=
10
;
multi
.
Schedule
(
timeout_ms
);
global
.
Schedule
(
timeout_ms
);
return
0
;
}
void
Curl
Multi
::
OnTimeout
()
Curl
Global
::
OnTimeout
()
{
SocketAction
(
CURL_SOCKET_TIMEOUT
,
0
);
}
...
...
@@ -566,21 +566,21 @@ input_curl_init(const ConfigBlock &block)
verify_peer
=
block
.
GetBlockValue
(
"verify_peer"
,
true
);
verify_host
=
block
.
GetBlockValue
(
"verify_host"
,
true
);
CURLM
*
multi
=
curl_multi_init
();
if
(
multi
==
nullptr
)
{
CURLM
*
global
=
curl_multi_init
();
if
(
global
==
nullptr
)
{
curl_slist_free_all
(
http_200_aliases
);
curl_global_cleanup
();
throw
PluginUnavailable
(
"curl_multi_init() failed"
);
}
curl_
multi
=
new
CurlMulti
(
io_thread_get
(),
multi
);
curl_
global
=
new
CurlGlobal
(
io_thread_get
(),
global
);
}
static
void
input_curl_finish
(
void
)
{
BlockingCall
(
io_thread_get
(),
[](){
delete
curl_
multi
;
delete
curl_
global
;
});
curl_slist_free_all
(
http_200_aliases
);
...
...
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