public static void main()

in orderbook-sample/src/main/java/com/epam/deltix/orderbook/sample/OrderBook_02_AggregatedOrderBook.java [39:134]


    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 BindOrderBookOptionsBuilder commonOpt = new OrderBookOptionsBuilder()
                .symbol(symbol)
                .quoteLevels(DataModelType.LEVEL_TWO)
                .initialDepth(marketDepth)
                .initialExchangesPoolSize(exchangeIds.length)
                .updateMode(UpdateMode.WAITING_FOR_SNAPSHOT);

        final OrderBookOptions opt = new OrderBookOptionsBuilder()
                .parent(commonOpt.build())
                .orderBookType(OrderBookType.AGGREGATED)
                .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_02_AggregatedOrderBook::printOrderBookLevel);

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

        // 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_02_AggregatedOrderBook::quoteViewAccumulatorAction, priceAccumulator);
    }