Commit Graph

214 Commits

Author SHA1 Message Date
rakshasa fc76a11d71 * UI refactoring, added display::Frame and started cleaning up the
code.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@747 e378c898-3ddf-0310-93e7-cc216c733640
2006-07-26 21:41:09 +00:00
rakshasa ef90f0f51e * Added resume functions for saving/loading tracker state.
* Added parameter to torrent::resume_save_progress to indicate that
only completed files are to be saved. This is used when the torrent is
active.

* Update the display when priority is changed.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@746 e378c898-3ddf-0310-93e7-cc216c733640
2006-07-22 20:41:47 +00:00
rakshasa 652fd25c07 * Detect the amount of address space available for mapping chunks and
use that to decide when syncing is needed.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@745 e378c898-3ddf-0310-93e7-cc216c733640
2006-07-21 20:19:55 +00:00
rakshasa 345c57e9bc * Replaced syncing chunks with ChunkList::sync_chunks which allows the
caller greater control through the use of flags. MS_SYNC is only used
if the caller either requires it or asks for remaining free diskspace
to be checked.

* Moved various flags from DownloadMain to DownloadInfo.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@744 e378c898-3ddf-0310-93e7-cc216c733640
2006-07-19 21:09:19 +00:00
rakshasa b3fc488e5f * Initial work on a global chunk manager for controlling memory usage,
and checking if enough disk space is available for MS_ASYNC to be safe.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@743 e378c898-3ddf-0310-93e7-cc216c733640
2006-07-19 00:42:23 +00:00
rakshasa 52bf80d704 * 'I' key set the download to ignore the start/stop_try commands.
* Added options for timeout_sync/safe_sync and max_chunks_queued.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@739 e378c898-3ddf-0310-93e7-cc216c733640
2006-07-07 22:19:20 +00:00
rakshasa 082cbb6cc5 * Added "key_layout" option with support for azerty.
* Delayed the hash done signal.

* Allow quick hash checks that only handles invalid chunks.

* Show failed counter for peers.

* Updated the man page.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@737 e378c898-3ddf-0310-93e7-cc216c733640
2006-07-05 20:12:01 +00:00
rakshasa 26ffe74744 * Moved the resume code out of DownloadWrapper and made it use the
public API. The client can now use the various calls provided or
implement its own.

* 'U' now deletes the tied file in addition to clearing 'tied_to_file.

* Bound left arrow in chunks seen to return to peer list. Patch by
Josef Drexler.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@734 e378c898-3ddf-0310-93e7-cc216c733640
2006-07-01 20:31:07 +00:00
rakshasa 9f2f427e9d * Fixed the transitions between skipping and downloading pieces.
* Added Object::merge_recursive.

* Save and set the chunks done count for closed torrents.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@733 e378c898-3ddf-0310-93e7-cc216c733640
2006-06-30 01:02:41 +00:00
rakshasa 4b79a7c47f * Fixed the hashing so it properly starts and stops. When
DownloadList::pause is called it clears the "hashing" variable.

* Added convenience functions for retriving torrent::Object key's of
specific types.

* Iterate to the first visible transfer in the chunks seen view. Patch
by Josef Drexler.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@732 e378c898-3ddf-0310-93e7-cc216c733640
2006-06-28 22:50:58 +00:00
rakshasa d35bef6791 * Expand the path when unlinking the tied file.
* Use DownloadWrapper* to identify hashing chunks, rather than the
info hash.

* When hashing fails, retry the most common blocks.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@729 e378c898-3ddf-0310-93e7-cc216c733640
2006-06-24 23:48:26 +00:00
rakshasa 70eacfe738 * Reworked how hashing is queued, state must 1 and removed the
set_hash_failed hacks when closing, etc.

* Changed the attributes of blocks in transfer view.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@727 e378c898-3ddf-0310-93e7-cc216c733640
2006-06-21 22:14:10 +00:00
rakshasa c95eb62802 * Second part of reworking how multiple downloads of the same chunk is
handled.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@721 e378c898-3ddf-0310-93e7-cc216c733640
2006-06-15 00:46:13 +00:00
rakshasa b3b4acaad8 * Added view of blocks in transfer list view.
* Show chunks with only queued transfers with an underscore in chunks
seen view. Patch by Josef Drexler, public domain.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@719 e378c898-3ddf-0310-93e7-cc216c733640
2006-06-12 22:34:41 +00:00
rakshasa 38f0cdbce2 * Added blocks to transfer list view.
* Minor modifications to the Block API.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@718 e378c898-3ddf-0310-93e7-cc216c733640
2006-06-12 19:20:51 +00:00
rakshasa 1e54882da4 * Reverse the color of currently downloading chunks in chunks
seen. Patch by Josef Drexler, public domain.

