public class TransportManager extends Object implements TransportEventListener
| Modifier and Type | Class and Description |
|---|---|
(package private) static class | TransportManager.PortPort configuration for transport protocols. |
| Modifier and Type | Field and Description |
|---|---|
static boolean | DEFAULT_ENABLE_UPNP_IPV6Default UPnP IPv6 enable |
static String | PROP_ENABLE_NTCPdefault true |
static String | PROP_ENABLE_UDPdefault true |
static String | PROP_ENABLE_UPNPdefault true |
static String | PROP_ENABLE_UPNP_IPV6Enable UPnP for IPv6 |
| 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) 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 | forceDisconnect(Hash peer,
String reason)Tell the transports to disconnect from this peer with a reason for logging. |
(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)Get the best bid for a message across all transports. |
(package private) List<TransportBid> | getBids(OutNetMessage msg)Get all bids for a message across all transports. |
(package private) List<Long> | getClockSkews()Return our peer clock skews on all transports. |
List<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)Get the best bid, skipping failed transports and unreachable peers. |
(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() |
Tuner | getTuner()Get the adaptive tuner from the UDP transport. |
(package private) X25519KeyFactory | getXDHFactory()Get the X25519 key factory used by transports. |
(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 | isConnecting(Hash peer)Check if any transport has a connection attempt in progress for the 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)Handle incoming I2NP message from a peer. |
(package private) void | registerAndStart(Transport t)Register and start a pluggable transport. |
void | renderStatusHTML(Writer out,
String urlBase,
int sortFlags)Render transport status information as HTML for console display. |
(package private) void | restart()Restart all transports (stop, wait, start). |
(package private) void | shutdown()Cannot be restarted. |
(package private) void | startListening()Void |
(package private) void | stopAndUnregister(Transport t)Stop and unregister a pluggable transport. |
(package private) void | stopListening()Can be restarted. |
void | transportAddressChanged()Handle transport address change notifications. |
(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 boolean DEFAULT_ENABLE_UPNP_IPV6
public static final String PROP_ENABLE_NTCP
public static final String PROP_ENABLE_UDP
public static final String PROP_ENABLE_UPNP
public static final String PROP_ENABLE_UPNP_IPV6
public TransportManager(RouterContext context)
context - router contextint countActivePeers()
void externalAddressReceived(Transport.AddressSource source, byte[] ip, int port)
void externalAddressRemoved(Transport.AddressSource source, boolean ipv6)
void forceDisconnect(Hash peer)
void forceDisconnect(Hash peer, String reason)
peer - the peer hashreason - reason for disconnection (for logging), may be nullvoid forwardPortStatus(String style, byte[] ip, int port, int externalPort, boolean success, String reason)
List<RouterAddress> getAddresses()
TransportBid getBid(OutNetMessage msg)
msg - the message to bid onList<TransportBid> getBids(OutNetMessage msg)
msg - the message to bid on @return list of bids, never nullList<Long> getClockSkews()
public List<Hash> getEstablished()
byte[] getIP(Hash peer)
List<String> getMostRecentErrorMessages()
TransportBid getNextBid(OutNetMessage msg)
msg - the message to bid on @return the winning bid or nullCommSystemFacade.Status getReachabilityStatus()
Transport getTransport(String style)
style - transport style @return the transport for the given style or nullint getTransportCount()
SortedMap<String,Transport> getTransports()
public Tuner getTuner()
X25519KeyFactory getXDHFactory()
boolean haveHighOutboundCapacity()
boolean haveInboundCapacity(int pct)
pct - percent of limit 0-100boolean haveOutboundCapacity(int pct)
pct - percent of limit 0-100void initializeAddress()
boolean isBacklogged(Hash peer)
peer - peer hash @return true if any transport is backlogged to peerboolean isConnecting(Hash peer)
peer - hash of the peer to checkboolean isEstablished(Hash peer)
peer - peer hash @return true if any transport has an established connectionpublic static boolean isNTCPEnabled(RouterContext ctx)
ctx - context @return true if NTCP enabledvoid mayDisconnect(Hash peer)
public void messageReceived(I2NPMessage message, RouterIdentity fromRouter, Hash fromRouterHash)
messageReceived in interface TransportEventListenermessage - the received I2NP message to be processedfromRouter - identity of the sending routerfromRouterHash - hash of the sending router for quick lookupvoid registerAndStart(Transport t)
t - the transport to register and startIllegalArgumentException - if transport is built-in typeIllegalStateException - if transport style already existspublic void renderStatusHTML(Writer out, String urlBase, int sortFlags) throws IOException
out - writer to write HTML output tourlBase - base URL for generating linkssortFlags - flags controlling sorting and display optionsIOException - if writing to output failsvoid restart()
void shutdown()
void startListening()
void stopAndUnregister(Transport t)
t - the transport to stop and unregisterIllegalArgumentException - if transport is built-in typevoid stopListening()
public void transportAddressChanged()
transportAddressChanged in interface TransportEventListenerboolean wasUnreachable(Hash peer)