Загрузка торрента с помощью libtorrent - это нормально с помощью консольного приложения, но в WxWidgets программа просто зависает и ничего не делает.
#include "main.h"
#include <iostream>
#include <fstream>
#include <iterator>
#include <exception>
#include <string>
#include <sstream>
#include "libtorrent/entry.hpp"
#include "libtorrent/bencode.hpp"
#include "libtorrent/session.hpp"
int torrentDownloadOld(char* torrentURL)
{
using namespace libtorrent;
#if BOOST_VERSION < 103400
namespace fs = boost::filesystem;
fs::path::default_name_check(fs::no_check);
#endif
#ifndef BOOST_NO_EXCEPTIONS
try
#endif
{
session s;
s.listen_on(std::make_pair(6881, 6889));
add_torrent_params p;
p.save_path = "/home/fulluser/Documents/gfx/bin/Debug/";
p.ti = new torrent_info(torrentURL);
s.add_torrent(p);
// wait for the user to end
//char a;
//std::cin.unsetf(std::ios_base::skipws);
//std::cin >> a;
}
#ifndef BOOST_NO_EXCEPTIONS
catch (std::exception& e)
{
wxString mystring2(e.what(), wxConvUTF8);
wxMessageBox(mystring2, _("Error"));
}
#endif
return 0;
}
Я изменил catch
с исходного std::cout << e.what() << "\n";
на окно сообщения и прокомментировал ожидание ввода пользователем.
Я вызываю torrentDownloadOld()
при нажатии кнопки в WxWidgets, но ничего не происходит .. Торрент не загружается, и графический интерфейс перестает отвечать на запросы. Примерно через 15 секунд графический интерфейс снова становится отзывчивым, и появляется окно с сообщением «добро пожаловать», но файл нигде не найден. Загрузка даже не началась.
void gfxDialog::OnAbout(wxCommandEvent &event)
{
std::string torrentURL = "/home/fulluser/Documents/gfx/bin/Debug/test.torrent";
torrentDownloadOld((char*)torrentURL.c_str());
//Show welcome to message box when torrent is done.
wxString msg = wxbuildinfo(long_f);
wxMessageBox(msg, _("Welcome to..."));
}
Ничего не выводится пользователю (пока), поэтому я не понимаю, почему файл не загружается, когда программа перестает отвечать.