Samples :: Simple FAST

Simple Decode Sample

Description

This sample demonstrates how to decode a FIX message. The CME FAST template is used.

Usage

  • Run the sample:

    • win: SimpleDecodeSample.bat
    • linux: SimpleDecodeSample.sh
  • Clean everything:

    • win: clean.bat
    • linux: clean.sh

Source Code

import biz.onixs.fix.dictionary.Version;
import biz.onixs.fix.engine.Engine;
import biz.onixs.fix.engine.EngineSettings;
import biz.onixs.fix.fast.Decoder;
import biz.onixs.fix.fast.FastVersion;
import biz.onixs.fix.parser.Message;
import biz.onixs.util.url.ResourceLoader;
import biz.onixs.util.url.ResourceLoaderUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.InputStream;

/**
 * Simple FAST decode sample.
 */
public class SimpleDecodeSample {
    private static final Logger LOG = LoggerFactory.getLogger(SimpleDecodeSample.class);
    private static final ResourceLoader RESOURCE_LOADER = ResourceLoaderUtil.DEFAULT_LOADER;
    private static final byte[] BIN_MESSAGE = {-64, -48, -125, 35, 90, 33, 13, 123, 54, 63, -92, 23, 114, -79, -124,
            -115, -126, 95, -109, -106, -128};

    public static void main(final String[] args) {
        final EngineSettings engineSettings = new EngineSettings();
        engineSettings.setDialects("sample/CmeFastFixDialect.xml");
        final Engine engine = Engine.init(engineSettings);
        try {
            final Version fixVersion = Version.getById("CmeFastHandler");
            final InputStream templatesInputStream = RESOURCE_LOADER.getResource("sample/templates.xml");
            final Decoder decoder = new Decoder(templatesInputStream, FastVersion.FAST_1_1, fixVersion);
            LOG.info("Message to decode: {} bytes, {}", BIN_MESSAGE.length, BIN_MESSAGE);
            final Message fixMessage = decoder.decode(BIN_MESSAGE);
            LOG.info("Decoded message: {}", fixMessage);
        } catch (final Exception e) {
            LOG.error(e.getMessage(), e);
        } finally {
            engine.shutdown();
        }
    }
}

Simple Encode Sample

Description

This sample demonstrates how to encode a FIX message. The CME FAST template is used.

Usage

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

Source Code

import biz.onixs.fix.dictionary.Version;
import biz.onixs.fix.engine.Engine;
import biz.onixs.fix.engine.EngineSettings;
import biz.onixs.fix.fast.Encoder;
import biz.onixs.fix.fast.FastVersion;
import biz.onixs.fix.parser.Message;
import biz.onixs.util.url.ResourceLoader;
import biz.onixs.util.url.ResourceLoaderUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.InputStream;

/**
 * Simple FAST encode sample.
 */
public class SimpleEncodeSample {
    private static final Logger LOG = LoggerFactory.getLogger(SimpleEncodeSample.class);
    private static final ResourceLoader RESOURCE_LOADER = ResourceLoaderUtil.DEFAULT_LOADER;
    private static final String RAW_MESSAGE = "8=FIXT.1.1\u00019=993\u000135=W\u000149=CME\u000134=3\u0001" +
            "52=20100210175614884\u0001369=391473\u00011128=9\u000148=12179\u000122=8\u00011021=2\u00011682=21\u0001" +
            "911=4\u000183=13\u000110=198";

    public static void main(final String[] args) {
        final EngineSettings engineSettings = new EngineSettings();
        engineSettings.setDialects("sample/CmeFastFixDialect.xml");
        final Engine engine = Engine.init(engineSettings);
        try {
            final Version fixVersion = Version.getById("CmeFastHandler");
            final InputStream templatesInputStream = RESOURCE_LOADER.getResource("sample/templates.xml");
            final Encoder encoder = new Encoder(templatesInputStream, fixVersion, FastVersion.FAST_1_1);
            final Message fixMessage = new Message(fixVersion, RAW_MESSAGE);
            LOG.info("Message to encode: {}", fixMessage);
            final byte[] binMessage = encoder.encode(fixMessage, 80);
            LOG.info("Encoded message: {} bytes, {}", binMessage.length, binMessage);
        } catch (final Exception e) {
            LOG.error(e.getMessage(), e);
        } finally {
            engine.shutdown();
        }
    }
}