mirror of
https://github.com/rakshasa/rtorrent.git
synced 2026-10-19 15:46:17 +00:00
* Added lazy syncing of chunks.
git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@557 e378c898-3ddf-0310-93e7-cc216c733640
This commit is contained in:
@@ -91,6 +91,27 @@ equal(Type t, Ftor f) {
|
|||||||
return equal_t<Type, Ftor>(t, f);
|
return equal_t<Type, Ftor>(t, f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename Type, typename Ftor>
|
||||||
|
struct not_equal_t {
|
||||||
|
typedef bool result_type;
|
||||||
|
|
||||||
|
not_equal_t(Type t, Ftor f) : m_t(t), m_f(f) {}
|
||||||
|
|
||||||
|
template <typename Arg>
|
||||||
|
bool operator () (Arg& a) {
|
||||||
|
return m_t != m_f(a);
|
||||||
|
}
|
||||||
|
|
||||||
|
Type m_t;
|
||||||
|
Ftor m_f;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename Type, typename Ftor>
|
||||||
|
inline not_equal_t<Type, Ftor>
|
||||||
|
not_equal(Type t, Ftor f) {
|
||||||
|
return not_equal_t<Type, Ftor>(t, f);
|
||||||
|
}
|
||||||
|
|
||||||
template <typename Type, typename Ftor>
|
template <typename Type, typename Ftor>
|
||||||
struct less_t {
|
struct less_t {
|
||||||
typedef bool result_type;
|
typedef bool result_type;
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ CurlStack::add_get(CurlGet* get) {
|
|||||||
m_getList.push_back(get);
|
m_getList.push_back(get);
|
||||||
|
|
||||||
// Curl ML suggest we need to do perform after adding a handle.
|
// Curl ML suggest we need to do perform after adding a handle.
|
||||||
perform();
|
//perform();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -54,6 +54,10 @@ PollManager::PollManager(torrent::Poll* poll) :
|
|||||||
m_readSet = (fd_set*)new char[m_setSize];
|
m_readSet = (fd_set*)new char[m_setSize];
|
||||||
m_writeSet = (fd_set*)new char[m_setSize];
|
m_writeSet = (fd_set*)new char[m_setSize];
|
||||||
m_errorSet = (fd_set*)new char[m_setSize];
|
m_errorSet = (fd_set*)new char[m_setSize];
|
||||||
|
|
||||||
|
std::memset(m_readSet, 0, m_setSize);
|
||||||
|
std::memset(m_writeSet, 0, m_setSize);
|
||||||
|
std::memset(m_errorSet, 0, m_setSize);
|
||||||
#else
|
#else
|
||||||
if (m_poll->get_open_max() > FD_SETSIZE)
|
if (m_poll->get_open_max() > FD_SETSIZE)
|
||||||
throw std::logic_error("PollManager::PollManager(...) received a max open sockets >= FD_SETSIZE, but USE_VARIABLE_FDSET was not defined");
|
throw std::logic_error("PollManager::PollManager(...) received a max open sockets >= FD_SETSIZE, but USE_VARIABLE_FDSET was not defined");
|
||||||
@@ -62,7 +66,15 @@ PollManager::PollManager(torrent::Poll* poll) :
|
|||||||
m_readSet = new fd_set;
|
m_readSet = new fd_set;
|
||||||
m_writeSet = new fd_set;
|
m_writeSet = new fd_set;
|
||||||
m_errorSet = new fd_set;
|
m_errorSet = new fd_set;
|
||||||
|
|
||||||
|
FD_ZERO(m_readSet);
|
||||||
|
FD_ZERO(m_writeSet);
|
||||||
|
FD_ZERO(m_errorSet);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Call this so curl has valid fd_set pointers if curl_multi_perform
|
||||||
|
// is called before it gets set when polling.
|
||||||
|
m_httpStack.fdset(m_readSet, m_writeSet, m_errorSet);
|
||||||
}
|
}
|
||||||
|
|
||||||
PollManager::~PollManager() {
|
PollManager::~PollManager() {
|
||||||
|
|||||||
Reference in New Issue
Block a user