The system architecture is separated into parts: * Abstract protocol handling * package: o.a.v.xmpp.protocol Protocol workflow, state machine changes during handshake, consistency checks Delegation to concrete handling * Concrete protocol handling * package: o.a.v.xmpp.applicationdomains Stanza handlers and Response builders Concrete processing of stanzas * XML parsing into fragments XMPP package: o.a.v.xmpp.xmldecoder Determines stanza boundaries in a sequence of characters and translates into (potential) XMPP stanzas * Server runtime incl. session handling server instance with all its properties and switches. * Stanza infrastructure and tools packages: o.a.v.xmpp.stanza, o.a.v.xmpp.xmlfragment handles stanza objects freed from any representation (XML) * TCP binding package: o.a.v.mina binding to TCP protocol endpoint, handling endpoint events, delivering data from/to XML parsing * SASL authorization mechanism logic package: o.a.v.xmpp.authorization * SEDA: staged event driven architecture available stages: reading from TCP/IP socket - XMLStreamTokenizer handling inbound stanzas from client - QueuedStanzaProcessor handling outbound stanzas to clients - DeliveringStanzaRelay missing stages: handling outbound stanzas to servers - RecordingStanzaRelay (provisorial implementation) handling inbound stanzas issued by self or remote servers (to go to clients or not) - missing!