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

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `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

    Constructors
    Constructor and Description
    `CommSystemFacade()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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