Separated the connect/disconnect logic into ConnectHandler/DisconnectHandler
Moved the sending of CONN ACK after session creation/update
Moved the will message management inside the session class
subscribe and unsubscribe issues
- Added unit tests to cover a few more cases which I my system ran into
under concurrent load testing.
- Remove and detect TNode, implement more of
http://bravenewgeek.com/breaking-and-entering-lose-the-lock-while-embracing-concurrency/
related to TNode state
- NOTE: The graph is left with nodes which have no subscriptions, the
TNode cleanup only cleanss the last node for now. We should
autoprune further up by placing more TNodes and pruning them off.
- Adding concurrency Sets and Lists to CNode, because those ARE edited
and read in parallel in our use-case. Before a CNode is CAS
replaced, more than 1 thread may be attempting to modify and read the
subscriptions and children CNode datastructures, and I hit this
during testing.
- Fixed an issue where we unsubscribe all sub-topics if an unsubscribe
is sent on a parent node.
- Fixed an issue with unsubscribing multiple times when no subscrition
exists, we should handle this gracefully.
- introduced a unique point of access and management of sessions state (SessionRepository)
- separated behaiour for sessions with clean flag to false into DurableSession
- separated behaviour for session with clean flag to true into TransientSession
ServerLowlevelMessagesIntegrationTests: timeouts raised
osgi: log4j.properties added
MoquetteOsgiTest: test imporved
storage packages will checked too
The state must be active
osgi: README added for development
log4j: fixed
broker/pom.xml: dependencie added osgi config added
osgi_test/pom: dependencies added
MoquetteOsgiTest: test fixed
First step on implementing H2 storage
Minor, fixed not imported class
Cleaned MessageStore interface to avoid duplication of methods used in couple. Switched from guid + message to move messages
Separated ISubscriptionsStore from ISessionStore
Implemented H2 queue
max line length warnings removed
missing Copyright added
useless publics removed
unmaintainable Javadoc tags: @author removed
helper class warnings removed
field default value initialization removed
Multiple warnings removed
pref: checkstyle warnings removed
Checkstyle will fail the build process if it detects violations
switch default cases error logger added
broker/IStore: Interface added for MapDBPersistentStore
broker/ProtocolProcessorBootstrapper: class loader for store added
broker/ISessionsStore#mapToGuid: moved to IMessagesStore
broker/ProtocolProcessorBootstrapper: getter used for SessionStore
broker/Server: getter for processor added
broker/ProtocolProcessor: getter added for Stores
broker/Topic: String Topics replaced by Topic class
broker/Topic#parseTopic: access set to private
broker/SubscriptionsStoreTest: topic tests moved to own class
broker/TopicTest: containsExactly used
broker/TopicTest: TopicAssert class added
broker/TopicTest$TopicAssert#containsToken: method added
broker/TopicTest$TopicAssert#matches: method added