
quickfix.DynamicSessionThreadedSocketAcceptor Maven / Gradle / Ivy
The newest version!
package quickfix;
import org.marketcetera.fix.SessionService;
import org.marketcetera.util.log.SLF4JLoggerProxy;
import com.google.common.collect.Lists;
/* $License$ */
/**
* Provides a ThreadedSocketAcceptor
implementation that properly handles dynamic sessions.
*
* @author Colin DuPlantis
* @version $Id$
* @since $Release$
*/
public class DynamicSessionThreadedSocketAcceptor
extends ThreadedSocketAcceptor
{
/**
* Create a new DynamicSessionThreadedSocketAcceptor instance.
*
* @param inApplication an Application
value
* @param inMessageStoreFactory a MessageStoreFactory
value
* @param inSettings a SessionSettings
value
* @param inLogFactory a LogFactory
value
* @param inMessageFactory a MessageFactory
value
* @param inQueueCapacity an int
value
* @param inSessionNameProvider a SessionNameProvider
value
* @throws ConfigError if an error occurs creating the object
*/
public DynamicSessionThreadedSocketAcceptor(Application inApplication,
MessageStoreFactory inMessageStoreFactory,
SessionSettings inSettings,
LogFactory inLogFactory,
MessageFactory inMessageFactory,
int inQueueCapacity,
SessionService inSessionNameProvider)
throws ConfigError
{
super(inApplication,
inMessageStoreFactory,
inSettings,
inLogFactory,
inMessageFactory,
inQueueCapacity);
sessionServices = inSessionNameProvider;
}
/**
* Create a new DynamicSessionThreadedSocketAcceptor instance.
*
* @param inApplication an Application
value
* @param inMessageStoreFactory a MessageStoreFactory
value
* @param inSettings a SessionSettings
value
* @param inLogFactory a LogFactory
value
* @param inMessageFactory a MessageFactory
value
* @param inSessionNameProvider a SessionNameProvider
value
* @throws ConfigError if an error occurs creating the object
*/
public DynamicSessionThreadedSocketAcceptor(Application inApplication,
MessageStoreFactory inMessageStoreFactory,
SessionSettings inSettings,
LogFactory inLogFactory,
MessageFactory inMessageFactory,
SessionService inSessionNameProvider)
throws ConfigError
{
super(inApplication,
inMessageStoreFactory,
inSettings,
inLogFactory,
inMessageFactory);
sessionServices = inSessionNameProvider;
}
/**
* Create a new DynamicSessionThreadedSocketAcceptor instance.
*
* @param inApplication an Application
value
* @param inMessageStoreFactory a MessageStoreFactory
value
* @param inSettings a SessionSettings
value
* @param inMessageFactory a MessageFactory
value
* @param inQueueCapacity an int
value
* @param inSessionNameProvider a SessionNameProvider
value
* @throws ConfigError if an error occurs creating the object
*/
public DynamicSessionThreadedSocketAcceptor(Application inApplication,
MessageStoreFactory inMessageStoreFactory,
SessionSettings inSettings,
MessageFactory inMessageFactory,
SessionService inSessionNameProvider,
int inQueueCapacity)
throws ConfigError
{
super(inApplication,
inMessageStoreFactory,
inSettings,
inMessageFactory,
inQueueCapacity);
sessionServices = inSessionNameProvider;
}
/**
* Create a new DynamicSessionThreadedSocketAcceptor instance.
*
* @param inApplication an Application
value
* @param inMessageStoreFactory a MessageStoreFactory
value
* @param inSettings a SessionSettings
value
* @param inMessageFactory a MessageFactory
value
* @param inSessionNameProvider a SessionNameProvider
value
* @throws ConfigError if an error occurs creating the object
*/
public DynamicSessionThreadedSocketAcceptor(Application inApplication,
MessageStoreFactory inMessageStoreFactory,
SessionSettings inSettings,
MessageFactory inMessageFactory,
SessionService inSessionNameProvider)
throws ConfigError
{
super(inApplication,
inMessageStoreFactory,
inSettings,
inMessageFactory);
sessionServices = inSessionNameProvider;
}
/**
* Create a new DynamicSessionThreadedSocketAcceptor instance.
*
* @param inSessionFactory a SessionFactory
value
* @param inSettings a SessionSettings
value
* @param inQueueCapacity an int
value
* @param inSessionNameProvider a SessionNameProvider
value
* @throws ConfigError if an error occurs creating the object
*/
public DynamicSessionThreadedSocketAcceptor(SessionFactory inSessionFactory,
SessionSettings inSettings,
int inQueueCapacity,
SessionService inSessionNameProvider)
throws ConfigError
{
super(inSessionFactory,
inSettings,
inQueueCapacity);
sessionServices = inSessionNameProvider;
}
/**
* Create a new DynamicSessionThreadedSocketAcceptor instance.
*
* @param inSessionFactory a SessionFactory
value
* @param inSettings a SessionSettings
value
* @param inSessionNameProvider a SessionNameProvider
value
* @throws ConfigError if an error occurs creating the object
*/
public DynamicSessionThreadedSocketAcceptor(SessionFactory inSessionFactory,
SessionSettings inSettings,
SessionService inSessionNameProvider)
throws ConfigError
{
super(inSessionFactory,
inSettings);
sessionServices = inSessionNameProvider;
}
/* (non-Javadoc)
* @see quickfix.mina.SessionConnector#removeDynamicSession(quickfix.SessionID)
*/
@Override
public void removeDynamicSession(SessionID inSessionId)
{
String sessionName = sessionServices.getSessionName(inSessionId);
Session existingSession = Session.lookupSession(inSessionId);
SLF4JLoggerProxy.debug(this,
"Removing dynamic session {}, existing session: {}",
sessionName,
existingSession);
super.removeDynamicSession(inSessionId);
if(existingSession != null) {
SLF4JLoggerProxy.debug(this,
"Logging {} out",
sessionName);
try {
existingSession.logout();
} catch (Exception e) {
SLF4JLoggerProxy.warn(this,
e);
}
if(existingSession.isLoggedOn()) {
SLF4JLoggerProxy.debug(this,
"Forcing {} disconnect",
sessionName);
try {
existingSession.disconnect("Session removed",
false);
} catch (Exception e) {
SLF4JLoggerProxy.warn(this,
e);
}
}
SLF4JLoggerProxy.debug(this,
"Unregistering {}",
sessionName);
Session.unregisterSessions(Lists.newArrayList(inSessionId),
true);
if(Session.lookupSession(inSessionId) == null) {
SLF4JLoggerProxy.debug(this,
"{} succesfully unregistered",
sessionName);
} else {
SLF4JLoggerProxy.debug(this,
"{} unsuccesfully unregistered",
sessionName);
}
}
}
/**
* provides access to session services
*/
private final SessionService sessionServices;
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy