## net.i2p.router
Class CommSystemFacade

    java.lang.Object
      net.i2p.router.CommSystemFacade

All Implemented Interfaces:
  Service

Direct Known Subclasses:
  CommSystemFacadeImpl, VMCommSystem

    public abstract class CommSystemFacade

extends Object
implements Service

Manages the communication subsystem between peers, including connections, listeners, transports, connection keys, etc.

Field Summary
`static short` `STATUS_DIFFERENT` We are behind a symmetric NAT which will make our 'from' address look differently when we talk to multiple people
`static short` `STATUS_HOSED` Our detection system is broken (SSU bind port failed)
`static short` `STATUS_OK` These must be increasing in "badness" (see TransportManager.java), but UNKNOWN must be last.
`static short` `STATUS_REJECT_UNSOLICITED` We are able to talk to peers that we initiate communication with, but cannot receive unsolicited connections
`static short` `STATUS_UNKNOWN` Our reachability is unknown

Constructor Summary
`CommSystemFacade()`

Method Summary
`int` `countActivePeers()`
`int` `countActiveSendPeers()`
`Set<RouterAddress>` `createAddresses()` Create the set of RouterAddress structures based on the router's config
`String` `getCountry(Hash peer)`
`String` `getCountryName(String code)`
`long` `getFramedAveragePeerClockSkew(int percentToInclude)` Return framed average clock skew of connected peers in seconds, or null if we cannot answer.
`byte[]` `getIP(Hash dest)`
`Long` `getMedianPeerClockSkew()` Median clock skew of connected peers in seconds, or null if we cannot answer.
`List` `getMostRecentErrorMessages()`
`short` `getReachabilityStatus()` Determine under what conditions we are remotely reachable.
`boolean` `haveHighOutboundCapacity()`
`boolean` `haveInboundCapacity(int pct)`
`boolean` `haveOutboundCapacity(int pct)`
`boolean` `isBacklogged(Hash dest)`
`boolean` `isEstablished(Hash dest)`
`void` `notifyReplaceAddress(RouterAddress UDPAddr)` Tell other transports our address changed
`abstract void` `processMessage(OutNetMessage msg)`
`void` `queueLookup(byte[] ip)`
`void` `recheckReachability()`
`String` `renderPeerHTML(Hash peer)`
`void` `renderStatusHTML(Writer out)`
`void` `renderStatusHTML(Writer out, String urlBase, int sortFlags)`
`boolean` `wasUnreachable(Hash dest)`

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.Service
`restart, shutdown, startup`

Field Detail

### STATUS_OK

    public static final short STATUS_OK

  These must be increasing in "badness" (see TransportManager.java), but UNKNOWN must be last. We are able to receive unsolicited connections

  See Also:
    Constant Field Values

### STATUS_DIFFERENT

    public static final short STATUS_DIFFERENT

  We are behind a symmetric NAT which will make our 'from' address look differently when we talk to multiple people

  See Also:
    Constant Field Values

### STATUS_REJECT_UNSOLICITED

    public static final short STATUS_REJECT_UNSOLICITED

  We are able to talk to peers that we initiate communication with, but cannot receive unsolicited connections

  See Also:
    Constant Field Values

### STATUS_HOSED

    public static final short STATUS_HOSED

  Our detection system is broken (SSU bind port failed)

  See Also:
    Constant Field Values

### STATUS_UNKNOWN

    public static final short STATUS_UNKNOWN

  Our reachability is unknown

  See Also:
    Constant Field Values

Constructor Detail

### CommSystemFacade

    public CommSystemFacade()

Method Detail

### processMessage

    public abstract void processMessage(OutNetMessage msg)

### renderStatusHTML

    public void renderStatusHTML(Writer out,
                                 String urlBase,
                                 int sortFlags)
                          throws IOException

  Throws:
    `IOException`

### renderStatusHTML

    public void renderStatusHTML(Writer out)
                          throws IOException

  Specified by:
    `renderStatusHTML` in interface `Service`
  Throws:
    `IOException`

### createAddresses

    public Set<RouterAddress> createAddresses()

  Create the set of RouterAddress structures based on the router's config

### countActivePeers

    public int countActivePeers()

### countActiveSendPeers

    public int countActiveSendPeers()

### haveInboundCapacity

    public boolean haveInboundCapacity(int pct)

### haveOutboundCapacity

    public boolean haveOutboundCapacity(int pct)

### haveHighOutboundCapacity

    public boolean haveHighOutboundCapacity()

### getMostRecentErrorMessages

    public List getMostRecentErrorMessages()

### getMedianPeerClockSkew

    public Long getMedianPeerClockSkew()

  Median clock skew of connected peers in seconds, or null if we cannot answer. CommSystemFacadeImpl overrides this.

### getFramedAveragePeerClockSkew

    public long getFramedAveragePeerClockSkew(int percentToInclude)

  Return framed average clock skew of connected peers in seconds, or null if we cannot answer. CommSystemFacadeImpl overrides this.

### getReachabilityStatus

    public short getReachabilityStatus()

  Determine under what conditions we are remotely reachable.

### recheckReachability

    public void recheckReachability()

### isBacklogged

    public boolean isBacklogged(Hash dest)

### wasUnreachable

    public boolean wasUnreachable(Hash dest)

### isEstablished

    public boolean isEstablished(Hash dest)

### getIP

    public byte[] getIP(Hash dest)

### queueLookup

    public void queueLookup(byte[] ip)

### getCountry

    public String getCountry(Hash peer)

### getCountryName

    public String getCountryName(String code)

### renderPeerHTML

    public String renderPeerHTML(Hash peer)

### notifyReplaceAddress

    public void notifyReplaceAddress(RouterAddress UDPAddr)

  Tell other transports our address changed