public static void main()

in orderbook-sample/src/main/java/com/epam/deltix/orderbook/sample/OrderBook_03_ConsolidatedOrderBook.java [40:157]


    public static void main(final String[] args) {
        final String symbol = "BTC/USD";
        final int marketDepth = 10;
        final long[] exchangeIds = {
                AlphanumericUtils.toAlphanumericUInt64("COINBASE"),
                AlphanumericUtils.toAlphanumericUInt64("BINANCE")
        };

        // Step 1: create order book
        final OrderBookOptions commonOpt = new OrderBookOptionsBuilder()
                .symbol(symbol)
                .quoteLevels(DataModelType.LEVEL_TWO)
                .initialDepth(marketDepth)
                .initialExchangesPoolSize(exchangeIds.length)
                .updateMode(UpdateMode.WAITING_FOR_SNAPSHOT)
                .build();

        final OrderBookOptions opt = new OrderBookOptionsBuilder()
                .parent(commonOpt)
                .orderBookType(OrderBookType.CONSOLIDATED)
                .build();

        final OrderBook<OrderBookQuote> orderBook = OrderBookFactory.create(opt);

        System.out.println("Hello! I'm " +
                orderBook.getDescription() +
                " for stock symbol: " +
                orderBook.getSymbol().get() + "!");

        // Step 2: feed it with updates
        for (final long exchangeId : exchangeIds) {
            orderBook.update(createL2VendorUpdate(marketDepth, exchangeId, symbol));
        }

        // Step 4: inspect order book state by iterator
        System.out.println(System.lineSeparator());
        Iterator<OrderBookQuote> iterator = orderBook.getMarketSide(QuoteSide.ASK).iterator();
        while (iterator.hasNext()) {
            final OrderBookQuote quote = iterator.next();
            System.out.println(quote);
        }

        // Step 4.1: inspect order book state by iterator
        for (final long exchangeId : exchangeIds) {
            System.out.println(System.lineSeparator());
            iterator = orderBook
                    .getExchanges()
                    .getById(exchangeId).get()
                    .getMarketSide(QuoteSide.ASK)
                    .iterator();
            while (iterator.hasNext()) {
                final OrderBookQuote quote = iterator.next();
                System.out.println(quote);
            }
        }

        // Step 4.2: inspect order book state by iterator
        for (final long exchangeId : exchangeIds) {
            System.out.println(System.lineSeparator());
            iterator = orderBook
                    .getExchanges()
                    .getById(exchangeId).get()
                    .getMarketSide(QuoteSide.ASK)
                    .iterator((short) 5);
            while (iterator.hasNext()) {
                final OrderBookQuote quote = iterator.next();
                System.out.println(quote);
            }
        }

        // Step 4.3: inspect order book state by iterator
        for (final long exchangeId : exchangeIds) {
            System.out.println(System.lineSeparator());
            iterator = orderBook
                    .getExchanges()
                    .getById(exchangeId).get()
                    .getMarketSide(QuoteSide.ASK)
                    .iterator((short) 3, (short) 5);
            while (iterator.hasNext()) {
                final OrderBookQuote quote = iterator.next();
                System.out.println(quote);
            }
        }

        // Step 5: inspect order book state by for each
        System.out.println(System.lineSeparator());
        orderBook.getMarketSide(QuoteSide.ASK).forEach((Predicate<OrderBookQuote>) OrderBook_03_ConsolidatedOrderBook::printOrderBookLevel);

        System.out.println(System.lineSeparator());
        for (final OrderBookQuote quote : orderBook.getMarketSide(QuoteSide.ASK)) {
            System.out.println(quote);
        }

        final boolean isParallel = false;
        orderBook.getMarketSide(QuoteSide.ASK)
                .stream(isParallel)
                .filter(q -> q.getPrice() > 10)
                .forEach(System.out::println);

        // Step 5.1: inspect order book state by for each with cookie
        System.out.println(System.lineSeparator());
        final PriceAccumulator priceAccumulator = new PriceAccumulator();
        orderBook.getMarketSide(QuoteSide.ASK).forEach(OrderBook_03_ConsolidatedOrderBook::quoteViewAccumulatorAction, priceAccumulator);

        // Step 6.1: inspect stock exchanges
        final ExchangeList<? extends Exchange<OrderBookQuote>> exchangeList = orderBook.getExchanges();

        exchangeList
                .forEach(OrderBook_03_ConsolidatedOrderBook::quoteViewExchangeAccumulatorAction, priceAccumulator);

        System.out.println("Stream API");
        orderBook.getExchanges()
                .stream()
                .flatMap(orderBookQuoteExchange -> orderBookQuoteExchange.getMarketSide(QuoteSide.ASK).stream())
                .filter(q -> Decimal64Utils.isGreater(q.getPrice(), Decimal64Utils.fromInt(15)))
                .forEach(System.out::println);

    }