/** * Start connecting to an engine. This method returns a FixLibrary immediately even if it hasn't connected. * * You should call {@link #poll(int)} on a regular duty cycle until the connection completes. * {@link #isConnected()} can be polled in order to determine whether library is connected. Also the * {@link LibraryConnectHandler#onConnect(FixLibrary)} method will be invoked. * * @param configuration the configuration for this library instance. * @return the library instance. * @throws FixGatewayException * if there's an error connecting to the FIX Gateway. */ public static FixLibrary connect(final LibraryConfiguration configuration) { return new FixLibrary(configuration).connect(); }
public static FixLibrary blockingConnect(final LibraryConfiguration configuration) { final FixLibrary library = FixLibrary.connect(configuration); while (!library.isConnected()) { library.poll(1); Thread.yield(); } return library; }
@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 void shouldCleanupLibraryIfItCannotConnect(final LibraryConfiguration configuration) { configuration.aeronContext().driverTimeoutMs(50); try { FixLibrary.connect(configuration); } catch (final DriverTimeoutException e) { final File monitoringFile = new File(configuration.monitoringFile()); final File histogramLoggingFile = new File(configuration.histogramLoggingFile()); assertFalse(monitoringFile + " hasn't been deleted", monitoringFile.exists()); assertFalse(histogramLoggingFile + " hasn't been deleted", histogramLoggingFile.exists()); } }
public static FixLibrary connect(final LibraryConfiguration configuration) { final FixLibrary library = FixLibrary.connect(configuration); assertEventuallyTrue( () -> "Unable to connect to engine", () -> { library.poll(LIBRARY_LIMIT); return library.isConnected(); }, DEFAULT_TIMEOUT_IN_MS, library::close); return library; }
@Test public void shouldCleanupLibrary() { final ArchivingMediaDriver mediaDriver = TestFixtures.launchMediaDriver(); try { final LibraryConfiguration configuration = newLibraryConfiguration(); final FixLibrary library = FixLibrary.connect(configuration); final File monitoringFile = new File(configuration.monitoringFile()); final File histogramLoggingFile = new File(configuration.histogramLoggingFile()); try { assertTrue(monitoringFile + " does not exist", monitoringFile.exists()); } finally { CloseHelper.close(library); } assertFalse(monitoringFile + " hasn't been deleted", monitoringFile.exists()); assertFalse(histogramLoggingFile + " hasn't been deleted", histogramLoggingFile.exists()); } finally { TestFixtures.cleanupMediaDriver(mediaDriver); } }
public FixLibrary connect(final LibraryConfiguration configuration) { final FixLibrary library = FixLibrary.connect(configuration); add(library); assertEventuallyTrue( () -> "Unable to connect to engine", () -> { poll(); return library.isConnected(); }, DEFAULT_TIMEOUT_IN_MS, () -> close(library)); return library; }
@Override public void onStart() { final EngineConfiguration engineConfiguration = new EngineConfiguration() .libraryAeronChannel(IPC_CHANNEL); engineConfiguration .aeronContext() .aeronDirectoryName(AERON_DIRECTORY_NAME); engineConfiguration .aeronArchiveContext() .recordingEventsChannel(RECORDING_EVENTS_CHANNEL) .aeronDirectoryName(AERON_DIRECTORY_NAME); cleanupOldLogFileDir(engineConfiguration); gateway = FixEngine.launch(engineConfiguration); final LibraryConfiguration libraryConfiguration = new LibraryConfiguration() .libraryAeronChannels(singletonList(IPC_CHANNEL)) .libraryConnectHandler(buyer) .sessionAcquireHandler(buyer); libraryConfiguration .aeronContext() .aeronDirectoryName(AERON_DIRECTORY_NAME); library = FixLibrary.connect(libraryConfiguration); }