Class NetworkList<E>

  • All Implemented Interfaces:
    ListEventListener<E>, EventList<E>, java.lang.Iterable<E>, java.util.Collection<E>, java.util.EventListener, java.util.List<E>

    public final class NetworkList<E>
    extends TransformedList<E,​E>
    An EventList that is either published to the network or subscribed from the network. Since list elements must be transmitted over the network, each NetworkList requires a ByteCoder to convert Objects to and from bytes.

    To instantiate a NetworkList, use the subscribe() and publish() methods of a started ListPeer.

    NetworkLists may be taken offline and brought back online with the connect() and disconnect() methods. This allows an application to use a NetworkList in spite of an unreliable network connection.

    As a consequence of imperfect networks, NetworkLists may sometimes go offline on their own. Some causes of this include the server program shutting down or crashing, the local network connection becoming unavailable, or a problem with the physical link, such as an unplugged cable.

    NetworkLists use a subset of HTTP/1.1 for transport, including chunked encoding. This protocol brings its own set of advantages:

  • HTTP is a standard well-understood protocol
  • Clients may be served even if they are behind NAT or Firewalls
  • The connection could be proxied by a standard HTTP proxy server, if necessary
  • In theory, the served port could be shared with another HTTP daemon such as Tomcat

    And HTTP brings some disadvantages also:

  • A persistent connection must be held, even if updates are infrequent
  • It cannot be differentiated from web traffic for analysis

    Warning: The protocol used by this version of NetworkList will be incompatible with future versions. Eventually the protocol will be finalized but the current protocol is a work in progress.

    Warning: This class breaks the contract required by List. See EventList for an example.

    EventList Overview
    Writable:yes
    Concurrency:Requires ReadWriteLock for every access, even for single-threaded use
    Performance:N/A
    Memory:O(N)
    Unit Tests:N/A
    Issues:N/A
Author:
Jesse Wilson