public int invalidTagId() { return notSupported(); }
static MessageValidationStrategy targetCompId(final String gatewayCompId) { return new TargetCompIdValidationStrategy(gatewayCompId); }
static MessageValidationStrategy none() { return new NoMessageValidationStrategy(); }
static void setupCommonConfig( final String acceptorId, final String initiatorId, final CommonConfiguration configuration) { final MessageValidationStrategy validationStrategy = MessageValidationStrategy.targetCompId(acceptorId) .and(MessageValidationStrategy.senderCompId(Arrays.asList(initiatorId, INITIATOR_ID2))); final AuthenticationStrategy authenticationStrategy = AuthenticationStrategy.of(validationStrategy); configuration .authenticationStrategy(authenticationStrategy) .messageValidationStrategy(validationStrategy); }
public boolean validate(final HeaderDecoder header) { final boolean leftValid = left.validate(header); if (leftValid) { final boolean rightValid = right.validate(header); if (rightValid) { return true; } else { invalidTagId = right.invalidTagId(); rejectReason = right.rejectReason(); } } else { invalidTagId = left.invalidTagId(); rejectReason = left.rejectReason(); } return false; }
private boolean authenticate(final LogonDecoder logon, final long connectionId) { try { return authenticationStrategy.authenticate(logon); } catch (final Throwable throwable) { onStrategyError("authentication", throwable, connectionId, "false", logon); return false; } }
private void setup(final boolean resendRedundantResendRequest) { mediaDriver = launchMediaDriver(); delete(ACCEPTOR_LOGS); final EngineConfiguration config = new EngineConfiguration() .bindTo("localhost", port) .libraryAeronChannel(IPC_CHANNEL) .monitoringFile(acceptorMonitoringFile("engineCounters")) .logFileDir(ACCEPTOR_LOGS) .sessionPersistenceStrategy(SessionPersistenceStrategy.alwaysIndexed()) .acceptedSessionSendRedundantResendRequests(resendRedundantResendRequest); engine = FixEngine.launch(config); }
static MessageValidationStrategy senderCompId(final Collection<String> validSenderIds) { return new SenderCompIdValidationStrategy(validSenderIds); }
static AuthenticationStrategy none() { return new NoAuthenticationStrategy(); }
private PersistenceLevel getPersistenceLevel(final LogonDecoder logon, final long connectionId) { try { return sessionPersistenceStrategy.getPersistenceLevel(logon); } catch (final Throwable throwable) { onStrategyError("persistence", throwable, connectionId, "UNINDEXED", logon); return PersistenceLevel.UNINDEXED; } }
static AuthenticationStrategy of(final MessageValidationStrategy delegate) { return (logon) -> delegate.validate(logon.header()); }
sessionPersistenceStrategy(alwaysUnindexed());
@Override public void onStart() { final MessageValidationStrategy validationStrategy = MessageValidationStrategy.targetCompId(ACCEPTOR_COMP_ID) .and(MessageValidationStrategy.senderCompId(Collections.singletonList(INITIATOR_COMP_ID))); final AuthenticationStrategy authenticationStrategy = AuthenticationStrategy.of(validationStrategy); final LibraryConfiguration configuration = new LibraryConfiguration(); configuration.authenticationStrategy(authenticationStrategy); // You register the new session handler - which is your application hook // that receives messages for new sessions configuration .libraryConnectHandler(new LoggingLibraryConnectHandler()) .sessionAcquireHandler(this::onAcquire) .sessionExistsHandler(new AcquiringSessionExistsHandler(true)) .libraryAeronChannels(singletonList(IPC_CHANNEL)); library = FixLibrary.connect(configuration); System.out.println("Connecting library"); }
private boolean validateHeader(final HeaderDecoder header) { if (!session.onBeginString(header.beginString(), header.beginStringLength(), false)) { return false; } boolean validated; try { validated = validationStrategy.validate(header); } catch (final Throwable throwable) { onStrategyError("validation", throwable, header.toString()); validated = false; } if (!validated) { session.onInvalidMessage( header.msgSeqNum(), validationStrategy.invalidTagId(), header.msgType(), header.msgTypeLength(), validationStrategy.rejectReason()); session.logoutRejectReason(validationStrategy.rejectReason()); session.startLogout(); return false; } return true; }
@Before public void setUp() { when(mockAuthenticationStrategy.authenticate(any(LogonDecoder.class))).thenReturn(true); when(mockSession.onBeginString(any(), anyInt(), anyBoolean())).thenReturn(true); }
public int rejectReason() { return notSupported(); }
private FixLibrary connectLibrary() { final MessageValidationStrategy validationStrategy = MessageValidationStrategy.targetCompId(ACCEPTOR_ID) .and(MessageValidationStrategy.senderCompId(Arrays.asList(INITIATOR_ID, INITIATOR_ID2))); final AuthenticationStrategy authenticationStrategy = AuthenticationStrategy.of(validationStrategy); final LibraryConfiguration config = new LibraryConfiguration(); config .sessionAcquireHandler(sessionHandler) .libraryAeronChannels(singletonList(IPC_CHANNEL)) .authenticationStrategy(authenticationStrategy) .messageValidationStrategy(validationStrategy) .replyTimeoutInMs(TIMEOUT_IN_MS); return testSystem.add(connect(config)); }
public static void main(final String[] args) throws Exception { final MessageValidationStrategy validationStrategy = MessageValidationStrategy.targetCompId(ACCEPTOR_COMP_ID) .and(MessageValidationStrategy.senderCompId(Collections.singletonList(INITIATOR_COMP_ID))); final AuthenticationStrategy authenticationStrategy = AuthenticationStrategy.of(validationStrategy); // Static configuration lasts the duration of a FIX-Gateway instance final EngineConfiguration configuration = new EngineConfiguration() .bindTo("localhost", 9999) .libraryAeronChannel(IPC_CHANNEL); configuration.authenticationStrategy(authenticationStrategy); cleanupOldLogFileDir(configuration); final MediaDriver.Context context = new MediaDriver.Context() .threadingMode(SHARED) .sharedIdleStrategy(backoffIdleStrategy()) .dirDeleteOnStart(true); final Archive.Context archiveContext = new Archive.Context() .threadingMode(ArchiveThreadingMode.SHARED) .idleStrategySupplier(CommonConfiguration::backoffIdleStrategy) .deleteArchiveOnStart(true); try (ArchivingMediaDriver driver = ArchivingMediaDriver.launch(context, archiveContext); FixEngine gateway = FixEngine.launch(configuration)) { SampleUtil.runAgentUntilSignal(new ExchangeAgent(), driver.mediaDriver()); } System.exit(0); }