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

21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
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());
    }
}