public CloseableMessageOutput create()

in java/commons/src/main/java/com/epam/deltix/data/connectors/commons/TbMessageOutputFactory.java [58:108]


    public CloseableMessageOutput create() {
        TickDBClient tb = null;
        TickLoader<InstrumentMessage> loader = null;
        try {
            tb = (TickDBClient) TickDBFactory.createFromUrl(tbUrl); // unchecked
            tb.setTimeout(10_000);
            tb.addDisconnectEventListener(new DisconnectEventListener() {
                @Override
                public void onDisconnected() {
                    throw new RuntimeException("No more reconnections for this connection");
                }

                @Override
                public void onReconnected() {
                }
            });
            tb.open(false);

            final DXTickStream stream = getOrCreateStreamWithRetries(tb, GET_STREAM_RETRIES);

            final LoadingOptions options = new LoadingOptions(false);

            loader = stream.createLoader(options); // unchecked

            final TickDBClient finalTb = tb;
            final TickLoader<InstrumentMessage> finalLoader = loader;

            return new CloseableMessageOutput() {
                @Override
                public void send(final InstrumentMessage message) {
                    finalLoader.send(message);
                }

                @Override
                public void close() {
                    try {
                        finalLoader.flush();
                    } catch (final IOException e) {
                        throw new UncheckedIOException(e);
                    } finally {
                        Util.closeQuiet(finalLoader);
                        Util.closeQuiet(finalTb);
                    }
                }
            };
        } catch (final Exception e) {
            Util.closeQuiet(loader);
            Util.closeQuiet(tb);
            throw e;
        }
    }