|proton.core (alternatively, proton)||Core protocol model and utility classes|
|proton.codec||AMQP data and frame encoding and decoding|
|proton.reactor||IO integration, event dispatch, and event handlers|
|proton.security||Encryption and authentication|
|proton.messenger||A home for the Messenger API|
|proton.extras||Extra classes that extend core Proton functionality|
|proton.util||Utility classes not supplied by the host language|
The base Proton exception or error class goes in 'proton', but subclasses would reside in the various subpackages above.
There are some classes we intend to deprecate or remove: Connector, Listener, Driver.
- Connection, Session, Link, Terminus, Delivery, Transport, Address, Condition - AMQP model objects
- Message, Url, Data - Important user-facing utility classes
- ProtonException - Core error handling
- Encoder, Decoder
- Reactor, Container
- Collector, Event, EventType, EventHandler
- MessagingHandler, IncomingMessageHandler, OutgoingMessageHandler
- SSL, SASL
Optional. Not every binding will include the Messenger API.
- Messenger, Subscription
Optional. A place for simple extensions to the language-provided standard library. If the utility classes can be kept private, that's better still.
- Logging classes
- Timestamp, Described, UnsignedLong, etc. - Data types not supplied by the host language
Optional. A place for end-user extensions to the core API.
As of 15 September 2015, I've tried to simplify the proposed structure.
- Removed proton.event. Most bindings won't include this older variant of the event API. Instead, these classes can go under proton.reactor.
- Removed proton.types. These are host language extensions, the same as the classes in proton.util. Such types are moved to proton.util.
- Moved Url and Data to proton.core. They are part of the core user experience, across programming models.