Renamed engine to core.

Added focus to WindowDownloadList.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@249 e378c898-3ddf-0310-93e7-cc216c733640
This commit is contained in:
rakshasa
2005-01-31 17:59:16 +00:00
parent c3a4a7d554
commit cd9b014eb6
17 changed files with 107 additions and 47 deletions
+63
View File
@@ -0,0 +1,63 @@
#include "config.h"
#include <stdexcept>
#include <ncurses.h>
#include <sigc++/bind.h>
#include <torrent/torrent.h>
#include "poll.h"
#include "curl_get.h"
namespace core {
void
Poll::poll() {
FD_ZERO(&m_readSet);
FD_ZERO(&m_writeSet);
FD_ZERO(&m_exceptSet);
torrent::mark(&m_readSet, &m_writeSet, &m_exceptSet, &m_maxFd);
m_maxFd = std::max(m_maxFd, 1);
FD_SET(0, &m_readSet);
if (m_curlStack.is_busy())
m_curlStack.fdset(&m_readSet, &m_writeSet, &m_exceptSet, &m_maxFd);
uint64_t t = torrent::get(torrent::TIME_SELECT);
if (t > 10000000)
t = 10000000;
timeval timeout = {t / 1000000, t % 1000000};
m_maxFd = select(m_maxFd, &m_readSet, &m_writeSet, &m_exceptSet, &timeout);
if (m_maxFd == EINTR)
m_slotSelectInterrupted();
else if (m_maxFd < 0)
throw std::runtime_error("Poll::work(): select error");
}
void
Poll::work() {
if (FD_ISSET(0, &m_readSet)) {
int key;
while ((key = getch()) >= 0)
m_slotReadStdin(key);
}
if (m_curlStack.is_busy())
m_curlStack.perform();
torrent::work(&m_readSet, &m_writeSet, &m_exceptSet, m_maxFd);
}
void
Poll::register_http() {
torrent::Http::set_factory(sigc::bind(sigc::ptr_fun(&core::CurlGet::new_object), &m_curlStack));
}
}