Package | Description |
---|---|
net.i2p.client |
Interfaces and factories for
the base I2P SDK used to develop applications that communicate
through I2P.
|
net.i2p.client.datagram |
Provides a standard way for reading and writing messages transferred over I2P
so that the recipient has an authenticated mechanism to reply to it.
|
net.i2p.client.impl |
Implements the base I2P SDK for developing applications that communicate
through I2P.
|
net.i2p.client.naming |
Provides a standard way for querying the local naming service to resolve a
name into a
Destination (without the complexity of JNDI). |
net.i2p.client.streaming.impl |
Implementation of a TCP-like (reliable, authenticated, in order) set of sockets for
communicating over the IP-like (unreliable, unauthenticated, unordered) I2P
messages.
|
net.i2p.crypto |
These classes provide a number of low-level cryptographic routines.
|
net.i2p.data |
These classes define the common data structures used by the various
I2P protocols.
|
net.i2p.data.i2cp |
The Invisible Internet Client Protocol (I2CP) allows applications simplified access to
the I2P network without requiring them to deal with the issues involved with the
Invisible Internet Network Protocol (I2NP).
|
net.i2p.data.i2np |
This package defines the low-level messages sent between routers,
called the Invisible Internet Network Protocol (I2NP).
|
net.i2p.data.router |
Classes formerly in net.i2p.data but moved here as they are only used by the router.
|
net.i2p.i2ptunnel |
Implementation of preconfigured tunnels, both for clients and servers,
and a UI for adding more and editing the configuration.
|
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.crypto |
Classes formerly in net.i2p.crypto but moved here as they are only used by 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.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.transport.ntcp |
The NTCP transport allows passing I2P messages on top of TCP.
|
net.i2p.router.transport.udp |
The UDP transport (also known as 'SSU transport') allows passing I2P messages on top of UDP.
|
net.i2p.router.tunnel |
All the work of managing locally created and participating tunnels,
creating and handling tunnel messages, and their encryption.
|
net.i2p.router.tunnel.pool |
Tunnel creation, tunnel build message handling.
|
net.i2p.router.util |
These classes define the several useful utilities used
throughout the router.
|
net.i2p.router.web |
The router console user interface, implemented in routerconsole.jar, with these classes
supporting the webapp in routerconsole.war.
|
net.i2p.util |
These classes define the several useful utilities used
throughout the router and applications.
|
org.klomp.snark.dht |
Modifier and Type | Method and Description |
---|---|
Destination |
I2PSession.lookupDest(Hash h)
Lookup a Destination by Hash.
|
Destination |
I2PSession.lookupDest(Hash h,
long maxWait)
Lookup a Destination by Hash.
|
Modifier and Type | Method and Description |
---|---|
Hash |
I2PDatagramDissector.extractHash()
Extract the hash of the payload of an I2P repliable datagram (previously
loaded with the loadI2PDatagram() method), without verifying the datagram
signature.
|
Hash |
I2PDatagramDissector.getHash()
Extract the hash of the payload of an I2P repliable datagram (previously
loaded with the loadI2PDatagram() method), verifying the datagram
signature.
|
Modifier and Type | Method and Description |
---|---|
(package private) void |
I2PSessionImpl.destLookupFailed(Hash h)
Called by the message handler
on reception of DestReplyMessage
|
(package private) void |
SubSession.destLookupFailed(Hash h)
Called by the message handler
on reception of DestReplyMessage
This will never happen, as the dest reply message does not contain a session ID.
|
Destination |
I2PSessionImpl.lookupDest(Hash h)
Blocking.
|
Destination |
SubSession.lookupDest(Hash h)
Blocking.
|
Destination |
I2PSessionImpl.lookupDest(Hash h,
long maxWait)
Blocking.
|
Destination |
SubSession.lookupDest(Hash h,
long maxWait)
Blocking.
|
Modifier and Type | Method and Description |
---|---|
Destination |
NamingService.lookup(Hash hash,
int timeout)
Same as lookupBase32() but with the SHA256 Hash precalculated
This implementation returns null.
|
String |
NamingService.reverseLookup(Hash h)
Reverse lookup a hash.
|
String |
BlockfileNamingService.reverseLookup(Hash h) |
List<String> |
NamingService.reverseLookupAll(Hash h)
Reverse lookup a hash.
|
List<String> |
BlockfileNamingService.reverseLookupAll(Hash h) |
Modifier and Type | Method and Description |
---|---|
Set<Hash> |
ConnectionOptions.getAccessList() |
Set<Hash> |
ConnectionOptions.getBlacklist() |
Modifier and Type | Method and Description |
---|---|
(package private) boolean |
ConnThrottler.isThrottled(Hash h)
Checks individual count only.
|
(package private) boolean |
ConnThrottler.shouldThrottle(Hash h)
Checks both individual and total.
|
Modifier and Type | Method and Description |
---|---|
Hash |
HMACGenerator.calculate(SessionKey key,
byte[] data)
Deprecated.
unused (not even by Syndie)
|
Hash |
HMAC256Generator.calculate(SessionKey key,
byte[] data)
Deprecated.
unused (not even by Syndie)
|
Hash |
SHA256Generator.calculateHash(byte[] source)
Calculate the SHA-256 hash of the source and cache the result.
|
Hash |
SHA256Generator.calculateHash(byte[] source,
int start,
int len)
Calculate the hash and cache the result.
|
Modifier and Type | Method and Description |
---|---|
Signature |
DSAEngine.sign(Hash hash,
SigningPrivateKey signingKey)
Nonstandard.
|
boolean |
DSAEngine.verifySignature(Signature signature,
Hash hash,
SigningPublicKey verifyingKey)
Nonstandard.
|
Modifier and Type | Field and Description |
---|---|
protected Hash |
DatabaseEntry._currentRoutingKey |
static Hash |
Hash.FAKE_HASH |
Modifier and Type | Method and Description |
---|---|
Hash |
KeysAndCert.calculateHash()
Throws IllegalStateException if keys and cert are not initialized,
as of 0.9.12.
|
Hash |
SimpleDataStructure.calculateHash() |
Hash |
DataStructure.calculateHash()
Calculate the SHA256 value of this object (useful for a few scenarios)
|
Hash |
DataStructureImpl.calculateHash() |
static Hash |
Hash.create(byte[] data)
Pull from cache or return new
WARNING - If the SDS is found in the cache, the passed-in
byte array will be returned to the SimpleByteCache for reuse.
|
static Hash |
Hash.create(byte[] data,
int off)
Pull from cache or return new
|
static Hash |
Hash.create(InputStream in)
Pull from cache or return new
|
Hash |
Lease.getGateway()
Retrieve the router at which the destination can be contacted
|
Hash |
KeysAndCert.getHash()
Throws IllegalStateException if keys and cert are not initialized,
as of 0.9.12.
|
Hash |
DatabaseEntry.getHash()
A common interface to the Hash of the two subclasses.
|
Hash |
DatabaseEntry.getRoutingKey()
Get the routing key for the structure using the current modifier in the RoutingKeyGenerator.
|
abstract Hash |
RoutingKeyGenerator.getRoutingKey(Hash origKey)
Get the routing key for a key.
|
Modifier and Type | Method and Description |
---|---|
abstract Hash |
RoutingKeyGenerator.getRoutingKey(Hash origKey)
Get the routing key for a key.
|
void |
Lease.setGateway(Hash ident)
Configure the router at which the destination can be contacted
|
Modifier and Type | Method and Description |
---|---|
Hash |
DestReplyMessage.getHash() |
Hash |
DestLookupMessage.getHash() |
Hash |
HostLookupMessage.getHash() |
Hash |
RequestLeaseSetMessage.getRouter(int endpoint) |
Modifier and Type | Method and Description |
---|---|
void |
RequestLeaseSetMessage.addEndpoint(Hash router,
TunnelId tunnel) |
Constructor and Description |
---|
DestLookupMessage(Hash h) |
DestReplyMessage(Hash h) |
HostLookupMessage(SessionId id,
Hash h,
long reqID,
long timeout) |
Modifier and Type | Method and Description |
---|---|
Hash |
DeliveryInstructions.getDestination()
default null
|
Hash |
DatabaseLookupMessage.getFrom()
Contains the router who requested this lookup
|
Hash |
DatabaseSearchReplyMessage.getFromHash() |
Hash |
DatabaseStoreMessage.getKey()
Defines the key in the network database being stored
|
Hash |
DatabaseSearchReplyMessage.getReply(int index) |
Hash |
DatabaseStoreMessage.getReplyGateway() |
Hash |
DeliveryInstructions.getRouter()
default null
|
Hash |
DatabaseLookupMessage.getSearchKey()
Defines the key being searched for
|
Hash |
DatabaseSearchReplyMessage.getSearchKey()
Defines the key being searched for
|
Hash |
BuildRequestRecord.readNextIdentity()
Read the next hop from the record.
|
Modifier and Type | Method and Description |
---|---|
Set<Hash> |
DatabaseLookupMessage.getDontIncludePeers()
Set of peers that a lookup reply should NOT include.
|
Modifier and Type | Method and Description |
---|---|
void |
DatabaseLookupMessage.addDontIncludePeer(Hash peer)
Add to the set.
|
void |
DatabaseSearchReplyMessage.addReply(Hash peer) |
EncryptedBuildRecord |
BuildRequestRecord.encryptRecord(I2PAppContext ctx,
PublicKey toKey,
Hash toPeer)
Encrypt the record to the specified peer.
|
void |
DeliveryInstructions.setDestination(Hash dest)
required for DESTINATION
|
void |
DatabaseLookupMessage.setFrom(Hash from) |
void |
DatabaseSearchReplyMessage.setFromHash(Hash from) |
void |
DatabaseStoreMessage.setReplyGateway(Hash peer) |
void |
DeliveryInstructions.setRouter(Hash router)
required for ROUTER or TUNNEL
|
void |
DatabaseLookupMessage.setSearchKey(Hash key) |
void |
DatabaseSearchReplyMessage.setSearchKey(Hash key) |
Modifier and Type | Method and Description |
---|---|
void |
DatabaseLookupMessage.addDontIncludePeers(Collection<Hash> peers)
Add to the set.
|
void |
DatabaseLookupMessage.setDontIncludePeers(Collection<Hash> peers)
Replace the dontInclude set with this set.
|
Constructor and Description |
---|
BuildRequestRecord(I2PAppContext ctx,
long receiveTunnelId,
Hash peer,
long nextTunnelId,
Hash nextHop,
long nextMsgId,
SessionKey layerKey,
SessionKey ivKey,
SessionKey replyKey,
byte[] iv,
boolean isInGateway,
boolean isOutEndpoint)
Populate this instance with data.
|
Modifier and Type | Method and Description |
---|---|
Hash |
RouterKeyGenerator.getNextRoutingKey(Hash origKey)
Get the routing key using tomorrow's modData, not today's
|
Hash |
RouterKeyGenerator.getRoutingKey(Hash origKey)
Generate a modified (yet consistent) hash from the origKey by generating the
SHA256 of the targetKey with the current modData appended to it
This makes Sybil's job a lot harder, as she needs to essentially take over the
whole keyspace.
|
Hash |
RouterKeyGenerator.getRoutingKey(Hash origKey,
long time)
Get the routing key for the specified date, not today's
|
Modifier and Type | Method and Description |
---|---|
Set<Hash> |
RouterInfo.getPeers()
Deprecated.
Implemented here but unused elsewhere
|
Modifier and Type | Method and Description |
---|---|
Hash |
RouterKeyGenerator.getNextRoutingKey(Hash origKey)
Get the routing key using tomorrow's modData, not today's
|
Hash |
RouterKeyGenerator.getRoutingKey(Hash origKey)
Generate a modified (yet consistent) hash from the origKey by generating the
SHA256 of the targetKey with the current modData appended to it
This makes Sybil's job a lot harder, as she needs to essentially take over the
whole keyspace.
|
Hash |
RouterKeyGenerator.getRoutingKey(Hash origKey,
long time)
Get the routing key for the specified date, not today's
|
Modifier and Type | Method and Description |
---|---|
void |
RouterInfo.setPeers(Set<Hash> peers)
Deprecated.
Implemented here but unused elsewhere
|
Modifier and Type | Method and Description |
---|---|
protected Socket |
I2PTunnelServer.getSocket(Hash from,
InetAddress remoteHost,
int remotePort)
Get a regular or SSL socket depending on config.
|
protected Socket |
I2PTunnelServer.getSocket(Hash from,
int incomingPort)
Get a regular or SSL socket depending on config and the incoming port.
|
boolean |
ConnThrottler.shouldThrottle(Hash h)
Checks both individual and total.
|
Modifier and Type | Method and Description |
---|---|
Hash |
TunnelPoolSettings.getAliasOf()
Other destination that this is an alias of (or null).
|
Hash |
TunnelPoolSettings.getDestination()
what destination is this a client tunnel for (or null if exploratory)
|
Hash |
TunnelInfo.getDestination()
if this is a client tunnel, what destination is it for?
|
Hash |
ClientMessage.getDestinationHash()
Retrieve the destination to which this message is directed.
|
Hash |
TunnelInfo.getEndpoint()
For convenience
|
Hash |
TunnelInfo.getFarEnd()
For convenience
|
Hash |
TunnelInfo.getGateway()
For convenience
|
Hash |
TunnelInfo.getPeer(int hop)
retrieve the peer at the given hop.
|
Hash |
TunnelPoolSettings.getRandomKey()
random key used for peer ordering
|
Hash |
RouterContext.routerHash()
Convenience method for getting the router hash.
|
Hash |
PeerManagerFacade.selectRandomByCapability(char capability) |
Modifier and Type | Method and Description |
---|---|
abstract Set<Hash> |
NetworkDatabaseFacade.findNearestRouters(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore)
Return the RouterInfo structures for the routers closest to the given key.
|
Set<Hash> |
TunnelPoolSettings.getAliases()
Other destinations that use the same tunnel (or null if exploratory)
Modifiable, concurrent, not a copy
|
abstract Set<Hash> |
NetworkDatabaseFacade.getAllRouters() |
Map<Hash,Banlist.Entry> |
Banlist.getEntries()
For BanlistRenderer in router console.
|
Map<Hash,TunnelPool> |
TunnelManagerFacade.getInboundClientPools()
for TunnelRenderer in router console
|
Map<Hash,TunnelPool> |
TunnelManagerFacade.getOutboundClientPools()
for TunnelRenderer in router console
|
Set<Hash> |
PeerManagerFacade.getPeersByCapability(char capability) |
List<Hash> |
PeerManagerFacade.selectPeers(PeerSelectionCriteria criteria)
Select peers from the manager's existing routing tables according to
the specified criteria.
|
Set<Hash> |
TunnelManagerFacade.selectPeersInTooManyTunnels() |
Modifier and Type | Method and Description |
---|---|
boolean |
RouterThrottleImpl.acceptNetDbLookupRequest(Hash key)
Deprecated.
unused, function moved to netdb
|
boolean |
RouterThrottle.acceptNetDbLookupRequest(Hash key)
Should we accept the netDb lookup message, replying either with the
value or some closer peers, or should we simply drop it due to overload?
|
boolean |
RouterDoSThrottle.acceptNetDbLookupRequest(Hash key)
Deprecated.
|
int |
InNetMessagePool.add(I2NPMessage messageBody,
RouterIdentity fromRouter,
Hash fromRouterHash)
Add a new message to the pool.
|
void |
MessageHistory.banlist(Hash peer,
String reason)
We banlisted the peer
|
boolean |
Banlist.banlistRouter(Hash peer) |
boolean |
Banlist.banlistRouter(Hash peer,
String reason) |
boolean |
Banlist.banlistRouter(Hash peer,
String reason,
String transport) |
boolean |
Banlist.banlistRouter(Hash peer,
String reason,
String transport,
boolean forever) |
boolean |
Banlist.banlistRouter(Hash peer,
String reason,
String reasonCode,
String transport,
long expireOn)
So that we may specify an expiration
|
boolean |
Banlist.banlistRouter(String reasonCode,
Hash peer,
String reason)
ick have to put the reasonCode in the front to avoid ambiguity
|
boolean |
Banlist.banlistRouterForever(Hash peer,
String reason) |
boolean |
Banlist.banlistRouterForever(Hash peer,
String reason,
String reasonCode) |
void |
ProfileManager.commErrorOccurred(Hash peer)
Note that there was some sort of communication error talking with the peer
|
Job |
HandlerJobBuilder.createJob(I2NPMessage receivedMessage,
RouterIdentity from,
Hash fromHash)
Create a new job to handle the received message.
|
void |
ProfileManager.dbLookupFailed(Hash peer)
Note that the peer was unable to reply to a db lookup - either with data or with
a lookupReply redirecting the user elsewhere
|
void |
ProfileManager.dbLookupReceived(Hash peer)
Note that the local router received a db lookup from the given peer
|
void |
ProfileManager.dbLookupReply(Hash peer,
int newPeers,
int oldPeers,
int invalid,
int duplicate,
long responseTimeMs)
Note that the peer replied to a db lookup with a redirect to other routers, where
the list of redirected users included newPeers routers that the local router didn't
know about, oldPeers routers that the local router already knew about, the given invalid
routers that were invalid in some way, and the duplicate number of routers that we explicitly
asked them not to send us, but they did anyway
|
void |
ProfileManager.dbLookupSuccessful(Hash peer,
long responseTimeMs)
Note that the peer was able to return the valid data for a db lookup
|
void |
ProfileManager.dbStoreFailed(Hash peer)
Note that we were unable to confirm a successful send of db data to
the peer, at least not within our timeout period
|
void |
ProfileManager.dbStoreReceived(Hash peer,
boolean wasNewKey)
Note that the local router received an unprompted db store from the given peer
|
void |
ProfileManager.dbStoreSent(Hash peer,
long responseTimeMs)
Note that we've confirmed a successful send of db data to the peer (though we haven't
necessarily requested it again from them, so they /might/ be lying)
|
void |
ProfileManager.dbStoreSuccessful(Hash peer)
Note that we confirmed a successful send of db data to
the peer.
|
void |
MessageHistory.droppedInboundMessage(long messageId,
Hash from,
String info) |
void |
MessageHistory.droppedOtherMessage(I2NPMessage message,
Hash from)
We received another message we weren't waiting for and don't know how to handle
|
void |
MessageHistory.droppedTunnelMessage(TunnelId id,
long msgId,
Date expiration,
Hash from)
We don't know about the given tunnel, so we are dropping a message sent to us by the
given router
|
abstract void |
NetworkDatabaseFacade.fail(Hash dbEntry) |
void |
TunnelManagerFacade.fail(Hash peer) |
abstract Set<Hash> |
NetworkDatabaseFacade.findNearestRouters(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore)
Return the RouterInfo structures for the routers closest to the given key.
|
abstract SessionKeyManager |
ClientManagerFacade.getClientSessionKeyManager(Hash dest) |
String |
CommSystemFacade.getCountry(Hash peer) |
TunnelPoolSettings |
TunnelManagerFacade.getInboundSettings(Hash client) |
byte[] |
CommSystemFacade.getIP(Hash dest) |
LeaseSetKeys |
KeyManager.getKeys(Hash dest)
client
|
int |
TunnelManagerFacade.getOutboundClientTunnelCount(Hash destination)
how many outbound client tunnels in this pool?
|
TunnelPoolSettings |
TunnelManagerFacade.getOutboundSettings(Hash client) |
void |
ProfileManager.heardAbout(Hash peer)
Note that the local router received a reference to the given peer, either
through an explicit dbStore or in a dbLookupReply
|
void |
ProfileManager.heardAbout(Hash peer,
long when) |
boolean |
CommSystemFacade.isBacklogged(Hash peer) |
boolean |
Banlist.isBanlisted(Hash peer) |
boolean |
Banlist.isBanlisted(Hash peer,
String transport) |
boolean |
Banlist.isBanlistedForever(Hash peer) |
boolean |
Blocklist.isBlocklisted(Hash peer)
Does the peer's IP address appear in the blocklist?
If so, and it isn't banlisted, banlist it forever...
|
boolean |
CommSystemFacade.isEstablished(Hash peer) |
boolean |
CommSystemFacade.isInBadCountry(Hash peer) |
abstract boolean |
ClientManagerFacade.isLocal(Hash destHash)
Determine if the destination hash specified is managed locally.
|
boolean |
NetworkDatabaseFacade.isNegativeCachedForever(Hash key)
Is it permanently negative cached?
|
boolean |
TunnelManagerFacade.isValidTunnel(Hash client,
TunnelInfo tunnel)
Is a tunnel a valid member of the pool?
|
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 Destination |
NetworkDatabaseFacade.lookupDestinationLocally(Hash key)
Lookup locally in netDB and in badDest cache
Succeeds even if LS validation failed 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 LeaseSet |
NetworkDatabaseFacade.lookupLeaseSetLocally(Hash key) |
abstract void |
NetworkDatabaseFacade.lookupLeaseSetRemotely(Hash key,
Hash fromLocalDest)
Unconditionally lookup using the client's tunnels.
|
abstract DatabaseEntry |
NetworkDatabaseFacade.lookupLocally(Hash key) |
abstract void |
NetworkDatabaseFacade.lookupRouterInfo(Hash key,
Job onFindJob,
Job onFailedLookupJob,
long timeoutMs) |
abstract RouterInfo |
NetworkDatabaseFacade.lookupRouterInfoLocally(Hash key) |
void |
CommSystemFacade.mayDisconnect(Hash peer)
Tell the comm system that we may disconnect from this peer.
|
void |
ProfileManager.messageFailed(Hash peer)
Note that the router failed to send a message to the peer over any transport
|
void |
ProfileManager.messageFailed(Hash peer,
String transport)
Note that the router failed to send a message to the peer over the transport specified
|
void |
ProfileManager.messageReceived(Hash peer,
String style,
long msToReceive,
int bytesRead)
Note that the router received a message from the given peer on the specified
transport.
|
void |
ProfileManager.messageSent(Hash peer,
String transport,
long msToSend,
long bytesSent)
Note that it took msToSend to send a message of size bytesSent to the peer over the transport.
|
Properties |
StatisticsManager.publishStatistics(Hash h)
Retrieve a snapshot of the statistics that should be published.
|
SessionKey |
PersistentKeyRing.put(Hash h,
SessionKey sk) |
void |
MessageHistory.receiveMessage(String messageType,
long messageId,
long expiration,
Hash from,
boolean isValid)
We just received a message from the peer
|
SessionKey |
PersistentKeyRing.remove(Hash h) |
void |
PeerManagerFacade.removeCapabilities(Hash peer) |
String |
CommSystemFacade.renderPeerHTML(Hash peer) |
abstract void |
ClientManagerFacade.requestLeaseSet(Hash dest,
LeaseSet set) |
TunnelInfo |
TunnelManagerFacade.selectInboundExploratoryTunnel(Hash closestTo)
Pick the inbound exploratory tunnel with the gateway closest to the given hash.
|
TunnelInfo |
TunnelManagerFacade.selectInboundTunnel(Hash destination)
Pick a random inbound tunnel from the given destination's pool
|
TunnelInfo |
TunnelManagerFacade.selectInboundTunnel(Hash destination,
Hash closestTo)
Pick the inbound tunnel with the gateway closest to the given hash
from the given destination's pool.
|
TunnelInfo |
TunnelManagerFacade.selectOutboundExploratoryTunnel(Hash closestTo)
Pick the outbound exploratory tunnel with the endpoint closest to the given hash.
|
TunnelInfo |
TunnelManagerFacade.selectOutboundTunnel(Hash destination)
Pick a random outbound tunnel from the given destination's pool
|
TunnelInfo |
TunnelManagerFacade.selectOutboundTunnel(Hash destination,
Hash closestTo)
Pick the outbound tunnel with the endpoint closest to the given hash
from the given destination's pool.
|
void |
MessageHistory.sendMessage(String messageType,
long messageId,
long expiration,
Hash peer,
boolean sentOk,
String info)
We just sent a message to the peer
|
void |
TunnelPoolSettings.setAliasOf(Hash h)
Set other destination that this is an alias of (or null).
|
void |
PeerManagerFacade.setCapabilities(Hash peer,
String caps) |
void |
TunnelManagerFacade.setInboundSettings(Hash client,
TunnelPoolSettings settings) |
void |
TunnelManagerFacade.setOutboundSettings(Hash client,
TunnelPoolSettings settings) |
boolean |
ClientManagerFacade.shouldPublishLeaseSet(Hash destinationHash)
Does the client specified want their leaseSet published?
|
DatabaseEntry |
NetworkDatabaseFacade.store(Hash key,
DatabaseEntry entry) |
abstract LeaseSet |
NetworkDatabaseFacade.store(Hash key,
LeaseSet leaseSet) |
abstract RouterInfo |
NetworkDatabaseFacade.store(Hash key,
RouterInfo routerInfo) |
void |
ProfileManager.tunnelDataPushed(Hash peer,
long rtt,
int size)
Note that we were able to push some data through a tunnel that the peer
is participating in (detected after rtt).
|
void |
ProfileManager.tunnelDataPushed1m(Hash peer,
int size)
Note that the peer is participating in a tunnel that pushed the given amount of data
over the last minute.
|
void |
MessageHistory.tunnelDispatched(long messageId,
long tunnelId,
long toTunnel,
Hash toPeer,
String type) |
void |
ProfileManager.tunnelFailed(Hash peer,
int pct)
Note that the peer participated in a tunnel that failed.
|
void |
ProfileManager.tunnelJoined(Hash peer,
long responseTimeMs)
Note that the router agreed to participate in a tunnel
|
void |
ProfileManager.tunnelLifetimePushed(Hash peer,
long lifetime,
long size)
Note that we were able to push the given amount of data through a tunnel
that the peer is participating in
|
void |
MessageHistory.tunnelParticipantRejected(Hash peer,
String msg) |
void |
ProfileManager.tunnelRejected(Hash peer,
long responseTimeMs,
int severity)
Note that a router explicitly rejected joining a tunnel
|
void |
MessageHistory.tunnelRejected(Hash peer,
TunnelId tunnel,
Hash replyThrough,
String reason)
The peer did not accept the tunnel join for the given reason
|
void |
MessageHistory.tunnelRequestTimedOut(Hash peer,
TunnelId tunnel)
The peer did not accept the tunnel join for the given reason (this may be because
of a timeout or an explicit refusal).
|
void |
ProfileManager.tunnelTestSucceeded(Hash peer,
long responseTimeMs)
Note that a tunnel that the router is participating in
was successfully tested with the given round trip latency
|
void |
ProfileManager.tunnelTimedOut(Hash peer)
Note that a router timed out joining a tunnel
|
void |
MessageHistory.unbanlist(Hash peer)
We unbanlisted the peer
|
void |
Banlist.unbanlistRouter(Hash peer) |
void |
Banlist.unbanlistRouter(Hash peer,
String transport) |
boolean |
CommSystemFacade.wasUnreachable(Hash peer) |
Modifier and Type | Method and Description |
---|---|
abstract Set<Hash> |
NetworkDatabaseFacade.findNearestRouters(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore)
Return the RouterInfo structures for the routers closest to the given key.
|
Constructor and Description |
---|
ClientMessage(Hash toDestHash,
Payload payload)
For inbound (from remote dest)
|
ClientTunnelSettings(Hash dest) |
TunnelPoolSettings(Hash dest,
boolean isInbound)
Client tunnel unless dest == null
|
Modifier and Type | Method and Description |
---|---|
Hash |
ClientConnectionRunner.getDestHash()
Equivalent to getConfig().getDestination().calculateHash();
will be null before session is established
Not subsession aware.
|
Hash |
ClientConnectionRunner.getDestHash(SessionId id)
Return the hash for the given ID
|
Modifier and Type | Method and Description |
---|---|
SessionKeyManager |
ClientManager.getClientSessionKeyManager(Hash dest)
Return the client's SessionKeyManager
Use this instead of the RouterContext.sessionKeyManager()
to prevent correlation attacks across destinations
|
SessionKeyManager |
ClientManagerFacadeImpl.getClientSessionKeyManager(Hash dest)
Return the client's current manager or null if not connected
|
SessionConfig |
ClientConnectionRunner.getConfig(Hash h)
Current client's config,
will be null if session not found
IS subsession aware.
|
(package private) LeaseRequestState |
ClientConnectionRunner.getLeaseRequest(Hash h)
Data for the current leaseRequest, or null if there is no active leaseSet request.
|
LeaseSet |
ClientConnectionRunner.getLeaseSet(Hash h)
Currently allocated leaseSet.
|
(package private) SessionId |
ClientConnectionRunner.getSessionId(Hash h)
Subsession aware.
|
boolean |
ClientManager.isLocal(Hash destHash)
Unsynchronized
|
boolean |
ClientManagerFacadeImpl.isLocal(Hash destHash)
Determine if the destination specified is managed locally.
|
(package private) boolean |
ClientConnectionRunner.receiveMessage(Hash toHash,
Destination fromDest,
Payload payload)
Synchronously deliver the message to the current runner
Failure indication is available as of 0.9.29.
|
void |
ClientManager.requestLeaseSet(Hash dest,
LeaseSet ls)
Request that a particular client authorize the Leases contained in the
LeaseSet.
|
void |
ClientManagerFacadeImpl.requestLeaseSet(Hash dest,
LeaseSet set)
Request that a particular client authorize the Leases contained in the
LeaseSet.
|
(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.
|
(package private) void |
ClientConnectionRunner.setSessionId(Hash hash,
SessionId id)
To be called only by ClientManager.
|
boolean |
ClientManager.shouldPublishLeaseSet(Hash destHash) |
boolean |
ClientManagerFacadeImpl.shouldPublishLeaseSet(Hash destinationHash) |
Constructor and Description |
---|
LookupDestJob(RouterContext context,
ClientConnectionRunner runner,
Hash h,
Hash fromLocalDest) |
LookupDestJob(RouterContext context,
ClientConnectionRunner runner,
long reqID,
long timeout,
SessionId sessID,
Hash h,
String name,
Hash fromLocalDest)
One of h or name non-null.
|
Modifier and Type | Method and Description |
---|---|
Set<Hash> |
FamilyKeyCrypto.getOurFamily()
Get verified members of our family.
|
Modifier and Type | Method and Description |
---|---|
Map<String,String> |
FamilyKeyCrypto.sign(String family,
Hash h)
Caller must add family to RI also.
|
Modifier and Type | Method and Description |
---|---|
Hash |
DummyPeerManagerFacade.selectRandomByCapability(char capability) |
Modifier and Type | Method and Description |
---|---|
Set<Hash> |
DummyNetworkDatabaseFacade.findNearestRouters(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore) |
Set<Hash> |
DummyNetworkDatabaseFacade.getAllRouters() |
Map<Hash,TunnelPool> |
DummyTunnelManagerFacade.getInboundClientPools() |
Map<Hash,TunnelPool> |
DummyTunnelManagerFacade.getOutboundClientPools() |
Set<Hash> |
DummyPeerManagerFacade.getPeersByCapability(char capability) |
List<Hash> |
DummyPeerManagerFacade.selectPeers(PeerSelectionCriteria criteria) |
Set<Hash> |
DummyTunnelManagerFacade.selectPeersInTooManyTunnels() |
Modifier and Type | Method and Description |
---|---|
void |
DummyTunnelManagerFacade.fail(Hash peer) |
void |
DummyNetworkDatabaseFacade.fail(Hash dbEntry) |
Set<Hash> |
DummyNetworkDatabaseFacade.findNearestRouters(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore) |
SessionKeyManager |
DummyClientManagerFacade.getClientSessionKeyManager(Hash _dest) |
TunnelPoolSettings |
DummyTunnelManagerFacade.getInboundSettings(Hash client) |
int |
DummyTunnelManagerFacade.getOutboundClientTunnelCount(Hash destination) |
TunnelPoolSettings |
DummyTunnelManagerFacade.getOutboundSettings(Hash client) |
boolean |
DummyClientManagerFacade.isLocal(Hash destHash) |
boolean |
DummyTunnelManagerFacade.isValidTunnel(Hash client,
TunnelInfo tunnel) |
void |
DummyNetworkDatabaseFacade.lookupDestination(Hash key,
Job onFinishedJob,
long timeoutMs,
Hash fromLocalDest) |
Destination |
DummyNetworkDatabaseFacade.lookupDestinationLocally(Hash key) |
void |
DummyNetworkDatabaseFacade.lookupLeaseSet(Hash key,
Job onFindJob,
Job onFailedLookupJob,
long timeoutMs) |
void |
DummyNetworkDatabaseFacade.lookupLeaseSet(Hash key,
Job onFindJob,
Job onFailedLookupJob,
long timeoutMs,
Hash fromLocalDest) |
LeaseSet |
DummyNetworkDatabaseFacade.lookupLeaseSetLocally(Hash key) |
void |
DummyNetworkDatabaseFacade.lookupLeaseSetRemotely(Hash key,
Hash fromLocalDest) |
DatabaseEntry |
DummyNetworkDatabaseFacade.lookupLocally(Hash key) |
void |
DummyNetworkDatabaseFacade.lookupRouterInfo(Hash key,
Job onFindJob,
Job onFailedLookupJob,
long timeoutMs) |
RouterInfo |
DummyNetworkDatabaseFacade.lookupRouterInfoLocally(Hash key) |
void |
VMCommSystem.receive(byte[] message,
Hash fromPeer)
We send messages between comms as bytes so that we strip any router-local
info.
|
void |
DummyPeerManagerFacade.removeCapabilities(Hash peer) |
void |
DummyClientManagerFacade.requestLeaseSet(Hash dest,
LeaseSet set) |
TunnelInfo |
DummyTunnelManagerFacade.selectInboundExploratoryTunnel(Hash closestTo) |
TunnelInfo |
DummyTunnelManagerFacade.selectInboundTunnel(Hash destination) |
TunnelInfo |
DummyTunnelManagerFacade.selectInboundTunnel(Hash destination,
Hash closestTo) |
TunnelInfo |
DummyTunnelManagerFacade.selectOutboundExploratoryTunnel(Hash closestTo) |
TunnelInfo |
DummyTunnelManagerFacade.selectOutboundTunnel(Hash destination) |
TunnelInfo |
DummyTunnelManagerFacade.selectOutboundTunnel(Hash destination,
Hash closestTo) |
void |
DummyPeerManagerFacade.setCapabilities(Hash peer,
String caps) |
void |
DummyTunnelManagerFacade.setInboundSettings(Hash client,
TunnelPoolSettings settings) |
void |
DummyTunnelManagerFacade.setOutboundSettings(Hash client,
TunnelPoolSettings settings) |
LeaseSet |
DummyNetworkDatabaseFacade.store(Hash key,
LeaseSet leaseSet) |
RouterInfo |
DummyNetworkDatabaseFacade.store(Hash key,
RouterInfo routerInfo) |
Modifier and Type | Method and Description |
---|---|
Set<Hash> |
DummyNetworkDatabaseFacade.findNearestRouters(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore) |
Modifier and Type | Method and Description |
---|---|
(package private) static GarlicMessage |
OutboundClientMessageJobHelper.createGarlicMessage(RouterContext ctx,
long replyToken,
long expiration,
PublicKey recipientPK,
PayloadGarlicConfig dataClove,
Hash from,
Destination dest,
TunnelInfo replyTunnel,
int tagsToSendOverride,
int lowTagsOverride,
SessionKey wrappedKey,
Set<SessionTag> wrappedTags,
boolean requireAck,
LeaseSet bundledReplyLeaseSet)
Allow the app to specify the data clove directly, which enables OutboundClientMessage to resend the
same payload (including expiration and unique id) in different garlics (down different tunnels)
This is called from OCMOSJ
|
Job |
GarlicMessageHandler.createJob(I2NPMessage receivedMessage,
RouterIdentity from,
Hash fromHash) |
(package private) static boolean |
GarlicMessageBuilder.needsTags(RouterContext ctx,
PublicKey key,
Hash local,
int minTagOverride) |
Constructor and Description |
---|
GarlicMessageReceiver(RouterContext context,
GarlicMessageReceiver.CloveReceiver receiver,
Hash clientDestination) |
HandleGarlicMessageJob(RouterContext context,
GarlicMessage msg,
RouterIdentity from,
Hash fromHash) |
OutboundCache.HashPair(Hash s,
Hash d) |
SendMessageDirectJob(RouterContext ctx,
I2NPMessage message,
Hash toPeer,
int timeoutMs,
int priority) |
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 | Method and Description |
---|---|
protected void |
HandleDatabaseLookupMessageJob.sendClosest(Hash key,
Set<Hash> routerHashes,
Hash toPeer,
TunnelId replyTunnel) |
protected void |
HandleDatabaseLookupMessageJob.sendMessage(I2NPMessage message,
Hash toPeer,
TunnelId replyTunnel) |
Modifier and Type | Method and Description |
---|---|
protected void |
HandleDatabaseLookupMessageJob.sendClosest(Hash key,
Set<Hash> routerHashes,
Hash toPeer,
TunnelId replyTunnel) |
Constructor and Description |
---|
HandleDatabaseLookupMessageJob(RouterContext ctx,
DatabaseLookupMessage receivedMessage,
RouterIdentity from,
Hash fromHash) |
Modifier and Type | Class and Description |
---|---|
(package private) class |
LocalHash
Pull the caching used only by KBucketImpl out of Hash and put it here.
|
Modifier and Type | Field and Description |
---|---|
protected Hash |
FloodSearchJob._key |
Modifier and Type | Method and Description |
---|---|
Hash |
IterativeSearchJob.getFromHash()
Hash of the dest this query is from
|
protected Hash |
FloodSearchJob.getKey() |
(package private) static Hash |
PersistentDataStore.getRouterInfoHash(String filename)
Package private for installer BundleRouterInfos
|
Hash |
StoreState.getTarget() |
Hash |
SearchState.getTarget() |
Modifier and Type | Method and Description |
---|---|
Set<Hash> |
KademliaNetworkDatabaseFacade.findNearestRouters(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore)
Get the routers closest to that key in response to a remote lookup
Only used by ../HDLMJ
Set MAY INCLUDE our own router - add to peersToIgnore if you don't want
|
Set<Hash> |
KademliaNetworkDatabaseFacade.getAllRouters()
get the hashes for all known routers
|
Set<Hash> |
StoreState.getAttempted() |
Set<Hash> |
SearchState.getAttempted() |
Set<Hash> |
SearchState.getClosestAttempted(int max) |
Set<Hash> |
KademliaNetworkDatabaseFacade.getExploreKeys() |
Set<Hash> |
StoreState.getFailed()
getFailed
|
Set<Hash> |
SearchState.getFailed() |
List<Hash> |
FloodfillNetworkDatabaseFacade.getFloodfillPeers()
list of the Hashes of currently known floodfill peers;
Returned list will not include our own hash.
|
(package private) KBucketSet<Hash> |
KademliaNetworkDatabaseFacade.getKBuckets() |
Set<Hash> |
DataStore.getKeys() |
Set<Hash> |
TransientDataStore.getKeys() |
Set<Map.Entry<Hash,DatabaseEntry>> |
DataStore.getMapEntries() |
Set<Map.Entry<Hash,DatabaseEntry>> |
TransientDataStore.getMapEntries() |
Set<Hash> |
StoreState.getPending() |
Set<Hash> |
SearchState.getPending() |
Set<Hash> |
SearchState.getRepliedPeers() |
Set<Hash> |
StoreState.getSuccessful() |
Set<Hash> |
SearchState.getSuccessful() |
(package private) List<Hash> |
FloodfillPeerSelector.selectFloodfillParticipants(Hash key,
int maxNumRouters,
KBucketSet<Hash> kbuckets)
Sort the floodfills.
|
(package private) List<Hash> |
FloodfillPeerSelector.selectFloodfillParticipants(Hash key,
int howMany,
Set<Hash> toIgnore,
KBucketSet<Hash> kbuckets)
See above for description
List will not include our own hash
|
(package private) List<Hash> |
FloodfillPeerSelector.selectFloodfillParticipants(KBucketSet<Hash> kbuckets) |
(package private) List<Hash> |
PeerSelector.selectMostReliablePeers(Hash key,
int numClosest,
Set<Hash> alreadyChecked,
KBucketSet<Hash> kbuckets)
UNUSED - See FloodfillPeerSelector override
Search through the kbucket set to find the most reliable peers close to the
given key, skipping all of the ones already checked
List will not include our own hash.
|
(package private) List<Hash> |
FloodfillPeerSelector.selectMostReliablePeers(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore,
KBucketSet<Hash> kbuckets)
Pick out peers with the floodfill capacity set, returning them first, but then
after they're complete, sort via kademlia.
|
(package private) List<Hash> |
PeerSelector.selectNearest(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore,
KBucketSet<Hash> kbuckets)
UNUSED - See FloodfillPeerSelector override
Generic KBucket filtering to find the hashes close to a key, regardless of other considerations.
|
(package private) List<Hash> |
FloodfillPeerSelector.selectNearest(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore,
KBucketSet<Hash> kbuckets)
Floodfill peers only.
|
(package private) List<Hash> |
PeerSelector.selectNearestExplicit(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore,
KBucketSet<Hash> kbuckets)
Ignore KBucket ordering and do the XOR explicitly per key.
|
(package private) List<Hash> |
PeerSelector.selectNearestExplicitThin(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore,
KBucketSet<Hash> kbuckets)
UNUSED - See FloodfillPeerSelector override
Ignore KBucket ordering and do the XOR explicitly per key.
|
(package private) List<Hash> |
FloodfillPeerSelector.selectNearestExplicitThin(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore,
KBucketSet<Hash> kbuckets)
Pick out peers with the floodfill capacity set, returning them first, but then
after they're complete, sort via kademlia.
|
(package private) List<Hash> |
FloodfillPeerSelector.selectNearestExplicitThin(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore,
KBucketSet<Hash> kbuckets,
boolean preferConnected)
Pick out peers with the floodfill capacity set, returning them first, but then
after they're complete, sort via kademlia.
|
Modifier and Type | Method and Description |
---|---|
(package private) boolean |
SearchJob.add(Hash peer) |
void |
StoreState.addPending(Hash peer) |
void |
SearchState.addPending(Hash peer) |
void |
StoreState.addPending(Hash peer,
MessageWrapper.WrappedMessage msg) |
void |
StoreState.addSkipped(Hash peer)
we aren't even going to try to contact this peer
|
protected I2NPMessage |
ExploreJob.buildMessage(TunnelId replyTunnelId,
Hash replyGateway,
long expiration,
RouterInfo peer)
Build the database search message, but unlike the normal searches, we're more explicit in
what we /dont/ want.
|
protected I2NPMessage |
SearchJob.buildMessage(TunnelId replyTunnelId,
Hash replyGateway,
long expiration,
RouterInfo peer)
Build the database search message
|
byte[] |
LocalHash.cachedXor(Hash key)
Calculate the xor with the current object and the specified hash,
caching values where possible.
|
(package private) void |
FloodfillNetworkDatabaseFacade.complete(Hash key)
Must be called by the search job queued by search() on success or failure
|
long |
StoreState.confirmed(Hash peer) |
Job |
FloodfillDatabaseLookupMessageHandler.createJob(I2NPMessage receivedMessage,
RouterIdentity from,
Hash fromHash) |
Job |
FloodfillDatabaseStoreMessageHandler.createJob(I2NPMessage receivedMessage,
RouterIdentity from,
Hash fromHash) |
long |
SearchState.dataFound(Hash peer)
how long did it take to get the reply, or -1 if we don't know
|
(package private) int |
FloodOnlySearchJob.decrementRemaining(Hash peer)
Note that we heard from the peer
|
(package private) void |
KademliaNetworkDatabaseFacade.dropAfterLookupFailed(Hash peer)
Final remove for a router info.
|
void |
KademliaNetworkDatabaseFacade.fail(Hash dbEntry)
Final remove for a leaseset.
|
(package private) void |
IterativeSearchJob.failed(Hash peer,
boolean timedOut)
Note that the peer did not respond with a DSM
(either a DSRM, timeout, or failure).
|
Set<Hash> |
KademliaNetworkDatabaseFacade.findNearestRouters(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore)
Get the routers closest to that key in response to a remote lookup
Only used by ../HDLMJ
Set MAY INCLUDE our own router - add to peersToIgnore if you don't want
|
static MessageWrapper.OneTimeSession |
MessageWrapper.generateSession(RouterContext ctx,
Hash localDest)
Create a single key and tag, for receiving a single encrypted message,
and register it with the client's session key manager, to expire in two minutes.
|
DatabaseEntry |
PersistentDataStore.get(Hash key) |
DatabaseEntry |
DataStore.get(Hash key) |
DatabaseEntry |
TransientDataStore.get(Hash key) |
DatabaseEntry |
PersistentDataStore.get(Hash key,
boolean persist)
Prepare for having only a partial set in memory and the rest on disk
|
DatabaseEntry |
DataStore.get(Hash key,
boolean persist) |
DatabaseEntry |
TransientDataStore.get(Hash key,
boolean persist)
for PersistentDataStore only - don't use here
|
Destination |
NegativeLookupCache.getBadDest(Hash h)
Get an unsupported but cached Destination
|
int |
KademliaNetworkDatabaseFacade.getPeerTimeout(Hash peer)
todo: does this need more tuning?
|
MessageWrapper.WrappedMessage |
StoreState.getPendingMessage(Hash peer) |
protected int |
SearchJob.getPerPeerTimeoutMs(Hash peer) |
static File |
PersistentDataStore.getRouterInfoFile(RouterContext ctx,
Hash hash)
The persistent RI file for a hash.
|
boolean |
NegativeLookupCache.isCached(Hash h) |
boolean |
DataStore.isKnown(Hash key) |
boolean |
TransientDataStore.isKnown(Hash key) |
(package private) boolean |
KademliaNetworkDatabaseFacade.isNegativeCached(Hash key)
Is the key in the negative lookup cache?
|
boolean |
KademliaNetworkDatabaseFacade.isNegativeCachedForever(Hash key)
Is it permanently negative cached?
|
(package private) boolean |
FloodfillNetworkDatabaseFacade.isVerifyInProgress(Hash h) |
protected void |
KademliaNetworkDatabaseFacade.lookupBeforeDropping(Hash peer,
RouterInfo info)
don't use directly - see F.N.D.F.
|
protected void |
FloodfillNetworkDatabaseFacade.lookupBeforeDropping(Hash peer,
RouterInfo info)
Search for a newer router info, drop it from the db if the search fails,
unless just started up or have bigger problems.
|
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.
|
Destination |
KademliaNetworkDatabaseFacade.lookupDestinationLocally(Hash key)
Lookup locally in netDB and in badDest cache
Succeeds even if LS validation fails due to unsupported sig type, expired, etc.
|
void |
NegativeLookupCache.lookupFailed(Hash h) |
(package private) void |
KademliaNetworkDatabaseFacade.lookupFailed(Hash key)
Increment in the negative lookup cache
|
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.
|
LeaseSet |
KademliaNetworkDatabaseFacade.lookupLeaseSetLocally(Hash key)
Use lookupDestination() if you don't need the LS or don't need it validated.
|
void |
KademliaNetworkDatabaseFacade.lookupLeaseSetRemotely(Hash key,
Hash fromLocalDest)
Unconditionally lookup using the client's tunnels.
|
DatabaseEntry |
KademliaNetworkDatabaseFacade.lookupLocally(Hash key) |
(package private) DatabaseEntry |
KademliaNetworkDatabaseFacade.lookupLocallyWithoutValidation(Hash key)
Not for use without validation
|
void |
KademliaNetworkDatabaseFacade.lookupRouterInfo(Hash key,
Job onFindJob,
Job onFailedLookupJob,
long timeoutMs) |
RouterInfo |
KademliaNetworkDatabaseFacade.lookupRouterInfoLocally(Hash key) |
(package private) void |
IterativeSearchJob.newPeerToTry(Hash peer)
A new (floodfill) peer was discovered that may have the answer.
|
boolean |
PersistentDataStore.put(Hash key,
DatabaseEntry data) |
boolean |
DataStore.put(Hash key,
DatabaseEntry data) |
boolean |
TransientDataStore.put(Hash key,
DatabaseEntry data) |
boolean |
PersistentDataStore.put(Hash key,
DatabaseEntry data,
boolean persist) |
boolean |
DataStore.put(Hash key,
DatabaseEntry data,
boolean persist) |
boolean |
TransientDataStore.put(Hash key,
DatabaseEntry data,
boolean persist)
for PersistentDataStore only - don't use here
|
DatabaseEntry |
PersistentDataStore.remove(Hash key) |
DatabaseEntry |
DataStore.remove(Hash key) |
DatabaseEntry |
TransientDataStore.remove(Hash key) |
DatabaseEntry |
PersistentDataStore.remove(Hash key,
boolean persist) |
DatabaseEntry |
DataStore.remove(Hash key,
boolean persist) |
DatabaseEntry |
TransientDataStore.remove(Hash key,
boolean persist)
for PersistentDataStore only - don't use here
|
void |
SearchState.removePending(Hash peer)
we didn't actually want to add this peer as part of the pending list...
|
(package private) void |
SearchJob.replyFound(DatabaseSearchReplyMessage message,
Hash peer)
found a reply
|
long |
SearchState.replyFound(Hash peer)
how long did it take to get the reply, or -1 if we dont know
|
void |
StoreState.replyTimeout(Hash peer)
public long confirmedExploratory(Hash peer) {
long rv = -1;
synchronized (_pendingPeers) {
_pendingPeers.remove(peer);
Long when = _pendingPeerTimes.remove(peer);
if (when != null)
rv = _context.clock().now() - when.longValue();
}
synchronized (_successfulExploratoryPeers) {
_successfulExploratoryPeers.add(peer);
}
return rv;
}
|
void |
SearchState.replyTimeout(Hash peer) |
(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)
Lookup using exploratory tunnels.
|
(package private) SearchJob |
KademliaNetworkDatabaseFacade.search(Hash key,
Job onFindJob,
Job onFailedLookupJob,
long timeoutMs,
boolean isLease,
Hash fromLocalDest)
Unused - see FNDF
|
(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) void |
KademliaNetworkDatabaseFacade.searchComplete(Hash key)
The search for the given key is no longer active
|
(package private) List<Hash> |
FloodfillPeerSelector.selectFloodfillParticipants(Hash key,
int maxNumRouters,
KBucketSet<Hash> kbuckets)
Sort the floodfills.
|
(package private) List<Hash> |
FloodfillPeerSelector.selectFloodfillParticipants(Hash key,
int howMany,
Set<Hash> toIgnore,
KBucketSet<Hash> kbuckets)
See above for description
List will not include our own hash
|
(package private) List<Hash> |
PeerSelector.selectMostReliablePeers(Hash key,
int numClosest,
Set<Hash> alreadyChecked,
KBucketSet<Hash> kbuckets)
UNUSED - See FloodfillPeerSelector override
Search through the kbucket set to find the most reliable peers close to the
given key, skipping all of the ones already checked
List will not include our own hash.
|
(package private) List<Hash> |
FloodfillPeerSelector.selectMostReliablePeers(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore,
KBucketSet<Hash> kbuckets)
Pick out peers with the floodfill capacity set, returning them first, but then
after they're complete, sort via kademlia.
|
(package private) List<Hash> |
PeerSelector.selectNearest(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore,
KBucketSet<Hash> kbuckets)
UNUSED - See FloodfillPeerSelector override
Generic KBucket filtering to find the hashes close to a key, regardless of other considerations.
|
(package private) List<Hash> |
FloodfillPeerSelector.selectNearest(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore,
KBucketSet<Hash> kbuckets)
Floodfill peers only.
|
(package private) List<Hash> |
PeerSelector.selectNearestExplicit(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore,
KBucketSet<Hash> kbuckets)
Ignore KBucket ordering and do the XOR explicitly per key.
|
(package private) List<Hash> |
PeerSelector.selectNearestExplicitThin(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore,
KBucketSet<Hash> kbuckets)
UNUSED - See FloodfillPeerSelector override
Ignore KBucket ordering and do the XOR explicitly per key.
|
(package private) List<Hash> |
FloodfillPeerSelector.selectNearestExplicitThin(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore,
KBucketSet<Hash> kbuckets)
Pick out peers with the floodfill capacity set, returning them first, but then
after they're complete, sort via kademlia.
|
(package private) List<Hash> |
FloodfillPeerSelector.selectNearestExplicitThin(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore,
KBucketSet<Hash> kbuckets,
boolean preferConnected)
Pick out peers with the floodfill capacity set, returning them first, but then
after they're complete, sort via kademlia.
|
protected void |
HandleFloodfillDatabaseLookupMessageJob.sendClosest(Hash key,
Set<Hash> routerInfoSet,
Hash toPeer,
TunnelId replyTunnel)
We extend this here to send our routerInfo back as well, if we are not floodfill.
|
void |
KademliaNetworkDatabaseFacade.sendStore(Hash key,
DatabaseEntry ds,
Job onSuccess,
Job onFailure,
long sendTimeout,
Set<Hash> toIgnore)
unused (overridden in FNDF)
|
void |
FloodfillNetworkDatabaseFacade.sendStore(Hash key,
DatabaseEntry ds,
Job onSuccess,
Job onFailure,
long sendTimeout,
Set<Hash> toIgnore) |
(package private) boolean |
FloodThrottler.shouldThrottle(Hash h)
increments before checking
|
(package private) boolean |
LookupThrottler.shouldThrottle(Hash key,
TunnelId id)
increments before checking
|
(package private) boolean |
FloodfillNetworkDatabaseFacade.shouldThrottleFlood(Hash key)
Increments and tests.
|
(package private) boolean |
FloodfillNetworkDatabaseFacade.shouldThrottleLookup(Hash from,
TunnelId id)
Increments and tests.
|
(package private) void |
KademliaNetworkDatabaseFacade.stopPublishing(Hash target) |
LeaseSet |
KademliaNetworkDatabaseFacade.store(Hash key,
LeaseSet leaseSet)
Store the leaseSet.
|
RouterInfo |
KademliaNetworkDatabaseFacade.store(Hash key,
RouterInfo routerInfo)
Store the routerInfo.
|
(package private) RouterInfo |
KademliaNetworkDatabaseFacade.store(Hash key,
RouterInfo routerInfo,
boolean persist)
Store the routerInfo.
|
(package private) long |
IterativeSearchJob.timeSent(Hash peer)
When did we send the query to the peer?
|
(package private) void |
FloodfillNetworkDatabaseFacade.verifyFinished(Hash h) |
(package private) void |
FloodfillNetworkDatabaseFacade.verifyStarted(Hash h) |
boolean |
SearchState.wasAttempted(Hash peer) |
(package private) boolean |
SearchJob.wasAttempted(Hash peer) |
boolean |
IterativeSearchJob.wasQueried(Hash peer)
Did we send a request to this peer?
|
(package private) static MessageWrapper.WrappedMessage |
MessageWrapper.wrap(RouterContext ctx,
I2NPMessage m,
Hash from,
RouterInfo to)
Garlic wrap a message from a client or this router, destined for a router,
to hide the contents from the OBEP.
|
Modifier and Type | Method and Description |
---|---|
void |
StoreState.addPending(Collection<Hash> pending) |
void |
SearchState.addPending(Collection<Hash> pending) |
Set<Hash> |
KademliaNetworkDatabaseFacade.findNearestRouters(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore)
Get the routers closest to that key in response to a remote lookup
Only used by ../HDLMJ
Set MAY INCLUDE our own router - add to peersToIgnore if you don't want
|
void |
KademliaNetworkDatabaseFacade.queueForExploration(Collection<Hash> keys) |
void |
KademliaNetworkDatabaseFacade.removeFromExploreKeys(Collection<Hash> toRemove) |
(package private) List<Hash> |
FloodfillPeerSelector.selectFloodfillParticipants(Hash key,
int maxNumRouters,
KBucketSet<Hash> kbuckets)
Sort the floodfills.
|
(package private) List<Hash> |
FloodfillPeerSelector.selectFloodfillParticipants(Hash key,
int howMany,
Set<Hash> toIgnore,
KBucketSet<Hash> kbuckets)
See above for description
List will not include our own hash
|
(package private) List<Hash> |
FloodfillPeerSelector.selectFloodfillParticipants(Hash key,
int howMany,
Set<Hash> toIgnore,
KBucketSet<Hash> kbuckets)
See above for description
List will not include our own hash
|
(package private) List<Hash> |
FloodfillPeerSelector.selectFloodfillParticipants(KBucketSet<Hash> kbuckets) |
(package private) List<Hash> |
PeerSelector.selectMostReliablePeers(Hash key,
int numClosest,
Set<Hash> alreadyChecked,
KBucketSet<Hash> kbuckets)
UNUSED - See FloodfillPeerSelector override
Search through the kbucket set to find the most reliable peers close to the
given key, skipping all of the ones already checked
List will not include our own hash.
|
(package private) List<Hash> |
PeerSelector.selectMostReliablePeers(Hash key,
int numClosest,
Set<Hash> alreadyChecked,
KBucketSet<Hash> kbuckets)
UNUSED - See FloodfillPeerSelector override
Search through the kbucket set to find the most reliable peers close to the
given key, skipping all of the ones already checked
List will not include our own hash.
|
(package private) List<Hash> |
FloodfillPeerSelector.selectMostReliablePeers(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore,
KBucketSet<Hash> kbuckets)
Pick out peers with the floodfill capacity set, returning them first, but then
after they're complete, sort via kademlia.
|
(package private) List<Hash> |
FloodfillPeerSelector.selectMostReliablePeers(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore,
KBucketSet<Hash> kbuckets)
Pick out peers with the floodfill capacity set, returning them first, but then
after they're complete, sort via kademlia.
|
(package private) List<Hash> |
PeerSelector.selectNearest(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore,
KBucketSet<Hash> kbuckets)
UNUSED - See FloodfillPeerSelector override
Generic KBucket filtering to find the hashes close to a key, regardless of other considerations.
|
(package private) List<Hash> |
PeerSelector.selectNearest(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore,
KBucketSet<Hash> kbuckets)
UNUSED - See FloodfillPeerSelector override
Generic KBucket filtering to find the hashes close to a key, regardless of other considerations.
|
(package private) List<Hash> |
FloodfillPeerSelector.selectNearest(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore,
KBucketSet<Hash> kbuckets)
Floodfill peers only.
|
(package private) List<Hash> |
FloodfillPeerSelector.selectNearest(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore,
KBucketSet<Hash> kbuckets)
Floodfill peers only.
|
(package private) List<Hash> |
PeerSelector.selectNearestExplicit(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore,
KBucketSet<Hash> kbuckets)
Ignore KBucket ordering and do the XOR explicitly per key.
|
(package private) List<Hash> |
PeerSelector.selectNearestExplicit(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore,
KBucketSet<Hash> kbuckets)
Ignore KBucket ordering and do the XOR explicitly per key.
|
(package private) List<Hash> |
PeerSelector.selectNearestExplicitThin(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore,
KBucketSet<Hash> kbuckets)
UNUSED - See FloodfillPeerSelector override
Ignore KBucket ordering and do the XOR explicitly per key.
|
(package private) List<Hash> |
PeerSelector.selectNearestExplicitThin(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore,
KBucketSet<Hash> kbuckets)
UNUSED - See FloodfillPeerSelector override
Ignore KBucket ordering and do the XOR explicitly per key.
|
(package private) List<Hash> |
FloodfillPeerSelector.selectNearestExplicitThin(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore,
KBucketSet<Hash> kbuckets)
Pick out peers with the floodfill capacity set, returning them first, but then
after they're complete, sort via kademlia.
|
(package private) List<Hash> |
FloodfillPeerSelector.selectNearestExplicitThin(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore,
KBucketSet<Hash> kbuckets)
Pick out peers with the floodfill capacity set, returning them first, but then
after they're complete, sort via kademlia.
|
(package private) List<Hash> |
FloodfillPeerSelector.selectNearestExplicitThin(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore,
KBucketSet<Hash> kbuckets,
boolean preferConnected)
Pick out peers with the floodfill capacity set, returning them first, but then
after they're complete, sort via kademlia.
|
(package private) List<Hash> |
FloodfillPeerSelector.selectNearestExplicitThin(Hash key,
int maxNumRouters,
Set<Hash> peersToIgnore,
KBucketSet<Hash> kbuckets,
boolean preferConnected)
Pick out peers with the floodfill capacity set, returning them first, but then
after they're complete, sort via kademlia.
|
protected void |
HandleFloodfillDatabaseLookupMessageJob.sendClosest(Hash key,
Set<Hash> routerInfoSet,
Hash toPeer,
TunnelId replyTunnel)
We extend this here to send our routerInfo back as well, if we are not floodfill.
|
void |
KademliaNetworkDatabaseFacade.sendStore(Hash key,
DatabaseEntry ds,
Job onSuccess,
Job onFailure,
long sendTimeout,
Set<Hash> toIgnore)
unused (overridden in FNDF)
|
void |
FloodfillNetworkDatabaseFacade.sendStore(Hash key,
DatabaseEntry ds,
Job onSuccess,
Job onFailure,
long sendTimeout,
Set<Hash> toIgnore) |
Constructor and Description |
---|
ExploreJob(RouterContext context,
KademliaNetworkDatabaseFacade facade,
Hash key)
Create a new search for the routingKey specified
|
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) |
FloodfillVerifyStoreJob(RouterContext ctx,
Hash key,
long published,
boolean isRouterInfo,
Hash sentTo,
FloodfillNetworkDatabaseFacade facade)
Delay a few seconds, then start the verify
|
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) |
HandleFloodfillDatabaseLookupMessageJob(RouterContext ctx,
DatabaseLookupMessage receivedMessage,
RouterIdentity from,
Hash fromHash) |
HandleFloodfillDatabaseStoreMessageJob(RouterContext ctx,
DatabaseStoreMessage receivedMessage,
RouterIdentity from,
Hash fromHash,
FloodfillNetworkDatabaseFacade facade) |
IterativeFollowupJob(RouterContext ctx,
Hash key,
Hash to,
IterativeSearchJob search) |
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.
|
IterativeTimeoutJob(RouterContext ctx,
Hash peer,
IterativeSearchJob job) |
LocalHash(Hash h) |
RepublishLeaseSetJob(RouterContext ctx,
KademliaNetworkDatabaseFacade facade,
Hash destHash) |
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
|
SearchReplyJob(RouterContext enclosingContext,
SearchJob job,
DatabaseSearchReplyMessage message,
Hash peer,
long duration) |
SearchState(RouterContext context,
Hash key) |
SingleSearchJob(RouterContext ctx,
Hash key,
Hash to) |
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) |
StoreState(RouterContext ctx,
Hash key,
DatabaseEntry data) |
StoreState(RouterContext ctx,
Hash key,
DatabaseEntry data,
Set<Hash> toSkip) |
Constructor and Description |
---|
FloodfillStoreJob(RouterContext context,
FloodfillNetworkDatabaseFacade facade,
Hash key,
DatabaseEntry data,
Job onSuccess,
Job onFailure,
long timeoutMs,
Set<Hash> toSkip) |
StoreJob(RouterContext context,
KademliaNetworkDatabaseFacade facade,
Hash key,
DatabaseEntry data,
Job onSuccess,
Job onFailure,
long timeoutMs,
Set<Hash> toSkip) |
StoreState(RouterContext ctx,
Hash key,
DatabaseEntry data,
Set<Hash> toSkip) |
Modifier and Type | Method and Description |
---|---|
Hash |
PeerProfile.getPeer()
what peer is being profiled, non-null
|
Hash |
ProfileOrganizer.getUs() |
Hash |
PeerManagerFacadeImpl.selectRandomByCapability(char capability)
Deprecated.
unused
|
Modifier and Type | Method and Description |
---|---|
Set<Hash> |
PeerManagerFacadeImpl.getPeersByCapability(char capability) |
Set<Hash> |
PeerManager.getPeersByCapability(char capability) |
Set<Hash> |
ProfileOrganizer.selectAllPeers()
Find the hashes for all peers we are actively profiling
|
(package private) Set<Hash> |
PeerManager.selectPeers() |
List<Hash> |
PeerManagerFacadeImpl.selectPeers(PeerSelectionCriteria criteria) |
(package private) List<Hash> |
PeerManager.selectPeers(PeerSelectionCriteria criteria)
Find some peers that meet the criteria and we have the netDb info for locally.
|
List<Hash> |
ProfileOrganizer.selectPeersLocallyUnreachable()
Get the peers the transport layer thinks are unreachable, and
add in the peers with the SSU peer testing bug,
and peers requiring introducers.
|
List<Hash> |
ProfileOrganizer.selectPeersRecentlyRejecting()
Get the peers that have recently rejected us for bandwidth
recent == last 20s
|
Modifier and Type | Method and Description |
---|---|
void |
ProfileManagerImpl.commErrorOccurred(Hash peer)
Note that there was some sort of communication error talking with the peer
|
void |
ProfileManagerImpl.dbLookupFailed(Hash peer)
Note that the peer was unable to reply to a db lookup - either with data or with
a lookupReply redirecting the user elsewhere
This will force creation of DB stats
|
void |
ProfileManagerImpl.dbLookupReceived(Hash peer)
Note that the local router received a db lookup from the given peer
|
void |
ProfileManagerImpl.dbLookupReply(Hash peer,
int newPeers,
int oldPeers,
int invalid,
int duplicate,
long responseTimeMs)
Note that the peer replied to a db lookup with a redirect to other routers, where
the list of redirected users included newPeers routers that the local router didn't
know about, oldPeers routers that the local router already knew about, the given invalid
routers that were invalid in some way, and the duplicate number of routers that we explicitly
asked them not to send us, but they did anyway
|
void |
ProfileManagerImpl.dbLookupSuccessful(Hash peer,
long responseTimeMs)
Note that the peer was able to return the valid data for a db lookup
This will force creation of DB stats
|
void |
ProfileManagerImpl.dbStoreFailed(Hash peer)
Note that we were unable to confirm a successful send of db data to
the peer, at least not within our timeout period
This will force creation of DB stats
|
void |
ProfileManagerImpl.dbStoreReceived(Hash peer,
boolean wasNewKey)
Note that the local router received an unprompted db store from the given peer
|
void |
ProfileManagerImpl.dbStoreSent(Hash peer,
long responseTimeMs)
Note that we've confirmed a successful send of db data to the peer (though we haven't
necessarily requested it again from them, so they /might/ be lying)
This is not really interesting, since they could be lying, so we do not
increment any DB stats at all.
|
void |
ProfileManagerImpl.dbStoreSuccessful(Hash peer)
Note that we've verified a successful send of db data to the floodfill peer
by querying another floodfill.
|
boolean |
ProfileOrganizer.exportProfile(Hash profile,
OutputStream out) |
PeerProfile |
ProfileOrganizer.getProfile(Hash peer)
Retrieve the profile for the given peer, if one exists (else null).
|
PeerProfile |
ProfileOrganizer.getProfileNonblocking(Hash peer)
Retrieve the profile for the given peer, if one exists (else null).
|
void |
ProfileManagerImpl.heardAbout(Hash peer)
Note that the local router received a reference to the given peer, either
through an explicit dbStore or in a dbLookupReply
|
void |
ProfileManagerImpl.heardAbout(Hash peer,
long when)
Note that the local router received a reference to the given peer
at a certain time.
|
boolean |
ProfileOrganizer.isFailing(Hash peer)
Deprecated for now, always false
|
boolean |
ProfileOrganizer.isFast(Hash peer) |
boolean |
ProfileOrganizer.isHighCapacity(Hash peer) |
boolean |
ProfileOrganizer.isSelectable(Hash peer) |
boolean |
ProfileOrganizer.isWellIntegrated(Hash peer) |
void |
ProfileManagerImpl.messageFailed(Hash peer)
Note that the router failed to send a message to the peer over any transport.
|
void |
ProfileManagerImpl.messageFailed(Hash peer,
String transport)
Note that the router failed to send a message to the peer over the transport specified.
|
void |
ProfileManagerImpl.messageReceived(Hash peer,
String style,
long msToReceive,
int bytesRead)
Note that the router received a message from the given peer on the specified
transport.
|
void |
ProfileManagerImpl.messageSent(Hash peer,
String transport,
long msToSend,
long bytesSent)
Note that it took msToSend to send a message of size bytesSent to the peer over the transport.
|
boolean |
ProfileOrganizer.peerSendsBadReplies(Hash peer)
Does the given peer send us bad replies - either invalid store messages
(expired, corrupt, etc) or unreachable replies (pointing towards routers
that don't exist).
|
void |
PeerManagerFacadeImpl.removeCapabilities(Hash peer) |
void |
PeerManager.removeCapabilities(Hash peer) |
void |
ProfileOrganizer.selectFastPeers(int howMany,
Set<Hash> exclude,
Set<Hash> matches,
Hash randomKey,
ProfileOrganizer.Slice subTierMode)
Return a set of Hashes for peers that are both fast and reliable.
|
void |
PeerManagerFacadeImpl.setCapabilities(Hash peer,
String caps) |
void |
PeerManager.setCapabilities(Hash peer,
String caps) |
void |
ProfileOrganizer.setUs(Hash us) |
void |
ProfilePersistenceHelper.setUs(Hash routerIdentHash) |
(package private) void |
PeerManager.storeProfile(Hash peer) |
void |
ProfileManagerImpl.tunnelDataPushed(Hash peer,
long rtt,
int size) |
void |
ProfileManagerImpl.tunnelDataPushed1m(Hash peer,
int size) |
void |
ProfileManagerImpl.tunnelFailed(Hash peer,
int pct)
Note that the peer participated in a tunnel that failed.
|
void |
ProfileManagerImpl.tunnelJoined(Hash peer,
long responseTimeMs)
Note that the router agreed to participate in a tunnel
|
void |
ProfileManagerImpl.tunnelLifetimePushed(Hash peer,
long lifetime,
long size) |
void |
ProfileManagerImpl.tunnelRejected(Hash peer,
long responseTimeMs,
int severity)
Note that a router explicitly rejected joining a tunnel.
|
void |
ProfileManagerImpl.tunnelTestSucceeded(Hash peer,
long responseTimeMs)
Note that a tunnel that the router is participating in
was successfully tested with the given round trip latency
|
void |
ProfileManagerImpl.tunnelTimedOut(Hash peer)
Note that a router did not respond to a tunnel join.
|
Modifier and Type | Method and Description |
---|---|
void |
ProfileOrganizer.selectActiveNotFailingPeers(int howMany,
Set<Hash> exclude,
Set<Hash> matches)
Return a set of Hashes for peers that are both not failing and we're actively
talking with.
|
void |
ProfileOrganizer.selectActiveNotFailingPeers(int howMany,
Set<Hash> exclude,
Set<Hash> matches)
Return a set of Hashes for peers that are both not failing and we're actively
talking with.
|
void |
ProfileOrganizer.selectAllNotFailingPeers(int howMany,
Set<Hash> exclude,
Set<Hash> matches,
boolean onlyNotFailing)
Return a set of Hashes for peers that are not failing.
|
void |
ProfileOrganizer.selectAllNotFailingPeers(int howMany,
Set<Hash> exclude,
Set<Hash> matches,
boolean onlyNotFailing)
Return a set of Hashes for peers that are not failing.
|
void |
ProfileOrganizer.selectFailingPeers(int howMany,
Set<Hash> exclude,
Set<Hash> matches)
I'm not quite sure why you'd want this...
|
void |
ProfileOrganizer.selectFailingPeers(int howMany,
Set<Hash> exclude,
Set<Hash> matches)
I'm not quite sure why you'd want this...
|
void |
ProfileOrganizer.selectFastPeers(int howMany,
Set<Hash> exclude,
Set<Hash> matches)
Return a set of Hashes for peers that are both fast and reliable.
|
void |
ProfileOrganizer.selectFastPeers(int howMany,
Set<Hash> exclude,
Set<Hash> matches)
Return a set of Hashes for peers that are both fast and reliable.
|
void |
ProfileOrganizer.selectFastPeers(int howMany,
Set<Hash> exclude,
Set<Hash> matches,
Hash randomKey,
ProfileOrganizer.Slice subTierMode)
Return a set of Hashes for peers that are both fast and reliable.
|
void |
ProfileOrganizer.selectFastPeers(int howMany,
Set<Hash> exclude,
Set<Hash> matches,
Hash randomKey,
ProfileOrganizer.Slice subTierMode)
Return a set of Hashes for peers that are both fast and reliable.
|
void |
ProfileOrganizer.selectFastPeers(int howMany,
Set<Hash> exclude,
Set<Hash> matches,
int mask)
Return a set of Hashes for peers that are both fast and reliable.
|
void |
ProfileOrganizer.selectFastPeers(int howMany,
Set<Hash> exclude,
Set<Hash> matches,
int mask)
Return a set of Hashes for peers that are both fast and reliable.
|
void |
ProfileOrganizer.selectHighCapacityPeers(int howMany,
Set<Hash> exclude,
Set<Hash> matches)
Return a set of Hashes for peers that have a high capacity
|
void |
ProfileOrganizer.selectHighCapacityPeers(int howMany,
Set<Hash> exclude,
Set<Hash> matches)
Return a set of Hashes for peers that have a high capacity
|
void |
ProfileOrganizer.selectHighCapacityPeers(int howMany,
Set<Hash> exclude,
Set<Hash> matches,
int mask) |
void |
ProfileOrganizer.selectHighCapacityPeers(int howMany,
Set<Hash> exclude,
Set<Hash> matches,
int mask) |
void |
ProfileOrganizer.selectNotFailingPeers(int howMany,
Set<Hash> exclude,
Set<Hash> matches)
Return a set of Hashes for peers that are not failing, preferring ones that
we are already talking with
|
void |
ProfileOrganizer.selectNotFailingPeers(int howMany,
Set<Hash> exclude,
Set<Hash> matches)
Return a set of Hashes for peers that are not failing, preferring ones that
we are already talking with
|
void |
ProfileOrganizer.selectNotFailingPeers(int howMany,
Set<Hash> exclude,
Set<Hash> matches,
boolean onlyNotFailing) |
void |
ProfileOrganizer.selectNotFailingPeers(int howMany,
Set<Hash> exclude,
Set<Hash> matches,
boolean onlyNotFailing) |
void |
ProfileOrganizer.selectNotFailingPeers(int howMany,
Set<Hash> exclude,
Set<Hash> matches,
boolean onlyNotFailing,
int mask)
Return a set of Hashes for peers that are not failing, preferring ones that
we are already talking with
|
void |
ProfileOrganizer.selectNotFailingPeers(int howMany,
Set<Hash> exclude,
Set<Hash> matches,
boolean onlyNotFailing,
int mask)
Return a set of Hashes for peers that are not failing, preferring ones that
we are already talking with
|
void |
ProfileOrganizer.selectNotFailingPeers(int howMany,
Set<Hash> exclude,
Set<Hash> matches,
int mask) |
void |
ProfileOrganizer.selectNotFailingPeers(int howMany,
Set<Hash> exclude,
Set<Hash> matches,
int mask) |
void |
ProfileOrganizer.selectWellIntegratedPeers(int howMany,
Set<Hash> exclude,
Set<Hash> matches)
Deprecated.
unused
|
void |
ProfileOrganizer.selectWellIntegratedPeers(int howMany,
Set<Hash> exclude,
Set<Hash> matches)
Deprecated.
unused
|
void |
ProfileOrganizer.selectWellIntegratedPeers(int howMany,
Set<Hash> exclude,
Set<Hash> matches,
int mask)
Deprecated.
unused
|
void |
ProfileOrganizer.selectWellIntegratedPeers(int howMany,
Set<Hash> exclude,
Set<Hash> matches,
int mask)
Deprecated.
unused
|
Constructor and Description |
---|
PeerProfile(RouterContext context,
Hash peer)
Caller should call setLastHeardAbout() and setFirstHeardAbout()
|
Modifier and Type | Method and Description |
---|---|
String |
CommSystemFacadeImpl.getCountry(Hash peer)
Uses the transport IP first because that lookup is fast,
then the IP from the netDb.
|
byte[] |
CommSystemFacadeImpl.getIP(Hash peer) |
byte[] |
TransportManager.getIP(Hash peer)
IP of the peer from the last connection (in or out, any transport).
|
static byte[] |
TransportImpl.getIP(Hash peer)
IP of the peer from the last connection (in or out, any transport).
|
boolean |
Transport.isBacklogged(Hash peer) |
boolean |
CommSystemFacadeImpl.isBacklogged(Hash peer) |
boolean |
TransportManager.isBacklogged(Hash peer) |
boolean |
TransportImpl.isBacklogged(Hash peer) |
boolean |
Transport.isEstablished(Hash peer) |
boolean |
CommSystemFacadeImpl.isEstablished(Hash peer) |
boolean |
TransportManager.isEstablished(Hash peer) |
boolean |
TransportImpl.isEstablished(Hash peer) |
boolean |
CommSystemFacadeImpl.isInBadCountry(Hash peer)
Are they in a bad place
|
boolean |
Transport.isUnreachable(Hash peer) |
boolean |
TransportImpl.isUnreachable(Hash peer) |
void |
TransportImpl.markReachable(Hash peer,
boolean isInbound)
called when we establish a peer connection (outbound or inbound)
|
void |
TransportImpl.markUnreachable(Hash peer)
called when we can't reach a peer
|
void |
Transport.mayDisconnect(Hash peer)
Tell the transport that we may disconnect from this peer.
|
void |
CommSystemFacadeImpl.mayDisconnect(Hash peer)
Tell the comm system that we may disconnect from this peer.
|
void |
TransportManager.mayDisconnect(Hash peer)
Tell the transports that we may disconnect from this peer.
|
void |
TransportImpl.mayDisconnect(Hash peer)
Tell the transport that we may disconnect from this peer.
|
void |
TransportManager.messageReceived(I2NPMessage message,
RouterIdentity fromRouter,
Hash fromRouterHash)
Message received
|
void |
TransportEventListener.messageReceived(I2NPMessage message,
RouterIdentity fromRouter,
Hash fromRouterHash)
Message received
|
void |
TransportImpl.messageReceived(I2NPMessage inMsg,
RouterIdentity remoteIdent,
Hash remoteIdentHash,
long msToReceive,
int bytesReceived)
Message received from the I2NPMessageReader - send it to the listener
|
String |
CommSystemFacadeImpl.renderPeerHTML(Hash peer)
Provide a consistent "look" for displaying router IDs in the console
|
void |
TransportImpl.setIP(Hash peer,
byte[] ip)
IP of the peer from the last connection (in or out, any transport).
|
boolean |
Transport.wasUnreachable(Hash peer)
Was the peer UNreachable (outbound only) the last time we tried it?
This is NOT reset if the peer contacts us and it is never expired.
|
boolean |
CommSystemFacadeImpl.wasUnreachable(Hash peer) |
boolean |
TransportManager.wasUnreachable(Hash peer)
Was the peer UNreachable (outbound only) on any transport,
based on the last time we tried it for each transport?
This is NOT reset if the peer contacts us.
|
boolean |
TransportImpl.wasUnreachable(Hash peer)
Was the peer UNreachable (outbound only) the last time we tried it?
This is NOT reset if the peer contacts us.
|
Modifier and Type | Method and Description |
---|---|
boolean |
NTCPTransport.isBacklogged(Hash dest) |
boolean |
NTCPTransport.isEstablished(Hash dest) |
void |
NTCPTransport.mayDisconnect(Hash peer)
Tell the transport that we may disconnect from this peer.
|
Modifier and Type | Method and Description |
---|---|
Hash |
InboundMessageState.getFrom() |
Hash |
RemoteHostId.getPeerHash() |
Hash |
PeerState.getRemotePeer()
The peer are we talking to.
|
Modifier and Type | Method and Description |
---|---|
void |
DummyThrottle.choke(Hash peer) |
void |
OutboundMessageFragments.ActiveThrottle.choke(Hash peer) |
void |
TimedWeightedPriorityMessageQueue.choke(Hash peer) |
(package private) void |
UDPTransport.dropPeer(Hash peer,
boolean shouldBanlist,
String why)
This does not send a session destroy, caller must do that if desired.
|
(package private) void |
UDPTransport.externalAddressReceived(Hash from,
byte[] ourIP,
int ourPort)
Someone we tried to contact gave us what they think our IP address is.
|
(package private) PeerState |
UDPTransport.getPeerState(Hash remotePeer)
get the state for the peer with the given ident, or null
if no state exists
|
boolean |
UDPTransport.isBacklogged(Hash dest) |
boolean |
DummyThrottle.isChoked(Hash peer) |
boolean |
OutboundMessageFragments.ActiveThrottle.isChoked(Hash peer) |
boolean |
TimedWeightedPriorityMessageQueue.isChoked(Hash peer) |
boolean |
UDPTransport.isEstablished(Hash dest) |
void |
UDPTransport.mayDisconnect(Hash peer)
Tell the transport that we may disconnect from this peer.
|
void |
UDPTransport.messageReceived(I2NPMessage inMsg,
RouterIdentity remoteIdent,
Hash remoteIdentHash,
long msToReceive,
int bytesReceived)
infinite loop
public RouterAddress getCurrentAddress() {
if (needsRebuild())
rebuildExternalAddress(false);
return super.getCurrentAddress();
}
|
void |
DummyThrottle.unchoke(Hash peer) |
void |
OutboundMessageFragments.ActiveThrottle.unchoke(Hash peer) |
void |
TimedWeightedPriorityMessageQueue.unchoke(Hash peer) |
Constructor and Description |
---|
InboundMessageState(RouterContext ctx,
long messageId,
Hash from) |
InboundMessageState(RouterContext ctx,
long messageId,
Hash from,
UDPPacketReader.DataReader data,
int dataFragment)
Create a new IMS and read in the data from the fragment.
|
PeerState(RouterContext ctx,
UDPTransport transport,
byte[] remoteIP,
int remotePort,
Hash remotePeer,
boolean isInbound) |
RemoteHostId(Hash peerHash)
indirect
|
Modifier and Type | Field and Description |
---|---|
protected Hash |
PendingGatewayMessage._toRouter |
Modifier and Type | Method and Description |
---|---|
Hash |
InboundEndpointProcessor.getDestination() |
Hash |
TunnelCreatorConfig.getDestination()
If this is a client tunnel, what destination is it for?
|
Hash |
TunnelCreatorConfig.getEndpoint()
For convenience
|
Hash |
TunnelCreatorConfig.getFarEnd()
For convenience
|
Hash |
TunnelCreatorConfig.getGateway()
For convenience
|
Hash |
TunnelCreatorConfig.getPeer(int hop)
retrieve the peer at the given hop.
|
Hash |
HopConfig.getReceiveFrom()
what is the previous peer in the tunnel (null if gateway)
|
Hash |
HopConfig.getSendTo()
what is the next peer in the tunnel (null if endpoint)
|
Hash |
InboundGatewayReceiver.getSendTo()
The next hop
|
Hash |
OutboundReceiver.getSendTo()
The next hop
|
Hash |
TunnelGateway.Receiver.getSendTo()
The next hop
|
Hash |
FragmentedMessage.getTargetRouter() |
Hash |
PendingGatewayMessage.getToRouter()
may be null
|
Modifier and Type | Method and Description |
---|---|
void |
PumpedTunnelGateway.add(I2NPMessage msg,
Hash toRouter,
TunnelId toTunnel)
Add a message to be sent down the tunnel, either sending it now (perhaps
coallesced with other pending messages) or after a brief pause (_flushFrequency).
|
void |
TunnelGatewayZeroHop.add(I2NPMessage msg,
Hash toRouter,
TunnelId toTunnel)
Add a message to be sent down the tunnel (immediately forwarding it to the
InboundMessageDistributor or OutboundMessageDistributor , as
necessary). |
void |
TunnelGateway.add(I2NPMessage msg,
Hash toRouter,
TunnelId toTunnel)
Add a message to be sent down the tunnel, either sending it now (perhaps
coallesced with other pending messages) or after a brief pause (_flushFrequency).
|
void |
ThrottledPumpedTunnelGateway.add(I2NPMessage msg,
Hash toRouter,
TunnelId toTunnel)
Possibly drop a message due to bandwidth before adding it to the preprocessor queue.
|
static void |
BuildMessageGenerator.createRecord(int recordNum,
int hop,
TunnelBuildMessage msg,
TunnelCreatorConfig cfg,
Hash replyRouter,
long replyTunnel,
I2PAppContext ctx,
PublicKey peerKey)
Place the asymmetrically encrypted record in the specified record slot,
containing the hop's configuration (as well as the reply info, if it is an outbound endpoint)
|
BuildRequestRecord |
BuildMessageProcessor.decrypt(TunnelBuildMessage msg,
Hash ourHash,
PrivateKey privKey)
Decrypt the record targetting us, encrypting all of the other records with the included
reply key and IV.
|
void |
OutboundTunnelEndpoint.dispatch(TunnelDataMessage msg,
Hash recvFrom) |
void |
TunnelDispatcher.dispatch(TunnelDataMessage msg,
Hash recvFrom)
We are participating in a tunnel (perhaps we're even the endpoint), so
take the message and do what it says.
|
void |
TunnelParticipant.dispatch(TunnelDataMessage msg,
Hash recvFrom) |
void |
TunnelDispatcher.dispatchOutbound(I2NPMessage msg,
TunnelId outboundTunnel,
Hash targetPeer)
We are the outbound tunnel gateway (we created it), so wrap up this message
with instructions to be forwarded to the targetPeer when it reaches the
endpoint.
|
void |
TunnelDispatcher.dispatchOutbound(I2NPMessage msg,
TunnelId outboundTunnel,
TunnelId targetTunnel,
Hash targetPeer)
We are the outbound tunnel gateway (we created it), so wrap up this message
with instructions to be forwarded to the targetTunnel on the targetPeer when
it reaches the endpoint.
|
void |
OutboundMessageDistributor.distribute(I2NPMessage msg,
Hash target) |
void |
InboundMessageDistributor.distribute(I2NPMessage msg,
Hash target) |
void |
OutboundMessageDistributor.distribute(I2NPMessage msg,
Hash target,
TunnelId tunnel) |
void |
InboundMessageDistributor.distribute(I2NPMessage msg,
Hash target,
TunnelId tunnel) |
boolean |
HopProcessor.process(byte[] orig,
int offset,
int length,
Hash prev)
Process the data for the current hop, overwriting the original data with
what should be sent to the next peer.
|
boolean |
FragmentedMessage.receive(byte[] payload,
int offset,
int length,
boolean isLast,
Hash toRouter,
TunnelId toTunnel)
Receive the first fragment (#0) and related metadata.
|
void |
FragmentHandler.DefragmentedReceiver.receiveComplete(I2NPMessage msg,
Hash toRouter,
TunnelId toTunnel)
Receive a fully formed I2NPMessage out of the tunnel
|
boolean |
InboundEndpointProcessor.retrievePreprocessedData(byte[] orig,
int offset,
int length,
Hash prev)
Undo all of the encryption done by the peers in the tunnel, recovering the
preprocessed data sent by the gateway.
|
void |
TunnelCreatorConfig.setPeer(int hop,
Hash peer) |
void |
HopConfig.setReceiveFrom(Hash from) |
void |
HopConfig.setSendTo(Hash to) |
Constructor and Description |
---|
InboundMessageDistributor(RouterContext ctx,
Hash client) |
OutboundGatewayMessage(I2NPMessage message,
Hash toRouter,
TunnelId toTunnel) |
PendingGatewayMessage(I2NPMessage message,
Hash toRouter,
TunnelId toTunnel) |
TunnelCreatorConfig(RouterContext ctx,
int length,
boolean isInbound,
Hash destination) |
Modifier and Type | Method and Description |
---|---|
protected Set<Hash> |
TunnelPeerSelector.getClosestHopExclude(boolean isInbound)
Pick peers that we want to avoid for the first OB hop or last IB hop.
|
Set<Hash> |
TunnelPeerSelector.getExclude(boolean isInbound,
boolean isExploratory)
Pick peers that we want to avoid
|
Map<Hash,TunnelPool> |
TunnelPoolManager.getInboundClientPools()
for TunnelRenderer in router console
|
Map<Hash,TunnelPool> |
TunnelPoolManager.getOutboundClientPools()
for TunnelRenderer in router console
|
protected List<Hash> |
TunnelPeerSelector.selectExplicit(TunnelPoolSettings settings,
int length)
For debugging, also possibly for restricted routes?
Needs analysis and testing
|
abstract List<Hash> |
TunnelPeerSelector.selectPeers(TunnelPoolSettings settings)
Which peers should go into the next tunnel for the given settings?
|
List<Hash> |
ClientPeerSelector.selectPeers(TunnelPoolSettings settings) |
List<Hash> |
ExploratoryPeerSelector.selectPeers(TunnelPoolSettings settings) |
Set<Hash> |
TunnelPoolManager.selectPeersInTooManyTunnels()
For reliability reasons, don't allow a peer in more than x% of
client and exploratory tunnels.
|
Modifier and Type | Method and Description |
---|---|
void |
TunnelPoolManager.fail(Hash peer)
Fail all outbound tunnels with this peer as first hop,
and all inbound tunnels with this peer as the last hop,
baecause we can't contact it any more.
|
TunnelPoolSettings |
TunnelPoolManager.getInboundSettings(Hash client) |
int |
TunnelPoolManager.getOutboundClientTunnelCount(Hash destination)
Use to verify a tunnel pool is alive
|
TunnelPoolSettings |
TunnelPoolManager.getOutboundSettings(Hash client) |
boolean |
TunnelPoolManager.isValidTunnel(Hash client,
TunnelInfo tunnel) |
protected void |
TunnelPeerSelector.orderPeers(List<Hash> rv,
Hash hash)
see HashComparator
|
void |
TunnelPoolManager.removeTunnels(Hash destination)
This will be called twice, once by the inbound and once by the outbound pool.
|
TunnelInfo |
TunnelPoolManager.selectInboundExploratoryTunnel(Hash closestTo)
Pick the inbound exploratory tunnel with the gateway closest to the given hash.
|
TunnelInfo |
TunnelPoolManager.selectInboundTunnel(Hash destination)
Pick a random inbound tunnel from the given destination's pool.
|
TunnelInfo |
TunnelPoolManager.selectInboundTunnel(Hash destination,
Hash closestTo)
Pick the inbound tunnel with the gateway closest to the given hash
from the given destination's pool.
|
TunnelInfo |
TunnelPoolManager.selectOutboundExploratoryTunnel(Hash closestTo)
Pick the outbound exploratory tunnel with the endpoint closest to the given hash.
|
TunnelInfo |
TunnelPoolManager.selectOutboundTunnel(Hash destination)
Pick a random outbound tunnel from the given destination's pool.
|
TunnelInfo |
TunnelPoolManager.selectOutboundTunnel(Hash destination,
Hash closestTo)
Pick the outbound tunnel with the endpoint closest to the given hash
from the given destination's pool.
|
(package private) TunnelInfo |
TunnelPool.selectTunnel(Hash closestTo)
Return the tunnel from the pool that is XOR-closet to the target.
|
(package private) TunnelInfo |
AliasedTunnelPool.selectTunnel(Hash closestTo) |
void |
TunnelPoolManager.setInboundSettings(Hash client,
TunnelPoolSettings settings) |
void |
TunnelPoolManager.setOutboundSettings(Hash client,
TunnelPoolSettings settings) |
(package private) boolean |
ParticipatingThrottler.shouldThrottle(Hash h)
increments before checking
|
(package private) boolean |
RequestThrottler.shouldThrottle(Hash h)
increments before checking
|
(package private) void |
TunnelPool.tunnelFailed(TunnelInfo cfg,
Hash blamePeer)
Remove the tunnel and blame only one peer.
|
(package private) void |
AliasedTunnelPool.tunnelFailed(TunnelInfo cfg,
Hash blamePeer) |
Modifier and Type | Method and Description |
---|---|
protected void |
TunnelPeerSelector.orderPeers(List<Hash> rv,
Hash hash)
see HashComparator
|
Constructor and Description |
---|
PooledTunnelCreatorConfig(RouterContext ctx,
int length,
boolean isInbound,
Hash destination) |
Modifier and Type | Method and Description |
---|---|
static BigInteger |
HashDistance.getDistance(Hash targetKey,
Hash routerInQuestion) |
Constructor and Description |
---|
MaskedIPSet(RouterContext ctx,
Hash peer,
int mask)
The Set of IPs for this peer, with a given mask.
|
MaskedIPSet(RouterContext ctx,
Hash peer,
RouterInfo pinfo,
int mask)
The Set of IPs for this peer, with a given mask.
|
Modifier and Type | Method and Description |
---|---|
static void |
SybilRenderer.renderSybilHTML(Writer out,
RouterContext ctx,
List<Hash> sybils,
String victim)
Called from NetDbRenderer
|
Modifier and Type | Method and Description |
---|---|
static Hash |
ConvertToHash.getHash(String peer)
Convert any kind of destination String to a hash
|
Modifier and Type | Class and Description |
---|---|
(package private) class |
Peer
A single peer for a single torrent.
|
Modifier and Type | Method and Description |
---|---|
Hash |
NodeInfo.calculateHash() |
Hash |
NodeInfo.getHash() |
Modifier and Type | Method and Description |
---|---|
(package private) List<Hash> |
DHTTracker.getPeers(InfoHash ih,
int max,
boolean noSeeds)
Caller's responsibility to remove himself from the list
|
Collection<Hash> |
KRPC.getPeersAndAnnounce(byte[] ih,
int max,
long maxWait,
int annMax,
long annMaxWait,
boolean isSeed,
boolean noSeeds)
Get peers for a torrent, and announce to the closest annMax nodes we find.
|
Collection<Hash> |
DHT.getPeersAndAnnounce(byte[] ih,
int max,
long maxWait,
int annMax,
long annMaxWait,
boolean isSeed,
boolean noSeeds)
Get peers for a torrent, and announce to the closest annMax nodes we find.
|
Modifier and Type | Method and Description |
---|---|
(package private) void |
DHTTracker.announce(InfoHash ih,
Hash hash,
boolean isSeed) |
static NID |
NodeInfo.generateNID(Hash h,
int p,
RandomSource random)
Generate a secure NID that matches the Hash and port.
|
(package private) void |
DHTTracker.unannounce(InfoHash ih,
Hash hash) |
Constructor and Description |
---|
NodeInfo(NID nID,
Hash hash,
int port)
No Destination yet available
|