public void startFeed()

in mbp-with-mbo/src/main/java/com/epam/cme/mdp3/channel/LowLevelMdpChannel.java [235:271]


    public void startFeed(FeedType feedType, Feed feed) throws MdpFeedException {
        Map<FeedType, Pair<MdpFeedWorker, Thread>> currentFeed;
        Map<FeedType, String> networkInterfaces;

        if(mboEnabled && FeedType.S.equals(feedType)) {
            throw new MdpFeedException("It is not allowed to use MBP snapshot feed when MBO is enabled");
        }

        if(Feed.A.equals(feed)){
            currentFeed = feedsA;
            networkInterfaces = feedANetworkInterfaces;
        } else if(Feed.B.equals(feed)){
            currentFeed = feedsB;
            networkInterfaces = feedBNetworkInterfaces;
        } else {
            throw new IllegalArgumentException(String.format("%s feed is not supported", feed));
        }

        if (!currentFeed.containsKey(feedType)) {
            synchronized (this) {
                if (!currentFeed.containsKey(feedType)) {
                    MdpFeedWorker mdpFeedWorker = new MdpFeedWorker(channelCfg.getConnectionCfg(feedType, feed), networkInterfaces.get(feedType), rcvBufSize);
                    mdpFeedWorker.addListener(feedListener);
                    currentFeed.put(feedType, MutablePair.of(mdpFeedWorker, null));
                }
            }
        }
        Pair<MdpFeedWorker, Thread> feedThread = currentFeed.get(feedType);
        MdpFeedWorker mdpFeedWorker = feedThread.getLeft();
        if (!mdpFeedWorker.cancelShutdownIfStarted()) {
            if (!mdpFeedWorker.isActive()) {
                Thread thread = new Thread(mdpFeedWorker);
                feedThread.setValue(thread);
                thread.start();
            }
        }
    }