public class Router extends Object implements RouterClock.ClockShiftListener
Modifier and Type | Field and Description |
---|---|
Object |
_familyKeyLock |
static char |
CAPABILITY_BW_UNLIMITED |
static char |
CAPABILITY_BW12 |
static char |
CAPABILITY_BW128 |
static char |
CAPABILITY_BW256 |
static char |
CAPABILITY_BW32 |
static char |
CAPABILITY_BW512 |
static char |
CAPABILITY_BW64 |
static char |
CAPABILITY_NEW_TUNNEL
Deprecated.
unused
|
static char |
CAPABILITY_REACHABLE |
static char |
CAPABILITY_UNREACHABLE |
static long |
CLOCK_FUDGE_FACTOR
let clocks be off by 1 minute
|
static int |
COALESCE_TIME
coalesce stats this often - should be a little less than one minute, so the graphs get updated
|
static int |
DEFAULT_SHARE_PERCENTAGE |
static int |
EXIT_GRACEFUL
shut down after all tunnels are gone
|
static int |
EXIT_GRACEFUL_RESTART
shut down after all tunnels are gone, and tell the wrapper to restart
|
static int |
EXIT_HARD
shut down immediately
|
static int |
EXIT_HARD_RESTART
shut down immediately, and tell the wrapper to restart
|
static int |
EXIT_OOM
shut down immediately
|
static String |
PROP_BANDWIDTH_SHARE_PERCENTAGE |
static String |
PROP_CONFIG_FILE |
static String |
PROP_DYNAMIC_KEYS |
static String |
PROP_FORCE_BWCLASS
for testing
|
static String |
PROP_FORCE_UNREACHABLE
for testing
|
static String |
PROP_HIDDEN
this puts an 'H' in your routerInfo
|
static String |
PROP_HIDDEN_HIDDEN
this does not put an 'H' in your routerInfo
|
static String |
PROP_IB_RANDOM_KEY |
static String |
PROP_OB_RANDOM_KEY |
Object |
routerInfoFileLock
not for external use
|
static String |
UPDATE_FILE |
Constructor and Description |
---|
Router()
Instantiation only.
|
Router(Properties envProps)
Instantiation only.
|
Router(String configFilename)
Instantiation only.
|
Router(String configFilename,
Properties envProps)
Instantiation only.
|
Modifier and Type | Method and Description |
---|---|
void |
cancelGracefulShutdown()
Cancel any prior request to shut the router down gracefully.
|
static void |
clearCaches()
Not for external use.
|
void |
clockShift(long delta)
The clock shift listener.
|
EventLog |
eventLog() |
int |
get15sRate()
Max of inbound and outbound rate in bytes per second
|
int |
get15sRate(boolean outboundOnly)
When outboundOnly is false, outbound rate in bytes per second.
|
int |
get15sRateIn()
Inbound rate in bytes per second
|
int |
get1mRate()
Max of inbound and outbound rate in bytes per second
|
int |
get1mRate(boolean outboundOnly)
When outboundOnly is false, outbound rate in bytes per second.
|
int |
get1mRateIn()
Inbound rate in bytes per second
|
int |
get1sRate()
Max of inbound and outbound rate in bytes per second
|
int |
get1sRate(boolean outboundOnly)
When outboundOnly is false, outbound rate in bytes per second.
|
int |
get1sRateIn()
Inbound rate in bytes per second
|
int |
get5mRate()
Max of inbound and outbound rate in bytes per second
|
int |
get5mRate(boolean outboundOnly)
When outboundOnly is false, outbound rate in bytes per second.
|
String |
getCapabilities()
For building our RI.
|
String |
getConfigFilename() |
Map<String,String> |
getConfigMap() |
String |
getConfigSetting(String name) |
Set<String> |
getConfigSettings() |
RouterContext |
getContext()
Non-null, but take care when accessing context items before runRouter() is called
as the context will not be initialized.
|
FamilyKeyCrypto |
getFamilyKeyCrypto()
Family Key Crypto Signer / Verifier.
|
boolean |
getKillVMOnEnd()
Deprecated.
unused
|
int |
getNetworkID()
The network ID.
|
RouterInfo |
getRouterInfo()
Our current router info.
|
double |
getSharePercentage()
What fraction of the bandwidth specified in our bandwidth limits should
we allow to be consumed by participating tunnels?
|
long |
getShutdownTimeRemaining()
How long until the graceful shutdown will kill us?
|
long |
getUptime()
Wall clock uptime.
|
long |
getWhenStarted()
Used only by routerconsole..
|
boolean |
gracefulShutdownInProgress()
Is a graceful shutdown in progress? This may be cancelled.
|
boolean |
isAlive()
True during the initial start, but false during a soft restart.
|
boolean |
isFinalShutdownInProgress()
Is a final shutdown in progress? This may not be cancelled.
|
boolean |
isHidden() |
void |
killKeys()
Not for external use.
|
static void |
main(String[] args)
Usage: Router [rebuild]
No other options allowed, for now
Instantiates Router(), and either installs updates and exits,
or calls runRouter().
|
void |
readConfig()
This updates the config with all settings found in the file.
|
void |
rebuildNewIdentity()
Rebuild a new identity the hard way - delete all of our old identity
files, then reboot the router.
|
void |
rebuildRouterInfo()
Rebuild and republish our routerInfo since something significant
has changed.
|
void |
rebuildRouterInfo(boolean blockingRebuild)
Rebuild and republish our routerInfo since something significant
has changed.
|
void |
removeConfigSetting(String name)
Deprecated.
use saveConfig(String name, String value) or saveConfig(Map toAdd, Set toRemove)
|
void |
restart()
A "soft" restart, primarily of the comm system, after
a port change or large step-change in system time.
|
void |
runRouter()
This must be called after instantiation.
|
boolean |
saveConfig()
Save the current config options (returning true if save was
successful, false otherwise)
Synchronized with file read in getConfig()
|
boolean |
saveConfig(Map toAdd,
Collection<String> toRemove)
Updates the current config and then saves it.
|
boolean |
saveConfig(String name,
String value)
Updates the current config with the given key/value and then saves it.
|
int |
scheduledGracefulExitCode()
What exit code do we plan on using when we shut down (or -1, if there isn't a graceful shutdown planned)
|
void |
setConfigFilename(String filename)
Deprecated.
unused
|
void |
setConfigSetting(String name,
String value)
Deprecated.
use saveConfig(String name, String value) or saveConfig(Map toAdd, Set toRemove)
|
void |
setExplTunnelsReady()
Only for Tunnel Building, after we have non-zero-hop expl.
|
void |
setIsAlive()
Only for Restarter, after soft restart is complete.
|
void |
setKillVMOnEnd(boolean shouldDie)
Configure the router to kill the JVM when the router shuts down, as well
as whether to explicitly halt the JVM during the hard fail process.
|
void |
setNetDbReady()
Only for NetDB, after RIs are loaded.
|
void |
setRouterInfo(RouterInfo info)
Caller must ensure info is valid - no validation done here.
|
void |
shutdown(int exitCode)
Shutdown with no chance of cancellation.
|
void |
shutdown2(int exitCode)
Cancel the JVM runtime hook before calling this.
|
void |
shutdownGracefully()
Non-blocking shutdown.
|
void |
shutdownGracefully(int exitCode)
Non-blocking shutdown.
|
public final Object routerInfoFileLock
public final Object _familyKeyLock
public static final String PROP_CONFIG_FILE
public static final long CLOCK_FUDGE_FACTOR
public static final int COALESCE_TIME
public static final String PROP_HIDDEN
public static final String PROP_HIDDEN_HIDDEN
public static final String PROP_DYNAMIC_KEYS
public static final String PROP_IB_RANDOM_KEY
public static final String PROP_OB_RANDOM_KEY
public static final String UPDATE_FILE
public static final char CAPABILITY_BW12
public static final char CAPABILITY_BW32
public static final char CAPABILITY_BW64
public static final char CAPABILITY_BW128
public static final char CAPABILITY_BW256
public static final char CAPABILITY_BW512
public static final char CAPABILITY_BW_UNLIMITED
public static final String PROP_FORCE_BWCLASS
public static final char CAPABILITY_REACHABLE
public static final char CAPABILITY_UNREACHABLE
public static final String PROP_FORCE_UNREACHABLE
@Deprecated public static final char CAPABILITY_NEW_TUNNEL
public static final int EXIT_GRACEFUL
public static final int EXIT_HARD
public static final int EXIT_OOM
public static final int EXIT_HARD_RESTART
public static final int EXIT_GRACEFUL_RESTART
public static final String PROP_BANDWIDTH_SHARE_PERCENTAGE
public static final int DEFAULT_SHARE_PERCENTAGE
public Router()
IllegalStateException
- since 0.9.19 if another router with this config is runningpublic Router(Properties envProps)
envProps
- may be nullIllegalStateException
- since 0.9.19 if another router with this config is runningpublic Router(String configFilename)
configFilename
- may be nullIllegalStateException
- since 0.9.19 if another router with this config is runningpublic Router(String configFilename, Properties envProps)
configFilename
- may be nullenvProps
- may be nullIllegalStateException
- since 0.9.19 if another router with this config is runningpublic static final void clearCaches()
public void setKillVMOnEnd(boolean shouldDie)
@Deprecated public boolean getKillVMOnEnd()
public String getConfigFilename()
@Deprecated public void setConfigFilename(String filename)
@Deprecated public void setConfigSetting(String name, String value)
@Deprecated public void removeConfigSetting(String name)
public RouterInfo getRouterInfo()
public void setRouterInfo(RouterInfo info)
public long getWhenStarted()
public long getUptime()
public int getNetworkID()
public RouterContext getContext()
public void runRouter()
IllegalStateException
- if called more than oncepublic void readConfig()
public boolean isAlive()
public void setIsAlive()
public void setNetDbReady()
public void setExplTunnelsReady()
public boolean gracefulShutdownInProgress()
public boolean isFinalShutdownInProgress()
public void rebuildRouterInfo()
public void rebuildRouterInfo(boolean blockingRebuild)
public FamilyKeyCrypto getFamilyKeyCrypto()
public String getCapabilities()
public boolean isHidden()
public EventLog eventLog()
public void killKeys()
public void rebuildNewIdentity()
public void shutdown(int exitCode)
exitCode
- one of the EXIT_* values, non-negativeIllegalArgumentException
- if exitCode negativepublic void shutdown2(int exitCode)
exitCode
- one of the EXIT_* values, non-negativeIllegalArgumentException
- if exitCode negativepublic void shutdownGracefully()
shutdown(int)
. If you want to cancel
the graceful shutdown (prior to actual shutdown ;), call
cancelGracefulShutdown()
.
Exit code will be EXIT_GRACEFUL.
Shutdown delay will be from zero to 11 minutes.public void shutdownGracefully(int exitCode)
exitCode
- one of the EXIT_* values, non-negativeIllegalArgumentException
- if exitCode negativepublic void cancelGracefulShutdown()
public int scheduledGracefulExitCode()
public long getShutdownTimeRemaining()
public boolean saveConfig()
public boolean saveConfig(String name, String value)
name
- setting to add/change/remove before savingvalue
- if non-null, updated value; if null, setting will be removedpublic boolean saveConfig(Map toAdd, Collection<String> toRemove)
toAdd
- settings to add/change before saving, may be null or emptytoRemove
- settings to remove before saving, may be null or emptypublic void clockShift(long delta)
clockShift
in interface RouterClock.ClockShiftListener
delta
- The system clock and adjusted clock just changed by this much,
in milliseconds (approximately)public void restart()
public static void main(String[] args)
args
- null okIllegalArgumentException
public double getSharePercentage()
public int get1sRate()
public int get1sRate(boolean outboundOnly)
public int get1sRateIn()
public int get15sRate()
public int get15sRate(boolean outboundOnly)
public int get15sRateIn()
public int get1mRate()
public int get1mRate(boolean outboundOnly)
public int get1mRateIn()
public int get5mRate()
public int get5mRate(boolean outboundOnly)