Summary

PackageDescription
proton.core (alternatively, proton)Core protocol model and utility classes
proton.codecAMQP data and frame encoding and decoding
proton.reactorIO integration, event dispatch, and event handlers
proton.securityEncryption and authentication
proton.messengerA home for the Messenger API
proton.extrasExtra classes that extend core Proton functionality
proton.utilUtility 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.

Package 'proton.core'

  • Connection, Session, Link, Terminus, Delivery, Transport, Address, Condition - AMQP model objects
  • Message, Url, Data - Important user-facing utility classes
  • ProtonException - Core error handling

Package 'proton.codec'

  • Encoder, Decoder

Package 'proton.reactor'

  • Reactor, Container
  • Collector, Event, EventType, EventHandler
  • MessagingHandler, IncomingMessageHandler, OutgoingMessageHandler

Package 'proton.security'

  • SSL, SASL

Package 'proton.messenger'

Optional.  Not every binding will include the Messenger API.

  • Messenger, Subscription

Package 'proton.util'

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

Package 'proton.extras'

Optional.  A place for end-user extensions to the core API.

  • BlockingConnection

Changes

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.

 

  • No labels