Changed the way of create MapDB's messages and session stores, it's now more coupled (they are the same stuff at the end)

This commit is contained in:
andsel
2016-09-23 10:11:50 +02:00
parent 4d637a349b
commit ac5a4daa6f
4 changed files with 16 additions and 12 deletions
@@ -75,7 +75,7 @@ public class ProtocolProcessorBootstrapper {
m_mapStorage = new MapDBPersistentStore(props);
m_mapStorage.initStore();
IMessagesStore messagesStore = m_mapStorage.messagesStore();
ISessionsStore sessionsStore = m_mapStorage.sessionsStore(messagesStore);
ISessionsStore sessionsStore = m_mapStorage.sessionsStore();
List<InterceptHandler> observers = new ArrayList<>(embeddedObservers);
String interceptorClassName = props.getProperty(BrokerConstants.INTERCEPT_HANDLER_PROPERTY_NAME);
@@ -59,6 +59,8 @@ public class MapDBPersistentStore {
private final int m_autosaveInterval; // in seconds
protected final ScheduledExecutorService m_scheduler = Executors.newScheduledThreadPool(1);
private MapDBMessagesStore m_messageStore;
private MapDBSessionsStore m_sessionsStore;
public MapDBPersistentStore(IConfig props) {
this.m_storePath = props.getProperty(PERSISTENT_STORE_PROPERTY_NAME, "");
@@ -69,16 +71,11 @@ public class MapDBPersistentStore {
* Factory method to create message store backed by MapDB
* */
public IMessagesStore messagesStore() {
//TODO check m_db is valid and
IMessagesStore msgStore = new MapDBMessagesStore(m_db);
msgStore.initStore();
return msgStore;
return m_messageStore;
}
public ISessionsStore sessionsStore(IMessagesStore msgStore) {
ISessionsStore sessionsStore = new MapDBSessionsStore(m_db, msgStore);
sessionsStore.initStore();
return sessionsStore;
public ISessionsStore sessionsStore() {
return m_sessionsStore;
}
public void initStore() {
@@ -102,6 +99,13 @@ public class MapDBPersistentStore {
m_db.commit();
}
}, this.m_autosaveInterval, this.m_autosaveInterval, TimeUnit.SECONDS);
//TODO check m_db is valid and
m_messageStore = new MapDBMessagesStore(m_db);
m_messageStore.initStore();
m_sessionsStore = new MapDBSessionsStore(m_db, m_messageStore);
m_sessionsStore.initStore();
}
public void close() {
@@ -49,9 +49,9 @@ class MapDBSessionsStore implements ISessionsStore {
private ConcurrentMap<String, Map<Integer, String>> m_secondPhaseStore;
private final DB m_db;
private final IMessagesStore m_messagesStore;
private final MapDBMessagesStore m_messagesStore;
MapDBSessionsStore(DB db, IMessagesStore messagesStore) {
MapDBSessionsStore(DB db, MapDBMessagesStore messagesStore) {
m_db = db;
m_messagesStore = messagesStore;
}