Skip to content

Presentation Layer

Don Mendelson edited this page Aug 10, 2018 · 3 revisions

Requirements

  • The Conga project should support high performance binary message encodings. First among them is Simple Binary Encoding (SBE), a FIX standard. SBE supports all FIX datatypes and deterministic message layouts enforced by templates.
  • The project also supports JSON encoding. The JSON messages are not constrained by a schema but are semantically equivalent to the SBE messages.
  • The project should allow substitution of other message encodings. Message wire format should be isolated from business logic.

Implementation

Message Encoding

In the initial implementation, both application and session messages are encoded with the same protocol. However, this is not an absolute requirement. It would be possible to encode application and session messages with different protocols.

Module conga-sbe contains two SBE message schemas, one for FIXP session messages, and another for sample application messages. The module generates SBE encoders and decoders for defined messages.

Message Definitions

Interfaces are provided for simplified layouts of these FIX messages:

  • ExecutionReport
  • NewOrderSingle
  • NotApplied (specified by FIXP)
  • OrderCancelRequest
  • OrderCancelReject

The demo interfaces just provide features for order matching and not post-trade operations.

Possible Future Enhancements

Alternate Encodings

Implementers who wish to use a different message encoding need to create a new module, equivalent to conga-sbe, with encoders and decoders for application and session messages. For the application messages, implementers need to realize the interfaces in package io.fixprotocol.conga.messages of module conga-common.

Enhanced Message Definitions

To support real-life needs, it should be possible to generate abstract message interfaces and SBE templates from an Orchestra file of machine-readable rules of engagement.

Clone this wiki locally