Getting Started SBE Sample

Description

This sample illustrates how to initialize SBE decoder and how to use it for encode and decode SBE messages.

Source Code

import biz.onixs.sbe.*;
import biz.onixs.sbe.def.MessageSchema;
import biz.onixs.util.ScaledDecimal;
import net.sf.practicalxml.ParseUtil;
import org.w3c.dom.Document;

import java.io.File;

/**
 * Main sample class.
 */
public class GettingStartedSample {

    public GettingStartedSample() {
    }

    private void run() throws Exception {
        final File testsXmlFolder = new File("config").getAbsoluteFile();
        final Document xmlSchema = ParseUtil.parse(new File(testsXmlFolder, "schema.xml"));
        final MessageSchema msgSchema = new MessageSchema(xmlSchema, true);
        final ByteDecoder codec = new ByteDecoderFactory().create(msgSchema);

        final byte[] buffer = new byte[65536];

        {
            // Encode SBE message

            IMessage msg = codec.encode(buffer, 0, buffer.length, 105);

            msg.setDecimal(2, new ScaledDecimal("10"));
            msg.setShort(3, 1);
            msg.setString(4, "Text1");

            IGroup group = msg.getGroup(5);
            group.setLength(2);

            group.next();
            group.setDecimal(7, new ScaledDecimal("11"));
            group.setShort(8, 2);
            group.setString(9, "Text2");

            group.next();
            group.setDecimal(7, new ScaledDecimal("12"));
            group.setShort(8, 3);
            group.setString(9, "Text3");
        }

        {
            // Decode SBE message

            IMessage msg = codec.decode(buffer, 0, buffer.length);
            System.out.println("1=" + msg.getString(1));
            System.out.println("2=" + msg.getDecimal(2));
            System.out.println("3=" + msg.getInt(3));
            System.out.println("4=" + msg.getString(4));

            IGroup group = msg.getGroup(5);
            System.out.println("5=" + group.getLength());

            while (group.next()) {
                System.out.println("Entry: " + group.getPos());
                System.out.println("\t6=" + group.getString(6));
                System.out.println("\t7=" + group.getDecimal(7));
                System.out.println("\t8=" + group.getInt(8));
                System.out.println("\t9=" + group.getString(9));
            }
        }
    }

    /**
     * Program entry point.
     * @param args arguments.
     */
    public static void main(String[] args) {
        try {

            GettingStartedSample sample = new GettingStartedSample();
            sample.run();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Usage

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