|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectnet.i2p.router.transport.TransportImpl
public abstract class TransportImpl
Defines a way to send a message to another peer and start listening for messages
Nested Class Summary |
---|
Nested classes/interfaces inherited from interface net.i2p.router.transport.Transport |
---|
Transport.AddressSource |
Field Summary | |
---|---|
protected RouterContext |
_context
|
protected List<RouterAddress> |
_currentAddresses
|
protected static boolean |
ADJUST_COST
Do we increase the advertised cost when approaching conn limits? |
protected static int |
CONGESTION_COST_ADJUSTMENT
TODO change to 2 |
Constructor Summary | |
---|---|
TransportImpl(RouterContext context)
Initialize the new transport |
Method Summary | |
---|---|
protected String |
_(String s)
Translate |
protected String |
_(String s,
Object o)
Translate |
protected void |
afterSend(OutNetMessage msg,
boolean sendSuccessful)
The transport is done sending this message |
protected void |
afterSend(OutNetMessage msg,
boolean sendSuccessful,
boolean allowRequeue)
The transport is done sending this message |
protected void |
afterSend(OutNetMessage msg,
boolean sendSuccessful,
boolean allowRequeue,
long msToSend)
The transport is done sending this message. |
protected void |
afterSend(OutNetMessage msg,
boolean sendSuccessful,
long msToSend)
The transport is done sending this message |
(package private) static void |
clearCaches()
|
abstract 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. |
abstract int |
countActiveSendPeers()
How many peers are we currently connected to, that we have sent a message to in the last minute. |
abstract int |
countPeers()
How many peers are we connected to? |
void |
externalAddressReceived(Transport.AddressSource source,
byte[] ip,
int port)
Notify a transport of an external address change. |
void |
externalAddressRemoved(Transport.AddressSource source,
boolean ipv6)
Notify a transport of an external address change. |
void |
forwardPortStatus(byte[] ip,
int port,
int externalPort,
boolean success,
String reason)
Notify a transport of the results of trying to forward a port. |
Vector<Long> |
getClockSkews()
Return our peer clock skews on a transport. |
RouterAddress |
getCurrentAddress(boolean ipv6)
What address are we currently listening to? Replaces getCurrentAddress() |
List<RouterAddress> |
getCurrentAddresses()
What addresses are we currently listening to? Replaces getCurrentAddress() |
static byte[] |
getIP(Hash peer)
IP of the peer from the last connection (in or out, any transport). |
protected TransportUtil.IPv6Config |
getIPv6Config()
|
int |
getMaxConnections()
Per-transport connection limit |
List<String> |
getMostRecentErrorMessages()
|
protected OutNetMessage |
getNextMessage()
Nonblocking call to pull the next outbound message off the queue. |
abstract CommSystemFacade.Status |
getReachabilityStatus()
Previously returned short, now enum as of 0.9.20 |
int |
getRequestedPort()
What INTERNAL port would the transport like to have forwarded by UPnP. |
protected Collection<InetAddress> |
getSavedLocalAddresses()
Return and then clear all saved local addresses. |
protected List<RouterAddress> |
getTargetAddresses(RouterInfo target)
Get all available address we can use, shuffled and then sorted by cost/preference. |
boolean |
hasCurrentAddress()
Do we have any current address? |
boolean |
haveCapacity()
Can we initiate or accept a connection to another peer, saving some margin |
boolean |
haveCapacity(int pct)
|
boolean |
isBacklogged(Hash dest)
|
boolean |
isEstablished(Hash dest)
|
protected boolean |
isIPv4Firewalled()
|
protected boolean |
isPubliclyRoutable(byte[] addr)
Allows IPv6 only if the transport is configured for it. |
boolean |
isUnreachable(Hash peer)
|
void |
markReachable(Hash peer,
boolean isInbound)
called when we establish a peer connection (outbound or inbound) |
void |
markUnreachable(Hash peer)
called when we can't reach a peer |
void |
messageReceived(I2NPMessage inMsg,
RouterIdentity remoteIdent,
Hash remoteIdentHash,
long msToReceive,
int bytesReceived)
Message received from the I2NPMessageReader - send it to the listener |
protected String |
ngettext(String s,
String p,
int n)
Translate |
protected abstract void |
outboundMessageReady()
This message is called whenever a new message is added to the send pool, and it should not block Only used by NTCP. |
void |
recheckReachability()
Deprecated. unused |
protected void |
removeAddress(boolean ipv6)
Remove all existing addresses with the specified IP length (4 or 16). |
protected void |
removeAddress(RouterAddress address)
Remove only this address. |
void |
renderStatusHTML(Writer out)
Make this stuff pretty (only used in the old console) |
void |
renderStatusHTML(Writer out,
String urlBase,
int sortFlags)
|
protected void |
replaceAddress(RouterAddress address)
Replace any existing addresses for the current transport with the same IP length (4 or 16) with the given one. |
protected void |
saveLocalAddress(InetAddress address)
Save a local address we were notified about before we started. |
void |
send(OutNetMessage msg)
Asynchronously send the message as requested in the message and, if the send is successful, queue up any msg.getOnSendJob job, and register it with the OutboundMessageRegistry (if it has a reply selector). |
void |
setIP(Hash peer,
byte[] ip)
IP of the peer from the last connection (in or out, any transport). |
void |
setListener(TransportEventListener listener)
Who to notify on message availability |
List<RouterAddress> |
updateAddress()
Ask the transport to update its address based on current information and return it Transports should override. |
boolean |
wasUnreachable(Hash peer)
Was the peer UNreachable (outbound only) the last time we tried it? This is NOT reset if the peer contacts us. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface net.i2p.router.transport.Transport |
---|
bid, getStyle, startListening, stopListening |
Field Detail |
---|
protected final List<RouterAddress> _currentAddresses
protected final RouterContext _context
protected static final boolean ADJUST_COST
protected static final int CONGESTION_COST_ADJUSTMENT
Constructor Detail |
---|
public TransportImpl(RouterContext context)
Method Detail |
---|
public abstract int countPeers()
countPeers
in interface Transport
public abstract int countActivePeers()
countActivePeers
in interface Transport
public abstract int countActiveSendPeers()
countActiveSendPeers
in interface Transport
public int getMaxConnections()
public boolean haveCapacity()
haveCapacity
in interface Transport
public boolean haveCapacity(int pct)
haveCapacity
in interface Transport
pct
- are we under x% 0-100public Vector<Long> getClockSkews()
getClockSkews
in interface Transport
public List<String> getMostRecentErrorMessages()
getMostRecentErrorMessages
in interface Transport
protected OutNetMessage getNextMessage()
protected void afterSend(OutNetMessage msg, boolean sendSuccessful)
msg
- message in questionsendSuccessful
- true if the peer received itprotected void afterSend(OutNetMessage msg, boolean sendSuccessful, boolean allowRequeue)
msg
- message in questionsendSuccessful
- true if the peer received itallowRequeue
- true if we should try other transports if availableprotected void afterSend(OutNetMessage msg, boolean sendSuccessful, long msToSend)
msg
- message in questionsendSuccessful
- true if the peer received itmsToSend
- how long it took to transfer the data to the peerprotected void afterSend(OutNetMessage msg, boolean sendSuccessful, boolean allowRequeue, long msToSend)
msg
- message in questionsendSuccessful
- true if the peer received itmsToSend
- how long it took to transfer the data to the peerallowRequeue
- true if we should try other transports if availablepublic void send(OutNetMessage msg)
send
in interface Transport
protected abstract void outboundMessageReady()
public void messageReceived(I2NPMessage inMsg, RouterIdentity remoteIdent, Hash remoteIdentHash, long msToReceive, int bytesReceived)
inMsg
- non-nullremoteIdent
- may be nullremoteIdentHash
- may be null, calculated from remoteIdent if nullpublic List<RouterAddress> getCurrentAddresses()
getCurrentAddresses
in interface Transport
public RouterAddress getCurrentAddress(boolean ipv6)
ipv6
- true for IPv6 only; false for IPv4 only
public boolean hasCurrentAddress()
hasCurrentAddress
in interface Transport
public List<RouterAddress> updateAddress()
updateAddress
in interface Transport
protected void replaceAddress(RouterAddress address)
address
- null to remove allprotected void removeAddress(RouterAddress address)
protected void removeAddress(boolean ipv6)
ipv6
- true to remove all IPv6 addresses, false to remove all IPv4 addressesprotected void saveLocalAddress(InetAddress address)
protected Collection<InetAddress> getSavedLocalAddresses()
protected List<RouterAddress> getTargetAddresses(RouterInfo target)
public void externalAddressReceived(Transport.AddressSource source, byte[] ip, int port)
externalAddressReceived
in interface Transport
source
- defined in Transport.javaip
- typ. IPv4 or IPv6 non-local; may be null to indicate IPv4 failure or port info onlyport
- 0 for unknown or unchangedpublic void externalAddressRemoved(Transport.AddressSource source, boolean ipv6)
externalAddressRemoved
in interface Transport
source
- defined in Transport.javapublic void forwardPortStatus(byte[] ip, int port, int externalPort, boolean success, String reason)
forwardPortStatus
in interface Transport
ip
- may be nullport
- the internal portexternalPort
- the external port, which for now should always be the same as
the internal port if the forwarding was successful.public int getRequestedPort()
getRequestedPort
in interface Transport
public void setListener(TransportEventListener listener)
setListener
in interface Transport
public void renderStatusHTML(Writer out) throws IOException
IOException
public void renderStatusHTML(Writer out, String urlBase, int sortFlags) throws IOException
renderStatusHTML
in interface Transport
IOException
public abstract CommSystemFacade.Status getReachabilityStatus()
getReachabilityStatus
in interface Transport
public void recheckReachability()
recheckReachability
in interface Transport
protected boolean isIPv4Firewalled()
public boolean isBacklogged(Hash dest)
isBacklogged
in interface Transport
public boolean isEstablished(Hash dest)
isEstablished
in interface Transport
public boolean isUnreachable(Hash peer)
isUnreachable
in interface Transport
public void markUnreachable(Hash peer)
public void markReachable(Hash peer, boolean isInbound)
public boolean wasUnreachable(Hash peer)
wasUnreachable
in interface Transport
public void setIP(Hash peer, byte[] ip)
ip
- IPv4 or IPv6, non-nullpublic static byte[] getIP(Hash peer)
static void clearCaches()
protected TransportUtil.IPv6Config getIPv6Config()
protected boolean isPubliclyRoutable(byte[] addr)
addr
- non-nullprotected String _(String s)
protected String _(String s, Object o)
protected String ngettext(String s, String p, int n)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |