00001
00002
00003
00004
00005 #include "libtorrent/session.hpp"
00006 #include "libtorrent/hasher.hpp"
00007 #include <fstream>
00008 #include <boost/thread.hpp>
00009 #include <boost/tuple/tuple.hpp>
00010 #include <boost/filesystem/operations.hpp>
00011 #include <boost/filesystem/convenience.hpp>
00012
00013 #include "test.hpp"
00014
00015 using boost::filesystem::remove_all;
00016 using boost::filesystem::create_directory;
00017
00018 void sleep(int msec)
00019 {
00020 boost::xtime xt;
00021 boost::xtime_get(&xt, boost::TIME_UTC);
00022 xt.nsec += msec * 1000000;
00023 boost::thread::sleep(xt);
00024 }
00025
00026 using namespace libtorrent;
00027
00028 boost::tuple<torrent_handle, torrent_handle> setup_transfer(
00029 session& ses1, session& ses2, bool clear_files)
00030 {
00031 using namespace boost::filesystem;
00032
00033 char const* tracker_url = "http://non-existent-name.com/announce";
00034
00035 torrent_info t;
00036 t.add_file(path("temporary"), 42);
00037 t.set_piece_size(256 * 1024);
00038 t.add_tracker(tracker_url);
00039
00040 std::vector<char> piece(42);
00041 std::fill(piece.begin(), piece.end(), 0xfe);
00042
00043
00044 int num = t.num_pieces();
00045 for (int i = 0; i < num; ++i)
00046 {
00047 t.set_hash(i, hasher(&piece[0], piece.size()).final());
00048 }
00049
00050 create_directory("./tmp1");
00051 std::ofstream file("./tmp1/temporary");
00052 file.write(&piece[0], piece.size());
00053 file.close();
00054 if (clear_files) remove_all("./tmp2/temporary");
00055
00056 t.create_torrent();
00057
00058 ses1.set_severity_level(alert::debug);
00059 ses2.set_severity_level(alert::debug);
00060
00061
00062
00063
00064 torrent_handle tor1 = ses1.add_torrent(t, "./tmp1");
00065 torrent_handle tor2 = ses2.add_torrent(tracker_url
00066 , t.info_hash(), 0, "./tmp2");
00067
00068 sleep(100);
00069
00070 std::cerr << "connecting peer\n";
00071 tor1.connect_peer(tcp::endpoint(address::from_string("127.0.0.1")
00072 , ses2.listen_port()));
00073
00074 return boost::make_tuple(tor1, tor2);
00075 }
00076