Package | Description |
---|---|
net.i2p.router |
The I2P router application handles the I2P network communication.
|
net.i2p.router.client |
Implements the router side of the I2CP interface,
which is the API for applications to send and receive data through the router.
|
net.i2p.router.dummy |
Dummy versions of things for testing.
|
net.i2p.router.message |
Creates and parses garlic messages.
|
net.i2p.router.networkdb |
A couple of classes, but most things are in kademlia.
|
net.i2p.router.networkdb.kademlia |
The network database, including implementation of floodfills.
|
net.i2p.router.peermanager |
The peer manager logs information about the history and quality of network peers.
|
net.i2p.router.startup |
The I2P startup package loads the configuration when I2P is started.
|
net.i2p.router.tasks |
Miscellaneous classes, mostly things that are executed periodically as
Jobs, Threads, and SimpleTimer.TimedEvents.
|
net.i2p.router.transport |
The transport system allows the usage of communication layers that are below I2P in the stack, on which I2P messages are sent.
|
net.i2p.router.tunnel.pool |
Tunnel creation, tunnel build message handling.
|
Modifier and Type | Interface and Description |
---|---|
interface |
ReplyJob
Defines an executable task that can be fired off in reply to a message
|
Modifier and Type | Class and Description |
---|---|
class |
JobImpl
Base implementation of a Job
For use by the router only.
|
Modifier and Type | Method and Description |
---|---|
Job |
HandlerJobBuilder.createJob(I2NPMessage receivedMessage,
RouterIdentity from,
Hash fromHash)
Create a new job to handle the received message.
|
Job |
JobQueueRunner.getCurrentJob() |
Job |
JobQueueRunner.getLastJob() |
Job |
JobQueue.getLastJob()
retrieve the most recently begin and still currently active job, or null if
no jobs are running
|
(package private) Job |
JobQueue.getNext()
Blocking call to retrieve the next ready job
|
Job |
OutNetMessage.getOnFailedReplyJob()
If the Message selector is specified but it doesn't find a reply before
its expiration passes, this job is enqueued.
|
Job |
OutNetMessage.getOnFailedSendJob()
If the router could not be reached or the expiration passed, this job
is enqueued.
|
Job |
OutNetMessage.getOnSendJob()
After the message is successfully passed to the router specified, the
given job is enqueued.
|
Modifier and Type | Method and Description |
---|---|
void |
JobQueue.addJob(Job job)
Enqueue the specified job
|
boolean |
JobQueue.isJobActive(Job job)
Deprecated.
unused
|
abstract void |
NetworkDatabaseFacade.lookupDestination(Hash key,
Job onFinishedJob,
long timeoutMs,
Hash fromLocalDest)
Lookup using the client's tunnels
Succeeds even if LS validation fails due to unsupported sig type
|
abstract void |
NetworkDatabaseFacade.lookupLeaseSet(Hash key,
Job onFindJob,
Job onFailedLookupJob,
long timeoutMs) |
abstract void |
NetworkDatabaseFacade.lookupLeaseSet(Hash key,
Job onFindJob,
Job onFailedLookupJob,
long timeoutMs,
Hash fromLocalDest)
Lookup using the client's tunnels
|
abstract void |
NetworkDatabaseFacade.lookupRouterInfo(Hash key,
Job onFindJob,
Job onFailedLookupJob,
long timeoutMs) |
void |
JobQueue.removeJob(Job job) |
abstract void |
ClientManagerFacade.requestLeaseSet(Destination dest,
LeaseSet set,
long timeout,
Job onCreateJob,
Job onFailedJob)
Request that a particular client authorize the Leases contained in the
LeaseSet, after which the onCreateJob is queued up.
|
void |
OutNetMessage.setOnFailedReplyJob(Job job) |
void |
OutNetMessage.setOnFailedSendJob(Job job) |
void |
OutNetMessage.setOnSendJob(Job job) |
(package private) void |
JobQueue.updateStats(Job job,
long doStart,
long origStartAfter,
long duration)
calculate and update the job timings
if it was lagged too much or took too long to run, spit out
a warning (and if its really excessive, kill the router)
|
Modifier and Type | Method and Description |
---|---|
int |
JobQueue.getJobs(Collection<Job> readyJobs,
Collection<Job> timedJobs,
Collection<Job> activeJobs,
Collection<Job> justFinishedJobs)
Dump the current state.
|
int |
JobQueue.getJobs(Collection<Job> readyJobs,
Collection<Job> timedJobs,
Collection<Job> activeJobs,
Collection<Job> justFinishedJobs)
Dump the current state.
|
int |
JobQueue.getJobs(Collection<Job> readyJobs,
Collection<Job> timedJobs,
Collection<Job> activeJobs,
Collection<Job> justFinishedJobs)
Dump the current state.
|
int |
JobQueue.getJobs(Collection<Job> readyJobs,
Collection<Job> timedJobs,
Collection<Job> activeJobs,
Collection<Job> justFinishedJobs)
Dump the current state.
|
Modifier and Type | Class and Description |
---|---|
(package private) class |
CreateSessionJob
Given an established connection, walk through the process of establishing the
lease set.
|
(package private) class |
LookupDestJob
Look up the lease of a hash, to convert it to a Destination for the client.
|
(package private) class |
MessageReceivedJob
Async job to notify the client that a new message is available for them,
or just send it directly if specified.
|
(package private) class |
ReportAbuseJob
Async job to send an abuse message to the client
|
(package private) class |
RequestLeaseSetJob
Async job to walk the client through generating a lease set.
|
Modifier and Type | Method and Description |
---|---|
Job |
LeaseRequestState.getOnFailed()
what to do if the lease set create fails / times out
|
Job |
LeaseRequestState.getOnGranted()
what to do once the lease set is created
|
Modifier and Type | Method and Description |
---|---|
void |
ClientManager.requestLeaseSet(Destination dest,
LeaseSet set,
long timeout,
Job onCreateJob,
Job onFailedJob)
Request that a particular client authorize the Leases contained in the
LeaseSet, after which the onCreateJob is queued up.
|
void |
ClientManagerFacadeImpl.requestLeaseSet(Destination dest,
LeaseSet set,
long timeout,
Job onCreateJob,
Job onFailedJob)
Request that a particular client authorize the Leases contained in the
LeaseSet, after which the onCreateJob is queued up.
|
(package private) void |
ClientConnectionRunner.requestLeaseSet(Hash h,
LeaseSet set,
long expirationTime,
Job onCreateJob,
Job onFailedJob)
Request that a particular client authorize the Leases contained in the
LeaseSet, after which the onCreateJob is queued up.
|
Constructor and Description |
---|
LeaseRequestState(Job onGranted,
Job onFailed,
long expiration,
LeaseSet requested) |
Modifier and Type | Method and Description |
---|---|
void |
DummyNetworkDatabaseFacade.lookupDestination(Hash key,
Job onFinishedJob,
long timeoutMs,
Hash fromLocalDest) |
void |
DummyNetworkDatabaseFacade.lookupLeaseSet(Hash key,
Job onFindJob,
Job onFailedLookupJob,
long timeoutMs) |
void |
DummyNetworkDatabaseFacade.lookupLeaseSet(Hash key,
Job onFindJob,
Job onFailedLookupJob,
long timeoutMs,
Hash fromLocalDest) |
void |
DummyNetworkDatabaseFacade.lookupRouterInfo(Hash key,
Job onFindJob,
Job onFailedLookupJob,
long timeoutMs) |
void |
DummyClientManagerFacade.requestLeaseSet(Destination dest,
LeaseSet set,
long timeout,
Job onCreateJob,
Job onFailedJob) |
Modifier and Type | Class and Description |
---|---|
class |
HandleGarlicMessageJob
Unencrypt a garlic message and handle each of the cloves - locally destined
messages are tossed into the inbound network message pool so they're handled
as if they arrived locally.
|
class |
OutboundClientMessageOneShotJob
Send a client message out an outbound tunnel and into an inbound
tunnel on the target leaseSet.
|
class |
SendMessageDirectJob
Send a message directly to another router, i.e.
|
Modifier and Type | Method and Description |
---|---|
Job |
GarlicMessageHandler.createJob(I2NPMessage receivedMessage,
RouterIdentity from,
Hash fromHash) |
Constructor and Description |
---|
SendMessageDirectJob(RouterContext ctx,
I2NPMessage message,
Hash toPeer,
Job onSend,
ReplyJob onSuccess,
Job onFail,
MessageSelector selector,
int timeoutMs,
int priority) |
SendMessageDirectJob(RouterContext ctx,
I2NPMessage message,
Hash toPeer,
ReplyJob onSuccess,
Job onFail,
MessageSelector selector,
int timeoutMs,
int priority) |
Modifier and Type | Class and Description |
---|---|
class |
HandleDatabaseLookupMessageJob
Handle a lookup for a key received from a remote peer.
|
class |
PublishLocalRouterInfoJob
Publish the local router's RouterInfo periodically.
|
Modifier and Type | Class and Description |
---|---|
(package private) class |
ExpireLeasesJob
Periodically search through all leases to find expired ones, failing those
keys and firing up a new search for each (in case we want it later, might as
well preemptively fetch it)
|
(package private) class |
ExpireRoutersJob
Go through the routing table pick routers that are
is out of date, but don't expire routers we're actively connected to.
|
(package private) class |
ExploreJob
Search for a particular key iteratively until we either find a value, we run
out of peers, or the bucket the key belongs in has sufficient values in it.
|
(package private) class |
ExploreKeySelectorJob
Deprecated.
unused, see comments in KNDF
|
(package private) class |
FloodfillMonitorJob
Simple job to monitor the floodfill pool.
|
(package private) class |
FloodfillRouterInfoFloodJob
Job to flood nearby floodfill routers with our RI.
|
(package private) class |
FloodfillStoreJob
This extends StoreJob to fire off a FloodfillVerifyStoreJob after success.
|
(package private) class |
FloodfillVerifyStoreJob
Send a netDb lookup to a floodfill peer - If it is found, great,
but if they reply back saying they dont know it, queue up a store of the
key to a random floodfill peer again (via FloodfillStoreJob)
|
(package private) class |
FloodOnlyLookupMatchJob |
(package private) class |
FloodOnlyLookupTimeoutJob
This is the timeout for the whole search.
|
(package private) class |
FloodOnlySearchJob
Uunused directly, replaced by IterativeSearchJob, but still extended by
SingleSearchJob.
|
class |
FloodSearchJob
Try sending a search to some floodfill peers, but if we don't get a successful
match within half the allowed lookup time, give up and start querying through
the normal (kademlia) channels.
|
class |
HandleFloodfillDatabaseLookupMessageJob
Handle a lookup for a key received from a remote peer.
|
class |
HandleFloodfillDatabaseStoreMessageJob
Receive DatabaseStoreMessage data and store it in the local net db
|
(package private) class |
IterativeFollowupJob
Ask a single peer for a single key.
|
(package private) class |
IterativeLookupJob
Ask the peer who sent us the DSRM for the RouterInfos...
|
(package private) class |
IterativeSearchJob
A traditional Kademlia search that continues to search
when the initial lookup fails, by iteratively searching the
closer-to-the-key peers returned by the query in a DSRM.
|
(package private) class |
IterativeTimeoutJob
This is the timeout for a single lookup, not for the whole search.
|
(package private) class |
RefreshRoutersJob
Go through all the routers once, after startup, and refetch their router infos.
|
class |
RepublishLeaseSetJob
Run periodically for each locally created leaseSet to cause it to be republished
if the client is still connected.
|
(package private) class |
SearchJob
Search for a particular key iteratively until we either find a value or we
run out of peers
Note that this is rarely if ever used directly, and is primary used by the ExploreJob extension.
|
protected class |
SearchJob.FailedJob
Called when a particular peer failed to respond before the timeout was
reached, or if the peer could not be contacted at all.
|
(package private) class |
SearchReplyJob |
(package private) class |
SearchUpdateReplyFoundJob
Called after a match to a db search is found
Used only by SearchJob which is only used by ExploreJob
|
(package private) class |
SingleLookupJob
Ask the peer who sent us the DSRM for the RouterInfos...
|
(package private) class |
SingleSearchJob
Ask a single peer for a single key.
|
(package private) class |
StartExplorersJob
Fire off search jobs for random keys from the explore pool, up to MAX_PER_RUN
at a time.
|
(package private) class |
StoreJob
Stores through this always request a reply.
|
Modifier and Type | Field and Description |
---|---|
protected Job |
FloodOnlySearchJob._onTimeout |
Modifier and Type | Field and Description |
---|---|
protected List<Job> |
FloodSearchJob._onFailed |
protected List<Job> |
FloodSearchJob._onFind |
Modifier and Type | Method and Description |
---|---|
Job |
FloodfillDatabaseStoreMessageHandler.createJob(I2NPMessage receivedMessage,
RouterIdentity from,
Hash fromHash) |
Job |
FloodfillDatabaseLookupMessageHandler.createJob(I2NPMessage receivedMessage,
RouterIdentity from,
Hash fromHash) |
Modifier and Type | Method and Description |
---|---|
(package private) void |
FloodSearchJob.addDeferred(Job onFind,
Job onFailed,
long timeoutMs,
boolean isLease)
Add jobs to an existing search
|
int |
SearchJob.addDeferred(Job onFind,
Job onFail,
long expiration,
boolean isLease) |
void |
KademliaNetworkDatabaseFacade.lookupDestination(Hash key,
Job onFinishedJob,
long timeoutMs,
Hash fromLocalDest)
Lookup using the client's tunnels
Succeeds even if LS validation and store fails due to unsupported sig type, expired, etc.
|
void |
KademliaNetworkDatabaseFacade.lookupLeaseSet(Hash key,
Job onFindJob,
Job onFailedLookupJob,
long timeoutMs)
Lookup using exploratory tunnels.
|
void |
KademliaNetworkDatabaseFacade.lookupLeaseSet(Hash key,
Job onFindJob,
Job onFailedLookupJob,
long timeoutMs,
Hash fromLocalDest)
Lookup using the client's tunnels
Use lookupDestination() if you don't need the LS or don't need it validated.
|
void |
KademliaNetworkDatabaseFacade.lookupRouterInfo(Hash key,
Job onFindJob,
Job onFailedLookupJob,
long timeoutMs) |
(package private) SearchJob |
FloodfillNetworkDatabaseFacade.search(Hash key,
Job onFindJob,
Job onFailedLookupJob,
long timeoutMs,
boolean isLease)
Lookup using exploratory tunnels.
|
(package private) SearchJob |
KademliaNetworkDatabaseFacade.search(Hash key,
Job onFindJob,
Job onFailedLookupJob,
long timeoutMs,
boolean isLease)
Begin a kademlia style search for the key specified, which can take up to timeoutMs and
will fire the appropriate jobs on success or timeout (or if the kademlia search completes
without any match)
Unused - called only by FNDF.searchFull() from FloodSearchJob which is overridden - don't use this.
|
(package private) SearchJob |
FloodfillNetworkDatabaseFacade.search(Hash key,
Job onFindJob,
Job onFailedLookupJob,
long timeoutMs,
boolean isLease,
Hash fromLocalDest)
Lookup using the client's tunnels.
|
(package private) SearchJob |
KademliaNetworkDatabaseFacade.search(Hash key,
Job onFindJob,
Job onFailedLookupJob,
long timeoutMs,
boolean isLease,
Hash fromLocalDest)
Unused - see FNDF
|
void |
FloodfillNetworkDatabaseFacade.sendStore(Hash key,
DatabaseEntry ds,
Job onSuccess,
Job onFailure,
long sendTimeout,
Set<Hash> toIgnore) |
void |
KademliaNetworkDatabaseFacade.sendStore(Hash key,
DatabaseEntry ds,
Job onSuccess,
Job onFailure,
long sendTimeout,
Set<Hash> toIgnore)
unused (overridden in FNDF)
|
Constructor and Description |
---|
FloodfillStoreJob(RouterContext context,
FloodfillNetworkDatabaseFacade facade,
Hash key,
DatabaseEntry data,
Job onSuccess,
Job onFailure,
long timeoutMs)
Send a data structure to the floodfills
|
FloodfillStoreJob(RouterContext context,
FloodfillNetworkDatabaseFacade facade,
Hash key,
DatabaseEntry data,
Job onSuccess,
Job onFailure,
long timeoutMs,
Set<Hash> toSkip) |
FloodOnlySearchJob(RouterContext ctx,
FloodfillNetworkDatabaseFacade facade,
Hash key,
Job onFind,
Job onFailed,
int timeoutMs,
boolean isLease) |
FloodSearchJob(RouterContext ctx,
FloodfillNetworkDatabaseFacade facade,
Hash key,
Job onFind,
Job onFailed,
int timeoutMs,
boolean isLease) |
IterativeSearchJob(RouterContext ctx,
FloodfillNetworkDatabaseFacade facade,
Hash key,
Job onFind,
Job onFailed,
int timeoutMs,
boolean isLease)
Lookup using exploratory tunnels
|
IterativeSearchJob(RouterContext ctx,
FloodfillNetworkDatabaseFacade facade,
Hash key,
Job onFind,
Job onFailed,
int timeoutMs,
boolean isLease,
Hash fromLocalDest)
Lookup using the client's tunnels.
|
SearchJob(RouterContext context,
KademliaNetworkDatabaseFacade facade,
Hash key,
Job onSuccess,
Job onFailure,
long timeoutMs,
boolean keepStats,
boolean isLease)
Create a new search for the routingKey specified
|
StoreJob(RouterContext context,
KademliaNetworkDatabaseFacade facade,
Hash key,
DatabaseEntry data,
Job onSuccess,
Job onFailure,
long timeoutMs)
Send a data structure to the floodfills
|
StoreJob(RouterContext context,
KademliaNetworkDatabaseFacade facade,
Hash key,
DatabaseEntry data,
Job onSuccess,
Job onFailure,
long timeoutMs,
Set<Hash> toSkip) |
Modifier and Type | Class and Description |
---|---|
class |
PeerTestJob
Grab some peers that we want to test and probe them briefly to get some
more accurate and up to date performance data.
|
Modifier and Type | Class and Description |
---|---|
(package private) class |
BootCommSystemJob
This actually boots almost everything
|
(package private) class |
BootNetworkDbJob
start up the network database
|
(package private) class |
BootPeerManagerJob
start up the peer manager
|
(package private) class |
BuildTrustedLinksJob
For future restricted routes.
|
class |
CreateRouterInfoJob
Warning - misnamed.
|
class |
LoadClientAppsJob
Run any client applications specified in clients.config.
|
(package private) class |
LoadRouterInfoJob
Run once or twice at startup by StartupJob,
and then runs BootCommSystemJob
|
(package private) class |
RebuildRouterInfoJob
This used be called from StartAcceptingClientsJob but is now disabled.
|
(package private) class |
StartAcceptingClientsJob
start I2CP interface
|
class |
StartupJob
The StartupJob should be run once on router startup to initialize the system
and set things in motion.
|
Constructor and Description |
---|
BuildTrustedLinksJob(RouterContext context,
Job next) |
CreateRouterInfoJob(RouterContext ctx,
Job next) |
Modifier and Type | Class and Description |
---|---|
class |
PersistRouterInfoJob
Update the router.info file whenever its, er, updated
|
class |
ReadConfigJob
Simply read the router config periodically,
so that the user may make config changes externally.
|
class |
UpdateRoutingKeyModifierJob
Update the routing Key modifier every day at midnight (plus on startup).
|
Modifier and Type | Class and Description |
---|---|
(package private) class |
GetBidsJob
Retrieve a set of bids for a particular outbound message, and if any are found
that meet the message's requirements, register the message as in process and
pass it on to the transport for processing
|
Modifier and Type | Method and Description |
---|---|
OutNetMessage |
OutboundMessageRegistry.registerPending(MessageSelector replySelector,
ReplyJob onReply,
Job onTimeout)
Registers a new, empty OutNetMessage, with the reply and timeout jobs specified.
|
Modifier and Type | Class and Description |
---|---|
(package private) class |
ExpireJob
This runs twice for each tunnel.
|
(package private) class |
TestJob
Repeatedly test a single tunnel for its entire lifetime,
or until the pool is shut down or removed from the client manager.
|
Modifier and Type | Method and Description |
---|---|
void |
PooledTunnelCreatorConfig.setExpireJob(Job job)
does nothing, to be deprecated
|