Samples :: Getting Started

Getting Started

Description

CME STP (Straight Through Processing) Handler that connects to the defined host and port. When the session is established, the unfiltered query request is sent to the counterparty.

Usage

  • Run the sample:
    • win: GettingStarted.bat
    • linux: GettingStarted.sh
  • Clean everything:
    • win: clean.bat
    • linux: clean.sh

Source Code

import biz.onixs.cme.stp.handler.*;
import biz.onixs.util.settings.PropertyBasedSettings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.time.Duration;
import java.time.ZonedDateTime;

/**
 * Getting Started sample.
 */
public class GettingStarted implements ErrorListener, MessageListener, FixmlMessageListener {

    private static final Logger LOG = LoggerFactory.getLogger(GettingStarted.class);

    private void run() throws Exception {

        try {
            final PropertyBasedSettings settings = new PropertyBasedSettings("Sample.properties");

            final boolean isUpToDate = settings.getBoolean("UpToDate");

            if (!isUpToDate) {
                throw new Exception("Please update the configuration file (" + "conf/Sample.properties" + ") with up-to-date values");
            }

            String url = settings.getString("Url");
            String senderCompId = settings.getString("SenderCompId");
            String senderSubId = settings.getString("SenderSubId");
            String password = settings.getString("Password");

            Session session = new Session(new URL(url), senderCompId, senderSubId, password);
            session.registerErrorListener(this);
            session.registerMessageListener(this);
            session.registerFixmlMessageListener(this);

            // Query sample.
            {
                TradeCaptureReportRequest req = new TradeCaptureReportRequest();
                req.setStartTime(ZonedDateTime.now().minus(Duration.ofDays(1)));
                req.setEndTime(ZonedDateTime.now());
                req.getInstrument().setSecurityExchange("CME");
                session.query(req);
            }

            // Subscription sample
            {
                String id = session.subscribe();
                System.out.println("Press Enter to exit...");
                BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
                in.readLine();
            }

            session.close();

        } catch (RuntimeException ex) {
            System.out.println("Exception: " + ex.toString());
            LOG.error("Exception: {}", ex.toString());
            System.out.println("Press Enter to exit...");
            BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
            in.readLine();
        }
    }

    public static void main(String[] args) throws Exception {
        GettingStarted program = new GettingStarted();
        program.run();
    }

    @Override
    public void onError(ErrorEventArgs args) {
        System.out.println("Error: " + args.getException().toString());
        LOG.error("Error: {}", args.getException().toString());
    }

    @Override
    public void onTradeCaptureReportRequestSent(TradeCaptureReportRequestEventArgs args) {
        System.out.println("Request sent.");
    }

    @Override
    public void onTradeCaptureReportRequestAcknowledgmentReceived(TradeCaptureReportRequestAcknowledgmentEventArgs args) {
        System.out.println("ReportAck received.");
    }

    @Override
    public void onTradeCaptureReportReceived(TradeCaptureReportEventArgs args) {
        System.out.println("Trade Capture Report received.");
    }

    @Override
    public void onCollateralReportReceived(CollateralReportEventArgs args) {
        System.out.println("Collateral Report received.");
    }

    @Override
    public void onEndOfQuery(TradeCaptureReportRequestEventArgs args) {
        System.out.println("Last report for query received.");
    }

    @Override
    public void onMessageSent(FixmlMessageEventArgs args) {
        System.out.println("Fixml message sent: "+ args.getFixmlMessage());
        LOG.info("Fixml message sent: "+ args.getFixmlMessage());
    }

    @Override
    public void onMessageReceived(FixmlMessageEventArgs args) {
        System.out.println("Fixml message received: "+ args.getFixmlMessage());
        LOG.info("Fixml message received: "+ args.getFixmlMessage());
    }
}