* Changed DownloadList slot_map's to commands. FileList::set_root_dir(const std::string& path) ????? ChunkList::get(size_type index, bool writable) <- Figure out how to make it work with hash checking when you can't open the files... The error code hack probably isn't right. // Missing file, skip the hash check. <- this should skip all chunks touched by that file. - add Command::call_void? - Heat damage as a way to restrict large modules on smaller ships. - Wikipedia: localize the units used. http://aadx.ost-fansub.net/ - Check if it is possible to make macports fetch all uninstalled dependencies before build. - Some kind of weird error when we restart rtorrent before a zero-length file has been changed? Seems to cause it not to be properly resized or something. - Make the command_map_data_type typedef's use a common template parameter. === Design notes for multi-layered torrent state control === The queue shares some common characteristics with the hash-queue. Yet we probably can't put them togheter as hashing and being in the queue are separate states. We also need to support multiple queues. This means we can implement 'forced' and 'disabled' as two queues. Stopping/starting a torrent would now then involve adding it to the appropriate queue, which would put in motion the DL related actions. But how would this relate to the download commands? Well, to allow the queues to be as scriptable as possible, we'd need to keep the DL related commands as-is. We'd also add a download command for moving it to a new queue, and make a couple of helper functions. === - Look at the current View thing and whether you need to add support for commands on insert/erase/stuff, and possibly improve the current code so updates can be done efficiently. Kinda like subscribing to events, thus insert and removal from current queues will be much more efficient. { - Add a command the cleans up strings for proper sorting. ? Then make it so that the Views are populated based completely on events, rather than filtering every single type of event. - Make filter_on call repeatedly with a single string, rather than accepting a list. - Do we need to build up command 'chains' now? - Consider the need to make the views guaranteed large enough for inserts, so that if we iterate through a View doing actions on stuff it will remain safe? - Do we want to keep the current design of a vector holding all downloads? This does make it better at handling insert/remove/filter, but worse at dealing with large sets. } ! Once the Views are up to snuff, create the started and stopped queues and migrate the current code. { * Change start/stop functions into moving in/out of the Views. Events to those views. } - Add the queue View and make it work on magic faire dust and old socks. - Make upload/download slots work on the heuristics of the scheudlers. - Commit dht-align patch with comment on alignment req. - Add XMLRPC version information? - Add proper (and non-blocking) fallocate support. This also needs to check how much space is left. The interface needs to allow us to say if we want to do blocking or non-blocking allocate, etc. Allocate should probably be called when we first try to write something to a file. - Add a 'tweaking upload/download slots' guide. - Trim ending / in filenames? Look closer at this... It seems we're not validating the path elements properly. E.g path and name in different encodings. Should we move this closer to the place it is used, like when we freeze the paths? That would make sure we catch weird loopholes, though might want to check the torrent data on load to make sure we don't let scripts read bad paths. - Fix the 'mtime' not being updated when just moving a file into a dir thing. - Move SACompact somewhere sane. === Move DL slots to pure commands === ui/download_list.cc: Change the erase slot to a command which is internal, and this command needs to be possible to enable/disable by setting/unsetting a DL target. (Unless we access DL through control->ui() instead?) --- === Improve command efficiency on multiple calls with different targets === - Create a way to convert a string to a set of command objects and arguments, which is not tied to any target. This would not expand any $ in arguments. --- === Pass the target_type thing to all the CommandSlot<...> functions === - Remove CommandSlot specialisation and use an in-class template struct to define the right type. That struct will also wrap the call to the slot, thus allowing reuse of the same code. - Figure out how to move over to using only target_type's from CommandMap. --- - Make the paypal link more prominent. design of everyday things #1243 - Check if write failure doesn't get properly detected. - Write a note about {} now being sensetive to whitespace, etc. - To make the { syntax proper, it needs to read the contents directly to a list of lists of commands+args. rtorrent: priority_queue_insert(...) received a bad timer. reproducible when I force a hash check on a torrent with nothing downloaded rakshasa: ElementDownloadList::receive_command should check if any download is selected but now I got TrackerList::receive_failed(...) called but the iterator is invalid." rakshasa: it'd be nice to have something like import_nothrow that logs errors and continues instead of aborting like try_import http://libtorrent.rakshasa.no/ticket/1213 - Change key presses in element_download_list.cc to commands. - Fix view_set. This involves adding a map of views, check also iterator sanity. - Consider if the mtime resolution is enough to avoid race conditions on the prune cache. ElementDownloadList::ElementDownloadList() - FIXME - Add the 'set queue_create/resize' flags. - directory_entry::is_file() const { return true; } - Make Pool lazily created. - Fix the api for allocating sockets. Make this a helper function or something? - The global up/down slot limit only gets set after throttle is updated... - Global up/down for high speeds is insane... Also, move these into libtorrent helper functions. - The download slot limit doesn't work properly when we try to limit the amount of memory being limited, as it will accept downloading. - Extend Object to support floats? - Look into the problem of transfers during (inital) hash check. Could we perhaps allow pausing things while checking? - Add option to save resume data on session auto save. - Unallocate blocks that are in peers that haven't transfered data in a couple ticks. --- API redesign --- - Refactor the Download class. This should probably merge Download and DownloadWrapper. - Create a download list class. - Remove Download::set_connection_type. - Move stuff into a global torrent object. - Change Peer to PeerConnection. --- or the bug with pieces getting stuck in the transfer list after we receive a choke I had no patch for that, you just need to call download_queue()->cancel() twice in PCL::read_message Seems the RequestList::cancel thing is kinda bad, as it does both 'cancel queued' and 'clear canceled'. - Add support for diffs to torrents and saved infohash, so we improve shutdown time.