ClientApp
, CompleteListener
public class SnarkManager extends java.lang.Object implements CompleteListener, ClientApp
修飾子とタイプ | フィールド | 説明 |
---|---|---|
static java.lang.String |
CONFIG_DIR_SUFFIX |
|
static java.lang.String |
DEFAULT_AUTO_START |
|
static java.lang.String |
DEFAULT_BACKUP_TRACKER |
URL.
|
static int |
DEFAULT_MAX_UP_BW |
|
static int |
DEFAULT_REFRESH_DELAY_SECS |
|
static int |
DEFAULT_STARTUP_DELAY |
|
static java.lang.String |
DEFAULT_THEME |
|
static java.util.Set<java.lang.String> |
DEFAULT_TRACKER_ANNOUNCES |
|
static int |
DEFAULT_TUNNEL_QUANTITY |
|
static java.util.Set<java.lang.String> |
KNOWN_OPENTRACKERS |
host names for config form
|
static int |
MAX_FILES_PER_TORRENT |
hardcoded for sanity.
|
static int |
MIN_UP_BW |
|
static java.lang.String |
PROP_AUTO_START |
|
static java.lang.String |
PROP_COLLAPSE_PANELS |
|
static java.lang.String |
PROP_DIR |
|
static java.lang.String |
PROP_FILES_PUBLIC |
|
static java.lang.String |
PROP_I2CP_HOST |
|
static java.lang.String |
PROP_I2CP_OPTS |
|
static java.lang.String |
PROP_I2CP_PORT |
|
static java.lang.String |
PROP_OLD_AUTO_START |
|
static java.lang.String |
PROP_OPENTRACKERS |
|
static java.lang.String |
PROP_PAGE_SIZE |
|
static java.lang.String |
PROP_PRIVATETRACKERS |
|
static java.lang.String |
PROP_REFRESH_DELAY |
|
static java.lang.String |
PROP_STARTUP_DELAY |
|
static java.lang.String |
PROP_THEME |
|
static java.lang.String |
PROP_TRACKERS |
comma delimited list of name=announceURL=baseURL for the trackers to be displayed
|
static java.lang.String |
PROP_UPBW_MAX |
|
static java.lang.String |
PROP_UPLOADERS_TOTAL |
|
static java.lang.String |
RC_PROP_THEME |
|
static java.lang.String |
RC_PROP_UNIVERSAL_THEMING |
コンストラクタ | 説明 |
---|---|
SnarkManager(I2PAppContext ctx) |
For embedded.
|
SnarkManager(I2PAppContext ctx,
java.lang.String ctxPath,
java.lang.String ctxName) |
For webapp.
|
修飾子とタイプ | メソッド | 説明 |
---|---|---|
void |
addDownloader(Snark torrent) |
Add and start a FetchAndAdd task.
|
void |
addMagnet(java.lang.String name,
byte[] ih,
java.lang.String trackerURL,
boolean updateStatus) |
Add a torrent with the info hash alone (magnet / maggot)
|
Snark |
addMagnet(java.lang.String name,
byte[] ih,
java.lang.String trackerURL,
boolean updateStatus,
boolean autoStart,
java.io.File dataDir,
CompleteListener listener) |
Add a torrent with the info hash alone (magnet / maggot)
External use is for UpdateRunner.
|
void |
addMagnet(java.lang.String name,
byte[] ih,
java.lang.String trackerURL,
boolean updateStatus,
java.io.File dataDir) |
Add a torrent with the info hash alone (magnet / maggot)
|
void |
addMessage(java.lang.String message) |
Use if it does not include a link.
|
void |
addMessage(Snark snark,
java.lang.String message) |
A Snark.CompleteListener method.
|
void |
addMessageNoEscape(java.lang.String message) |
Use if it includes a link.
|
boolean |
addTorrent(MetaInfo metainfo,
BitField bitfield,
java.lang.String filename,
java.io.File baseFile,
boolean dontAutoStart) |
Add a torrent from a MetaInfo.
|
boolean |
areFilesPublic() |
|
void |
clearMessages() |
|
void |
clearMessages(int id) |
Clear through this id
|
void |
copyAndAddTorrent(java.io.File fromfile,
java.lang.String filename,
java.io.File dataDir) |
Add a torrent from a file not in the torrent directory.
|
void |
deleteMagnet(Snark snark) |
Stop and delete a torrent running in magnet mode
|
void |
fatal(Snark snark,
java.lang.String error) |
A Snark.CompleteListener method.
|
java.io.File |
getConfigDir() |
For RPC
|
java.io.File |
getDataDir() |
|
java.lang.String |
getDisplayName() |
ClientApp method.
|
java.util.List<UIMessages.Message> |
getMessages() |
newest last
|
java.lang.String |
getName() |
ClientApp method.
|
int |
getPageSize() |
For GUI
|
java.util.List<java.lang.String> |
getPrivateTrackers() |
|
int |
getRefreshDelaySeconds() |
|
long[] |
getSavedAddedAndCompleted(Snark snark) |
Get setting for a torrent from the config file.
|
CommentSet |
getSavedComments(Snark snark) |
The conmments for a torrent
|
boolean |
getSavedCommentsEnabled(Snark snark) |
Get setting for comments enabled from the config file.
|
boolean |
getSavedPreserveNamesSetting(Snark snark) |
Get setting for a torrent from the config file.
|
BitField |
getSavedTorrentBitField(Snark snark) |
Get the saved bitfield for a torrent from the config file.
|
long |
getSavedTorrentTime(Snark snark) |
Get the timestamp for a torrent from the config file.
|
long |
getSavedUploaded(Snark snark) |
Get setting for a torrent from the config file.
|
java.util.List<Tracker> |
getSortedTrackers() |
Sorted copy
|
ClientAppState |
getState() |
ClientApp method.
|
java.lang.String |
getTheme() |
Get current theme.
|
java.lang.String[] |
getThemes() |
Get all themes
|
Snark |
getTorrent(java.lang.String filename) |
Grab the torrent given the (canonical) filename of the .torrent file
|
Snark |
getTorrentByBaseName(java.lang.String filename) |
Grab the torrent given the base name of the storage
|
Snark |
getTorrentByInfoHash(byte[] infohash) |
Grab the torrent given the info hash
|
java.util.Collection<Snark> |
getTorrents() |
Unmodifiable
|
java.util.Map<java.lang.String,Tracker> |
getTrackerMap() |
Unsorted map of name to Tracker object
Modifiable, not a copy
|
java.util.Collection<Tracker> |
getTrackers() |
Unsorted, do not modify
|
boolean |
getUniversalTheming() |
|
java.lang.String |
gotMetaInfo(Snark snark) |
We transitioned from magnet mode, we have now initialized our
metainfo and storage.
|
void |
gotPiece(Snark snark) |
A Snark.CompleteListener method.
|
boolean |
isCollapsePanelsEnabled() |
|
boolean |
isSmartSortEnabled() |
|
boolean |
isStopping() |
|
java.util.Set<java.lang.String> |
listTorrentFiles() |
Set of canonical .torrent filenames that we are dealing with.
|
void |
loadConfig(java.lang.String filename) |
|
void |
loadSavedFilePriorities(Snark snark) |
Get the saved priorities for a torrent from the config file.
|
void |
locked_saveComments(Snark snark,
CommentSet comments) |
Save the conmments for a torrent
Caller must synchronize on comments.
|
void |
recheckTorrent(Snark snark) |
Threaded.
|
void |
removeMagnetStatus(byte[] ih) |
Remove the magnet marker from the config file.
|
void |
removeTorrent(java.lang.String filename) |
Stop the torrent and delete the torrent file itself, but leaving the data
behind.
|
void |
saveConfig() |
|
void |
saveMagnetStatus(byte[] ih,
java.lang.String dir,
java.lang.String trackerURL,
java.lang.String dn) |
Just remember we have it.
|
void |
saveOpenTrackers(java.util.List<java.lang.String> ot) |
|
void |
savePrivateTrackers(java.util.List<java.lang.String> pt) |
|
void |
saveTorrentStatus(Snark snark) |
Save the completion status of a torrent and other data in the config file
for that torrent.
|
void |
saveTrackerMap() |
|
void |
setDefaultTrackerMap() |
|
void |
setSavedCommentsEnabled(Snark snark,
boolean yes) |
Set setting for comments enabled in the config file.
|
boolean |
shouldAutoStart() |
|
void |
shutdown(java.lang.String[] args) |
ClientApp method.
|
void |
start() |
Caller _must_ call loadConfig(file) before this if setting new values
for i2cp host/port or i2psnark.dir
|
void |
startAllTorrents() |
If not connected, thread it, otherwise inline
|
void |
startTorrent(byte[] infoHash) |
If not connected, thread it, otherwise inline
|
void |
startTorrent(Snark snark) |
If not connected, thread it, otherwise inline
|
void |
startup() |
ClientApp method.
|
void |
stop() |
|
void |
stopAllTorrents(boolean finalShutdown) |
Stop all running torrents, and close the tunnel after a delay
to allow for announces.
|
Snark |
stopTorrent(java.lang.String filename,
boolean shouldRemove) |
Stop the torrent, leaving it on the list of torrents unless told to remove it.
|
void |
stopTorrent(Snark torrent,
boolean shouldRemove) |
Stop the torrent, leaving it on the list of torrents unless told to remove it.
|
void |
torrentComplete(Snark snark) |
A Snark.CompleteListener method.
|
void |
updateConfig(java.lang.String dataDir,
boolean filesPublic,
boolean autoStart,
boolean smartSort,
java.lang.String refreshDelay,
java.lang.String startDelay,
java.lang.String pageSize,
java.lang.String seedPct,
java.lang.String eepHost,
java.lang.String eepPort,
java.lang.String i2cpHost,
java.lang.String i2cpPort,
java.lang.String i2cpOpts,
java.lang.String upLimit,
java.lang.String upBW,
boolean useOpenTrackers,
boolean useDHT,
java.lang.String theme,
java.lang.String lang,
boolean enableRatings,
boolean enableComments,
java.lang.String commentName,
boolean collapsePanels) |
all params may be null or need trimming
|
void |
updateStatus(Snark snark) |
A Snark.CompleteListener method.
|
I2PSnarkUtil |
util() |
hook to I2PSnarkUtil for the servlet
|
public static final java.lang.String PROP_I2CP_HOST
public static final java.lang.String PROP_I2CP_PORT
public static final java.lang.String PROP_I2CP_OPTS
public static final java.lang.String PROP_UPLOADERS_TOTAL
public static final java.lang.String PROP_UPBW_MAX
public static final java.lang.String PROP_DIR
public static final java.lang.String PROP_FILES_PUBLIC
public static final java.lang.String PROP_OLD_AUTO_START
public static final java.lang.String PROP_AUTO_START
public static final java.lang.String DEFAULT_AUTO_START
public static final java.lang.String PROP_STARTUP_DELAY
public static final java.lang.String PROP_REFRESH_DELAY
public static final java.lang.String PROP_PAGE_SIZE
public static final java.lang.String RC_PROP_THEME
public static final java.lang.String RC_PROP_UNIVERSAL_THEMING
public static final java.lang.String PROP_THEME
public static final java.lang.String DEFAULT_THEME
public static final java.lang.String PROP_COLLAPSE_PANELS
public static final java.lang.String PROP_OPENTRACKERS
public static final java.lang.String PROP_PRIVATETRACKERS
public static final int MIN_UP_BW
public static final int DEFAULT_MAX_UP_BW
public static final int DEFAULT_STARTUP_DELAY
public static final int DEFAULT_REFRESH_DELAY_SECS
public static final int DEFAULT_TUNNEL_QUANTITY
public static final java.lang.String CONFIG_DIR_SUFFIX
public static final java.lang.String DEFAULT_BACKUP_TRACKER
public static final java.util.Set<java.lang.String> DEFAULT_TRACKER_ANNOUNCES
public static final java.util.Set<java.lang.String> KNOWN_OPENTRACKERS
public static final java.lang.String PROP_TRACKERS
public static final int MAX_FILES_PER_TORRENT
public SnarkManager(I2PAppContext ctx)
public SnarkManager(I2PAppContext ctx, java.lang.String ctxPath, java.lang.String ctxName)
ctxPath
- generally "/i2psnark"ctxName
- generally "i2psnark"public void start()
public void stop()
public boolean isStopping()
public void startup()
public void shutdown(java.lang.String[] args)
public ClientAppState getState()
public java.lang.String getName()
public java.lang.String getDisplayName()
getDisplayName
インタフェース内 ClientApp
public I2PSnarkUtil util()
public void addMessage(java.lang.String message)
public void addMessageNoEscape(java.lang.String message)
public java.util.List<UIMessages.Message> getMessages()
public void clearMessages()
public void clearMessages(int id)
public boolean areFilesPublic()
public boolean shouldAutoStart()
public boolean isSmartSortEnabled()
public boolean isCollapsePanelsEnabled()
public int getRefreshDelaySeconds()
public int getPageSize()
public java.io.File getDataDir()
public java.io.File getConfigDir()
public CommentSet getSavedComments(Snark snark)
getSavedComments
インタフェース内 CompleteListener
public void locked_saveComments(Snark snark, CommentSet comments)
locked_saveComments
インタフェース内 CompleteListener
comments
- non-nullpublic void loadConfig(java.lang.String filename)
filename
- null to set initial defaultspublic boolean getUniversalTheming()
public java.lang.String getTheme()
public java.lang.String[] getThemes()
public void updateConfig(java.lang.String dataDir, boolean filesPublic, boolean autoStart, boolean smartSort, java.lang.String refreshDelay, java.lang.String startDelay, java.lang.String pageSize, java.lang.String seedPct, java.lang.String eepHost, java.lang.String eepPort, java.lang.String i2cpHost, java.lang.String i2cpPort, java.lang.String i2cpOpts, java.lang.String upLimit, java.lang.String upBW, boolean useOpenTrackers, boolean useDHT, java.lang.String theme, java.lang.String lang, boolean enableRatings, boolean enableComments, java.lang.String commentName, boolean collapsePanels)
public java.util.List<java.lang.String> getPrivateTrackers()
public void saveOpenTrackers(java.util.List<java.lang.String> ot)
ot
- null to restore defaultpublic void savePrivateTrackers(java.util.List<java.lang.String> pt)
pt
- null ok, default is nonepublic void saveConfig()
public java.util.Set<java.lang.String> listTorrentFiles()
public Snark getTorrent(java.lang.String filename)
public java.util.Collection<Snark> getTorrents()
public Snark getTorrentByBaseName(java.lang.String filename)
public Snark getTorrentByInfoHash(byte[] infohash)
public void addMagnet(java.lang.String name, byte[] ih, java.lang.String trackerURL, boolean updateStatus)
name
- hex or b32 name from the magnet linkih
- 20 byte info hashtrackerURL
- may be nullupdateStatus
- should we add this magnet to the config file,
to save it across restarts, in case we don't get
the metadata before shutdown?java.lang.RuntimeException
- via Snark.fatal()public void addMagnet(java.lang.String name, byte[] ih, java.lang.String trackerURL, boolean updateStatus, java.io.File dataDir)
name
- hex or b32 name from the magnet linkih
- 20 byte info hashtrackerURL
- may be nullupdateStatus
- should we add this magnet to the config file,
to save it across restarts, in case we don't get
the metadata before shutdown?dataDir
- must exist, or null to default to snark data directoryjava.lang.RuntimeException
- via Snark.fatal()public Snark addMagnet(java.lang.String name, byte[] ih, java.lang.String trackerURL, boolean updateStatus, boolean autoStart, java.io.File dataDir, CompleteListener listener)
name
- hex or b32 name from the magnet linkih
- 20 byte info hashtrackerURL
- may be nullupdateStatus
- should we add this magnet to the config file,
to save it across restarts, in case we don't get
the metadata before shutdown?dataDir
- must exist, or null to default to snark data directorylistener
- to intercept callbacks, should pass through to thisjava.lang.RuntimeException
- via Snark.fatal()public void deleteMagnet(Snark snark)
snark
- a torrent with a fake file name ("Magnet xxxx")public void addDownloader(Snark torrent)
torrent
- must be instanceof FetchAndAddjava.lang.RuntimeException
- via Snark.fatal()?public boolean addTorrent(MetaInfo metainfo, BitField bitfield, java.lang.String filename, java.io.File baseFile, boolean dontAutoStart) throws java.io.IOException
metainfo
- the metainfo for the torrentbitfield
- the current completion status of the torrent, or nullfilename
- the absolute path to save the metainfo to, generally ending in ".torrent", which is also the name of the torrent
Must be a filesystem-safe name. If null, will generate a name from the metainfo.baseFile
- may be null, if so look in rootDataDirjava.lang.RuntimeException
- via Snark.fatal()java.io.IOException
public void copyAndAddTorrent(java.io.File fromfile, java.lang.String filename, java.io.File dataDir) throws java.io.IOException
fromfile
- where the file is now, presumably in a temp directory somewherefilename
- the absolute path to save the metainfo to, generally ending in ".torrent", which is also the name of the torrent
Must be a filesystem-safe name.dataDir
- must exist, or null to default to snark data directoryjava.lang.RuntimeException
- via Snark.fatal()java.io.IOException
public long getSavedTorrentTime(Snark snark)
getSavedTorrentTime
インタフェース内 CompleteListener
public BitField getSavedTorrentBitField(Snark snark)
getSavedTorrentBitField
インタフェース内 CompleteListener
public void loadSavedFilePriorities(Snark snark)
public boolean getSavedPreserveNamesSetting(Snark snark)
getSavedPreserveNamesSetting
インタフェース内 CompleteListener
public long getSavedUploaded(Snark snark)
getSavedUploaded
インタフェース内 CompleteListener
public long[] getSavedAddedAndCompleted(Snark snark)
public boolean getSavedCommentsEnabled(Snark snark)
public void setSavedCommentsEnabled(Snark snark, boolean yes)
public void saveTorrentStatus(Snark snark)
public void saveMagnetStatus(byte[] ih, java.lang.String dir, java.lang.String trackerURL, java.lang.String dn)
dir
- may be nulltrackerURL
- may be nulldn
- may be nullpublic void removeMagnetStatus(byte[] ih)
public Snark stopTorrent(java.lang.String filename, boolean shouldRemove)
public void stopTorrent(Snark torrent, boolean shouldRemove)
public void removeTorrent(java.lang.String filename)
public void torrentComplete(Snark snark)
torrentComplete
インタフェース内 CompleteListener
public void updateStatus(Snark snark)
updateStatus
インタフェース内 CompleteListener
public java.lang.String gotMetaInfo(Snark snark)
gotMetaInfo
インタフェース内 CompleteListener
public void fatal(Snark snark, java.lang.String error)
fatal
インタフェース内 CompleteListener
public void addMessage(Snark snark, java.lang.String message)
addMessage
インタフェース内 CompleteListener
public void gotPiece(Snark snark)
gotPiece
インタフェース内 CompleteListener
public java.util.Map<java.lang.String,Tracker> getTrackerMap()
public java.util.Collection<Tracker> getTrackers()
public java.util.List<Tracker> getSortedTrackers()
public void setDefaultTrackerMap()
public void saveTrackerMap()
public void startTorrent(byte[] infoHash)
java.lang.RuntimeException
- via Snark.fatal()public void startTorrent(Snark snark)
java.lang.RuntimeException
- via Snark.fatal()public void startAllTorrents()
public void stopAllTorrents(boolean finalShutdown)
finalShutdown
- if true, sleep at the end if any torrents were runningpublic void recheckTorrent(Snark snark)