public class TransportManager extends Object implements TransportEventListener
Modifier and Type | Class and Description |
---|---|
(package private) static class |
TransportManager.Port |
Modifier and Type | Field and Description |
---|---|
static String |
PROP_ENABLE_NTCP
default true
|
static String |
PROP_ENABLE_UDP
default true
|
static String |
PROP_ENABLE_UPNP
default true
|
Constructor and Description |
---|
TransportManager(RouterContext context) |
Modifier and Type | Method and Description |
---|---|
(package private) int |
countActivePeers()
How many peers are we currently connected to, that we have
sent a message to or received a message from in the last five minutes.
|
(package private) int |
countActiveSendPeers()
How many peers are we currently connected to, that we have
sent a message to in the last minute.
|
(package private) void |
externalAddressReceived(Transport.AddressSource source,
byte[] ip,
int port)
Initialize from interfaces, and callback from UPnP or SSU.
|
(package private) void |
externalAddressRemoved(Transport.AddressSource source,
boolean ipv6)
Remove all ipv4 or ipv6 addresses.
|
(package private) void |
forceDisconnect(Hash peer)
Tell the transports to disconnect from this peer.
|
(package private) void |
forwardPortStatus(String style,
byte[] ip,
int port,
int externalPort,
boolean success,
String reason)
callback from UPnP
|
(package private) List<RouterAddress> |
getAddresses()
This forces a rebuild
|
(package private) TransportBid |
getBid(OutNetMessage msg) |
(package private) List<TransportBid> |
getBids(OutNetMessage msg) |
(package private) List<Long> |
getClockSkews()
Return our peer clock skews on all transports.
|
(package private) DHSessionKeyBuilder.Factory |
getDHFactory()
Hook for pluggable transport creation.
|
Set<Hash> |
getEstablished() |
(package private) byte[] |
getIP(Hash peer)
IP of the peer from the last connection (in or out, any transport).
|
(package private) List<String> |
getMostRecentErrorMessages() |
(package private) TransportBid |
getNextBid(OutNetMessage msg) |
(package private) CommSystemFacade.Status |
getReachabilityStatus()
Previously returned short, now enum as of 0.9.20
|
(package private) Transport |
getTransport(String style) |
(package private) int |
getTransportCount() |
(package private) SortedMap<String,Transport> |
getTransports() |
(package private) X25519KeyFactory |
getXDHFactory()
Factory for making X25519 key pairs.
|
(package private) boolean |
haveHighOutboundCapacity()
Are all transports well below their outbound connection limit
Use for throttling in the router.
|
(package private) boolean |
haveInboundCapacity(int pct)
Is at least one transport below its inbound connection limit + some margin
Use for throttling in the router.
|
(package private) boolean |
haveOutboundCapacity(int pct)
Is at least one transport below its outbound connection limit + some margin
Use for throttling in the router.
|
(package private) void |
initializeAddress()
Notify all transports of ALL routable interface addresses, including IPv6.
|
(package private) boolean |
isBacklogged(Hash peer) |
(package private) boolean |
isEstablished(Hash peer) |
static boolean |
isNTCPEnabled(RouterContext ctx) |
(package private) void |
mayDisconnect(Hash peer)
Tell the transports that we may disconnect from this peer.
|
void |
messageReceived(I2NPMessage message,
RouterIdentity fromRouter,
Hash fromRouterHash)
Message received
|
(package private) void |
recheckReachability()
Deprecated.
unused
|
(package private) void |
registerAndStart(Transport t)
Pluggable transports.
|
void |
renderStatusHTML(Writer out,
String urlBase,
int sortFlags)
As of 0.9.31, only outputs UPnP status
Warning - blocking, very slow, queries the active UPnP router,
will take many seconds if it has vanished.
|
(package private) void |
restart() |
(package private) void |
shutdown()
Cannot be restarted.
|
(package private) void |
startListening() |
(package private) void |
stopAndUnregister(Transport t)
Pluggable transports.
|
(package private) void |
stopListening()
Can be restarted.
|
void |
transportAddressChanged()
TransportEventListener
calls UPnPManager rescan() and update()
|
(package private) boolean |
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.
|
public static final String PROP_ENABLE_UDP
public static final String PROP_ENABLE_NTCP
public static final String PROP_ENABLE_UPNP
public TransportManager(RouterContext context)
void registerAndStart(Transport t)
void stopAndUnregister(Transport t)
DHSessionKeyBuilder.Factory getDHFactory()
X25519KeyFactory getXDHFactory()
public static boolean isNTCPEnabled(RouterContext ctx)
void initializeAddress()
void externalAddressReceived(Transport.AddressSource source, byte[] ip, int port)
void externalAddressRemoved(Transport.AddressSource source, boolean ipv6)
void forwardPortStatus(String style, byte[] ip, int port, int externalPort, boolean success, String reason)
void startListening()
void restart()
void stopListening()
void shutdown()
int getTransportCount()
SortedMap<String,Transport> getTransports()
int countActivePeers()
int countActiveSendPeers()
boolean haveOutboundCapacity(int pct)
pct
- percent of limit 0-100boolean haveHighOutboundCapacity()
boolean haveInboundCapacity(int pct)
pct
- percent of limit 0-100List<Long> getClockSkews()
CommSystemFacade.Status getReachabilityStatus()
@Deprecated void recheckReachability()
boolean isBacklogged(Hash peer)
boolean isEstablished(Hash peer)
void mayDisconnect(Hash peer)
void forceDisconnect(Hash peer)
boolean wasUnreachable(Hash peer)
byte[] getIP(Hash peer)
List<RouterAddress> getAddresses()
TransportBid getBid(OutNetMessage msg)
List<TransportBid> getBids(OutNetMessage msg)
TransportBid getNextBid(OutNetMessage msg)
public void messageReceived(I2NPMessage message, RouterIdentity fromRouter, Hash fromRouterHash)
messageReceived
in interface TransportEventListener
message
- non-nullfromRouter
- may be nullfromRouterHash
- may be null, calculated from fromRouter if nullpublic void transportAddressChanged()
transportAddressChanged
in interface TransportEventListener
public void renderStatusHTML(Writer out, String urlBase, int sortFlags) throws IOException
IOException