* Moving various stuff from Delegator to TransferList.

* Added checks in HandshakeManager::receive_* to check for invalid
handshakes.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@716 e378c898-3ddf-0310-93e7-cc216c733640
2006-06-11 18:22:30 +00:00
rakshasa f0d94bc938 * Added TransferList to the API.
* Added transfer list view, bound to the 'u' key.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@715 e378c898-3ddf-0310-93e7-cc216c733640
2006-06-09 22:59:47 +00:00
rakshasa d0f6719e50 * Added pageup/down to chunks seen and file list. Patch by Josef
Drexler, all future patches to lib/rtorrent will be under public
domain.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@712 e378c898-3ddf-0310-93e7-cc216c733640
2006-06-04 23:37:39 +00:00
rakshasa 46dd41e956 * Moved defininiton of priority enum to torrent/common.h.
* Properly return the size of the Block.

* Bumped to 0.10.0/0.6.0.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@711 e378c898-3ddf-0310-93e7-cc216c733640
2006-06-04 20:53:04 +00:00
rakshasa 18cd5342df * Moved Delegator over to using the new Block classes.
* Fixed alignment of the ratio display.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@710 e378c898-3ddf-0310-93e7-cc216c733640
2006-06-04 14:17:23 +00:00
rakshasa 146c104eb3 * Added "stop_on_ratio" option and display the ratio. Patch by Josef
Drexler, public domain.

* Made autogen.sh detect glibtoolize.

* Don't resume torrents that are marked as completed yet the initial
hash check returns failed chunks.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@704 e378c898-3ddf-0310-93e7-cc216c733640
2006-05-27 23:35:20 +00:00
rakshasa d4706da4d5 * Removed core::HashQueue, using the "hashing" view and a function in
core::Manager instead.

* Added a new :rtorrent:hashing state so we can distinguish between
initial hashing and manual rehashes. The former is cleared if the
download is paused.

* Added a hash failed flag to core::Download. This is used to skip
entries in the hashing view that either failed to open or are in the
process of being erased from DownloadList.

* torrent::Bitfield::unset was incrementing, rather than decrementing,
the m_set counter.

* Replaced all torrent::internal_error's in rtorrent with
torrent::client_error.

* ^D now checks :rtorrent:state to decide whetever to stop or erase a
download. Downloads queued for hashing will now stop rather than be
deleted.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@688 e378c898-3ddf-0310-93e7-cc216c733640
2006-05-13 00:18:50 +00:00
rakshasa 6d07bf3540 * Added 'view_filter_on' option that triggers filtering of a download
after an event.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@685 e378c898-3ddf-0310-93e7-cc216c733640
2006-05-08 23:42:03 +00:00
rakshasa 236f689efc * Moved various download related calls from core::Manager to
core::DownloadList, added a slot map for hash done.

* Enabled the complete/incomplete views.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@677 e378c898-3ddf-0310-93e7-cc216c733640
2006-04-28 23:21:32 +00:00
rakshasa 02a0510439 * Changed ViewSort::less(...) to operator().
* Added a "last changed" paramter to ViewManager::sort(...) which is
checked, if the ViewDownloads's last_changed timer was poked withing
that timeframe it won't update.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@676 e378c898-3ddf-0310-93e7-cc216c733640
2006-04-27 21:38:02 +00:00
rakshasa c5c9a1ddae * Added the framework for a download scheduler.
* Added "state_changed" variable to downloads that returns the last
time the download called DownloadList::pause/resume.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@674 e378c898-3ddf-0310-93e7-cc216c733640
2006-04-25 19:33:53 +00:00
rakshasa 11c842308a * Added VariableBool.
* Added views for downloads, that can be sorted.

