Key: F = Functional PF = Partially Functional NR = Needs Additional Review ND = Needs Additional Design NF = Not Functional Connection: variables/configuration: - reconnect: F, NR, ND + reconnect functionality is done and the API semantics provided are ready for review + reconnect policies need to be finished, there is currently only one hardcoded reconnect policy (retry every three seconds), we need to define the pre-canned policies that we want to support and a means to configure them, as well as a very simple plugin/callback for defining ad-hoc policies + need to feed failover exchange into the reconnect policy + acks can be lost on reconnect + handle reconnect during commit/rollback - timeout: NF + some sort of timeout threshold for killing the connection methods: - open/__init__: F, ND + need to support kerberos + need a better way of supplying various kinds of configuration: - authentication info - transport specific configuration options, e.g - heartbeat - socket options - tcp-nodelay - multiple brokers - session: F, NR - connect: F, NR - disconnect: F, NR - connected: F, NR - close: F, NR, ND + currently there is no distinction between a "close" that does a complete handshake with the remote broker, and a "close" that reclaims resources, this means that close can fail with an exception, I don't like this as it is unclear to the user if there is a responsibility to do further cleanup in this case errors: - ConnectionError: F, NR + ConnectError F, NR + Disconnected F, NR - notification of disconnect? Session: methods: - sender: F, NR, ND + need to detail address options + need to define subject pattern semantics + consider providing convenience for sender/receiver caching + need to provide sync option, possibly change default - receiver: F, NR, ND + need to detail address options + need to define filter syntax/semantics + consider providing convenience for sender/receiver caching + need to provide sync option, possibly change default - acknowledge: F, NR - reject: NF - release: NF - commit: F, NR - rollback: F, NR - next_receiver: F, NR - close: F, ND + see comment on Connection.close errors: - SessionError: F, NR, ND + SendError: F, NR, ND + ReceiveError: F, NR, ND + should there be fatal/non fatal variants? Sender: methods: - pending: F, NR - send: F, NR - sync: F, NR, ND + currently this blocks until pending == 0, I'm thinking of renaming this to wait and adding a slightly richer interface that would let you wait for something like pending < n - close: F, NR errors: - SendError + InsufficientCapacity + need specific subhierarchy for certain conditions, e.g. no such queue Receiver: methods: - pending: F, NR - listen: F, ND + see comment on Session.fetch - fetch: F, NR, ND + explicit grant for receiver + changing capacity/prefetch to issue credit on ack rather than fetch return - sync/wait: NF - close: F, NR errors: - ReceiveError + Empty + need specific subhierarchy for certain conditions, e.g. no such queue Message: - standard message properties: F, NR, ND - map messages: F, NR + needs interop testing: NF + needs java impl: NF - list messages: F, NR, NI + needs interop testing: NF + needs java impl: NF - boxed types: NF Address: - syntax: F, NR + need to consider whitespace in name/subject + consider unquoted string concept - subject related changes, e.g. allowing patterns on both ends: NF - creating/deleting queues/exchanges F, NR + need to handle cleanup of temp queues/topics: F, NR + passthrough options for creating exchanges/queues: F, NR - integration with java: NF - queue browsing: F, NR - temporary queues: NF - xquery: NF Testing: - stress/soak testing for async: NF - stress/soak testing for reconnect: NF - interop testing: NF - multi session and multi connection client tests: NF Documentation: - api level docs largely present but need updating and elaboration - tutorial: NF Examples: - drain: F, NR - spout: F, NR - server: F, NR - client: NF - reservations: F, NR + code: F, NR + doc: NF - other examples, e.g. async? Miscellaneous: - standard ping-like (drain/spout) utilities for all clients: NF - caching of resolved addresses: F, NR - consider using separate session for query/deletion/creation of addresses