package org.limewire.libtorrent; import org.limewire.bittorrent.TorrentStatus; import org.limewire.libtorrent.callback.AlertCallback; import com.sun.jna.Library; import com.sun.jna.Pointer; import com.sun.jna.WString; import com.sun.jna.ptr.IntByReference; /** * Interface definition for accessing the C LibTorrentWrapper library. */ interface LibTorrent extends Library { /** * Inititalizes the libtorrent session to use the given path as the default * download location. */ public WrapperStatus init(LibTorrentSettings libTorrentSettings); /** * Adds a torrent to the libtorrent session. This can be done with only a * sha1 and trackerURI. optionally a path to a fast Resume data file can be * included to enable starting the torrent faster. */ public WrapperStatus add_torrent(String sha1, String trackerURI, WString torrentPath, WString savePath, WString fastResumeData); /** * Pauses the torrent with the given sha1 */ public WrapperStatus pause_torrent(String id); /** * Resumes the torrent with the given sha1 */ public WrapperStatus resume_torrent(String id); /** * Forces the torrent to reannounce itself to the tracker. */ public WrapperStatus force_reannounce(String id); /** * Scrapes the tracker to get updated torrent statistics. */ public WrapperStatus scrape_tracker(String id); /** * Used on shutdown to freeze all torrents and wait while saving fast resume * data for each. */ public WrapperStatus freeze_and_save_all_fast_resume_data(AlertCallback alertCallback); /** * Reads any stored alerts in the session, having there data coming in * through the callback. */ public WrapperStatus get_alerts(AlertCallback alertCallback); /** * Set a callback for the JNA to call back into the java code in order to * filter out bad IP addresses of peers */ public WrapperStatus set_ip_filter(IpFilterCallback ipFilterCallback); /** * Fills in the Libtorrent status struct for the torrent with the given sha1 */ public WrapperStatus get_torrent_status(String id, TorrentStatus status); /** * Returns the number of peers for the torrent with the given sha1 */ public WrapperStatus get_num_peers(String id, IntByReference numPeers); /** * Retrieves the peers for the torrent with the given sha1 */ public WrapperStatus get_peers(String id, Pointer[] torrentPeers, int numPeers); /** * Tells the session to save the fast resume data for the torrent with the * given sha1. */ public WrapperStatus signal_fast_resume_data_request(String id); /** * Clears the error status on a torrent and attempts to restart it. */ public WrapperStatus clear_error_and_retry(String id); /** * Removes the torrent with the given sha1 from the session. */ public WrapperStatus remove_torrent(String id); /** * Moves the torrent with the given sha1 from its current location to the * location defined in absolutePath. */ public WrapperStatus move_torrent(String id, WString absolutePath); /** * Aborts all of the torrents in the session. */ public WrapperStatus abort_torrents(); /** * Frees the given torrentStatus object from memory. */ public WrapperStatus free_torrent_status(Pointer ptr); /** * Updates the sessions settings using the provided settings structure. */ public WrapperStatus update_settings(LibTorrentSettings libTorrentSettings); /** * Starts the dht */ public WrapperStatus start_dht(WString dht_state_file_path); /** * Stops the dht */ public WrapperStatus stop_dht(); /** * Adds the given node to the dht. */ public WrapperStatus add_dht_node(String address, int port); /** * Adds the given router to the dht. */ public WrapperStatus add_dht_router(String address, int port); /** * Saves the state of the dht in the specified file. */ public WrapperStatus save_dht_state(WString dhtStateFilePath); /** * Starts the upnp service. */ public WrapperStatus start_upnp(); /** * Stops the upnp service. */ public WrapperStatus stop_upnp(); /** * Starts the local service discovery service */ public WrapperStatus start_lsd(); /** * Stops the local service discovery service */ public WrapperStatus stop_lsd(); /** * Starts the natpmp service. */ public WrapperStatus start_natpmp(); /** * Stops the natpmp service. */ public WrapperStatus stop_natpmp(); /** * Frees the peers from memory. */ public WrapperStatus free_peers(Pointer[] torrentPeersPointers, int length); /** * Set the target seed ratio for this torrent. */ public WrapperStatus set_seed_ratio(String id, float seed_ratio); /** * Sets the upload limit on this Torrent. If this limit is higher than the * global upload limit, it will not go higher than that limit. */ public WrapperStatus set_upload_limit(String id, int limit); /** * Returns the upload limit for this Torrent. If the global upload limit is * being used, this will return 0. */ public WrapperStatus get_upload_limit(String id, IntByReference limit); /** * Sets the download limit on this Torrent. If this limit is higher than the * global download limit, it will not go higher than that limit. */ public WrapperStatus set_download_limit(String id, int limit); /** * Returns the download limit for this Torrent. If the global download limit * is being used, this will return 0. */ public WrapperStatus get_download_limit(String id, IntByReference limit); /** * Sets the file priorities for the given torrent. */ public WrapperStatus set_file_priorities(String id, int[] priorities, int num_priorities); /** * Returns the number of files for the given torrent. */ public WrapperStatus get_num_files(String id, IntByReference numFiles); /** * Returns the files for the given torrent. */ public WrapperStatus get_files(String id, Pointer[] filePointers); /** * Marks this torrent as automanged or not. */ public WrapperStatus set_auto_managed_torrent(String sha1, boolean auto_managed); /** * This is a simple function used to test that the loaded library is * working. */ public void echo(String message); /** * Sets the file priority for the given torrent and torrent file index to * the given priority. */ public WrapperStatus set_file_priority(String sha1, int index, int priority); /** * Checks if the given torrent has metadata yet. */ public WrapperStatus has_metadata(String sha1, IntByReference has_metadata); /** * Checks if the given torrent is Valid. */ public WrapperStatus is_valid(String sha1, IntByReference is_valid); /** * Returns the TorrentInfo for the given torrent. */ public WrapperStatus get_torrent_info(String sha1, LibTorrentInfo torrentInfo); /** * Frees memory for the torrent info. */ public WrapperStatus free_torrent_info(Pointer pointer); /** * Saves the fast resume data for the given alert. */ public WrapperStatus save_fast_resume_data(LibTorrentAlert alert, WString filePath); /** * Sets the peer proxy for the peer connections. */ public WrapperStatus set_peer_proxy(LibTorrentProxySetting proxySetting); /** * Sets the dht proxy for dht connections. */ public WrapperStatus set_dht_proxy(LibTorrentProxySetting proxySetting); /** * Sets the webseed proxy for the webseed connections. */ public WrapperStatus set_web_seed_proxy(LibTorrentProxySetting proxySetting); /** * Sets the tracker proxy for tracker connections. */ public WrapperStatus set_tracker_proxy(LibTorrentProxySetting proxySetting); /** * Passes back the states of each piece in the torrent. */ public WrapperStatus get_pieces_status(String sha1, LibTorrentPiecesInfoContainer info); /** * Frees the memory consumed by the pieces data memory allocated by * {@link #get_pieces_status()} */ public WrapperStatus free_pieces_info(Pointer pointer); /** * Adds a tracker to a torrent at a given tier. */ public WrapperStatus add_tracker(String sha1, String url, int tier); /** * Removes any tracker with the matching name and tier. */ public WrapperStatus remove_tracker(String sha1, String url, int tier); /** * Gets the current number of trackers being used by a torrent. */ public WrapperStatus get_num_trackers(String sha1, IntByReference numTrackers); /** * Gets the current list of trackers being used by a torrent. */ public WrapperStatus get_trackers(String sha1, Pointer[] trackers, int numTrackers); /** * Frees the data consumed for tracker data. */ public WrapperStatus free_trackers(Pointer[] trackers, int numTrackers); // public WrapperStatus queue_tracker_scrape_request(String sha1, String trackerUri, TrackerScrapeRequestCallback callback); }