* Added options "view_add", "view_sort" and "view_new".


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@671 e378c898-3ddf-0310-93e7-cc216c733640
2006-04-22 23:16:08 +00:00
rakshasa 7ad18cdac2 * Added missing files in rtorrent/Makefile.am.
git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@666 e378c898-3ddf-0310-93e7-cc216c733640
2006-04-06 17:51:17 +00:00
rakshasa dc1f6d4f23 * Minor BSD portability fixes.
* Added torrent::TrackerList::{set_,}key() and made rtorrent save the
key between sessions.

* Added import option to the man page.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@665 e378c898-3ddf-0310-93e7-cc216c733640
2006-04-06 16:40:25 +00:00
rakshasa 8a8cfe5e3d * Made torrent::Piece part of the api.
* Made libtorrent locale agnostic.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@664 e378c898-3ddf-0310-93e7-cc216c733640
2006-04-05 21:09:15 +00:00
rakshasa 3fa08503bb * Clear the DelegatorChunk's when clearing Delegator, so it doesn't
throw on some obscure bug. Not going to be looking for this one anyway
as there is a rewrite scheduled.

* Added "tos = default|lowdelay|throughput|reliability|mincost" option.

* Made EntryList::value_type a pointer, fixed so FileMeta is
initialized and path set before Download::open().


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@662 e378c898-3ddf-0310-93e7-cc216c733640
2006-04-03 20:58:10 +00:00
rakshasa d9d27139d1 * Fixed an overflow in rak::partial_queue, and added some exceptions.
* Changed to configure script so --disable-mincore must be called
explicitly to disable it.

* API and core::Download cleanup.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@660 e378c898-3ddf-0310-93e7-cc216c733640
2006-03-31 23:02:39 +00:00
rakshasa 59a23ea9ed * Added torrent::FileList to the API.
git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@659 e378c898-3ddf-0310-93e7-cc216c733640
2006-03-30 17:57:57 +00:00
rakshasa 8ea6f78e21 * Cache the current ceiling in rak::partial_queue.
* Added "enable_trackers=yes|no" option that can turn on/off the use
of trackers on all torrents.

* Cleanup of the API, including a new TrackerList class.

* When requesting from seeders, either continue a chunk another seeder
started or try a new one. This means seeders don't end up downloading
non-rare chunks.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@658 e378c898-3ddf-0310-93e7-cc216c733640
2006-03-28 21:04:07 +00:00
rakshasa a811f53301 * Applied a patch from josef that cleand up the chunks seen window.
* More work on rarity-first chunk selection.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@657 e378c898-3ddf-0310-93e7-cc216c733640
2006-03-25 20:20:52 +00:00
rakshasa b3051db2b2 * Used the peer's option field when writing the handshake header
causing some peers to disconnect.

* Added rak::partial_priority class for efficient caching of chunks
indices based on rarity.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@656 e378c898-3ddf-0310-93e7-cc216c733640
2006-03-24 21:24:24 +00:00
rakshasa f953c8935e * Added the rarity of chunks to ChunkStatistics, only non-complete
peers. This will be even more lazy and only do this when needed.

* 'i' key in the download view will show rarity of pieces.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@655 e378c898-3ddf-0310-93e7-cc216c733640
2006-03-22 21:13:34 +00:00
rakshasa 14475fd4c1 * Moved Listen to ConnectionManager and use a single port rather than
cache it in each download.

* Set classic locale on various streams.

* Added ChunkStatistic class that will keep track of the number of
each chunk, and how many seeders there are.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@654 e378c898-3ddf-0310-93e7-cc216c733640
2006-03-21 20:37:00 +00:00
rakshasa 86a3f868df * Added "send_buffer_size" and "receive_buffer_size" options that set
the socket SND/RCBBUF sizes.

* Added slot for connection filtering.

* Added closing torrents with ^K and did some cleanup of the torrent
state code.

* Moved various socket setup to HandshakeManager.

* Added a baseline for the uploaded amount that resets every time the
torrent restarts, thereby sending only the amount uploaded since the
last restart.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@652 e378c898-3ddf-0310-93e7-cc216c733640
2006-03-18 00:55:50 +00:00
rakshasa 1c55348d45 * Moved {bind,local}_address() to ConnectionManager.
* Various other API cleanups.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@651 e378c898-3ddf-0310-93e7-cc216c733640
2006-03-15 23:25:19 +00:00
rakshasa 571fe8b2f4 * Changed to using sockaddr* in libtorrent's api.
* Prepared SocketManager for inclusion in the api.

