Sea is a Framework for a Staged Event Architecture, designed around non-blocking asynchronous communication facilities that are decoupled from the threading model chosen by any given application. Components for IP networking and in-memory communication are provided.

The Sea Java library is an open source implementation encapsulating these concepts. Sea is used to easily build efficient and flexible low-level network clients and servers, and in particular as a basic communication substrate for Peer-to-Peer applications.

The system is architected according to the principles of the Staged Event Driven Architecture described in SEDA Architecture and the SEDA Homepage.
  • Threading model agnostic; example modes supported by the same API include:
    • One thread shared by all stages
    • One thread per stage
    • A thread pool per stage
    • A thread pool per set of stages
    • Mixes of the above
  • Efficient and powerful synchronous and asynchronous non-blocking TCP and UDP connectors enable quick application development.
  • Easy-to-use and deploy, easy to extend and customize.
  • Application developers get to focus on app-specific problems (plug-in).

See the Demo Directory to get a glimpse for how easy it is to create functioning network clients and servers.

A Sea application is composed of several asynchronous non-blocking stages, interconnected in chains via queues holding events. A stage has an input queue into which another stage puts events. A stage has one or more threads (usually: one and only one), which take events from the input queue and hand them to the stage's event handler which processes the events in a non-blocking asynchronous manner. As a result of said processing, the event handler may put new events into the queue of its own stage or other stages. Typically (but not necessarily) the event handler of a child stage responds to an event by a parent stage by putting the response to the event into the input queue of the parent stage.

© 2003-2004, Lawrence Berkeley National Laboratory Valid HTML 4.01! Valid CSS!