* From <nornagon@gmail.com>: bound some control keys in text input.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@650 e378c898-3ddf-0310-93e7-cc216c733640
2006-03-15 16:22:40 +00:00
rakshasa 6822261199 * Piece request messages didn't get read when they were the only
message in the buffer, it required an additional byte beyond the size
of the request body.

* More work on ClientInfo.

* Bound 'k' to disconnecting a peer. Consider a better key.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@647 e378c898-3ddf-0310-93e7-cc216c733640
2006-03-06 20:43:44 +00:00
rakshasa b00d083ac2 * Renamed TrackerInfo to DownloadInfo, moved it to DownloadMain and
cleaned up DownloadWrapper etc.

* Resume total upload from the client rather than
torrent::Download::hash_resume_load(...).

* Show client names and versions. (incomplete)


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@646 e378c898-3ddf-0310-93e7-cc216c733640
2006-03-01 20:48:54 +00:00
rakshasa c77ecb034f * Added API for getting the complete, incomplete and downloaded stats
received from trackers. Display them in the tracker list.

* Fixed a bug introduced by the TrackerInfo* id change that caused
handshakes to hold old pointer. They now get removed when a download
is erased.

* Some cleanup of DownloadWrapper initialization.

* Moved bind and local address to from Manager to SocketManager.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@645 e378c898-3ddf-0310-93e7-cc216c733640
2006-02-28 13:20:52 +00:00
rakshasa 1e5146121e * Added "-O" flag that takes a single option, allowing ','.
* Added the errno message when a file in a torrent could not be opened.

* Added torrent::Object class which will be replacing torrent::Bencode.

* Ported to Cygwin, patch supplied by Jussi Kivilinna
<jussi.kivilinna@mbnet.fi>.

* Update display before entering the main loop, so it won't seem to be
blocking when loading torrents.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@637 e378c898-3ddf-0310-93e7-cc216c733640
2006-02-16 14:57:41 +00:00
rakshasa e5c5f7ecb1 * Remove stale lock files if it is held by the same hostname and the
pid is not running.

* Added rak::timer::from_seconds(uint32_t) and converted all uses to
this to avoid overflows etc.

* For each cycle through the tracker list without any successfull
connections, increase the timeout by 20 seconds.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@635 e378c898-3ddf-0310-93e7-cc216c733640
2006-02-09 19:18:26 +00:00
rakshasa 126bb511b8 * Applied patch from Diego 'Flameeyes' Petteno <flameeyes@gentoo.org>
that adds the "unused" attribute to some function parameters and minor
cleanups of configure.ac.

* Added inttypes.h to command_scheduler.h.

* Bumped to version 0.8.5/0.4.5.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@634 e378c898-3ddf-0310-93e7-cc216c733640
2006-02-05 01:43:38 +00:00
rakshasa 68502367ec * Don't show ETA on finished and stopped torrents.
* Added percentage completed to active unfinished torrents.

* Re-enabled different seeding and leeching priorities.

* Make a temporary container in AvailableList::insert(AddressList*)
when doing std::set_differernce. AvailableList's std::vector would
resize and cause invalidated iterators to be used.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@630 e378c898-3ddf-0310-93e7-cc216c733640
2006-02-04 19:18:41 +00:00
rakshasa 6f44f8f920 * Make DownloadStore::save(...) validate the new file by loading the
bencoded data.

* Make it safe to remove torrents that are selected.

* Delete the rtorrent and libtorrent sections when loading non-session
torrents.

* Added ^O to change a torrent's root dir, ^P to set a variable.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@628 e378c898-3ddf-0310-93e7-cc216c733640
2006-01-27 20:16:52 +00:00
rakshasa 305e3bdf2b * ChunkSelector selected from outside the priority ranges due to
~(char)0 giving an inverted integer rather than char.

* Fixed a segfault due to too small screen size, snprintf returns the
number of bytes that could have been written rather than how much
actually was.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@626 e378c898-3ddf-0310-93e7-cc216c733640
2006-01-24 20:05:36 +00:00