private void format() { message.reset(); message.addField(MsgType).setChar(OrderSingle); message.addField(SenderCompID).setString("initiator"); message.addField(TargetCompID).setString("acceptor"); message.addField(MsgSeqNum).setInt(2); message.addField(SendingTime).setString("20150924-09:30:05.250"); message.addField(ClOrdID).setString("123"); message.addField(HandlInst).setChar(HandlInstValues.AutomatedExecutionNoIntervention); message.addField(Symbol).setString("FOO"); message.addField(Side).setChar(SideValues.Buy); message.addField(TransactTime).setString("20150924-09:30:05.250"); message.addField(OrdType).setChar(OrdTypeValues.Limit); message.addField(Price).setFloat(150.25, 2); }
private void handleTooLowMsgSeqNum(FIXMessage message, FIXValue msgType, long msgSeqNum) throws IOException { if (msgType.length() != 1 || msgType.asChar() != SequenceReset) { FIXValue possDupFlag = message.valueOf(PossDupFlag); if (possDupFlag == null || !possDupFlag.asBoolean()) statusListener.tooLowMsgSeqNum(FIXConnection.this, msgSeqNum, rxMsgSeqNum); } }
/** * Appends a string representation of this message to the specified string * builder. * * @param builder a string builder */ public void toString(StringBuilder builder) { for (int i = 0; i < count; i++) { builder.append(tags[i]); builder.append('='); values[i].asString(builder); builder.append('|'); } }
private void handleTooLowMsgSeqNum(FIXMessage message, FIXValue msgType, long msgSeqNum) throws IOException { if (msgType.length() != 1 || msgType.asChar() != SequenceReset) { FIXValue possDupFlag = message.valueOf(PossDupFlag); if (possDupFlag == null || possDupFlag.asChar() != 'Y') statusListener.tooLowMsgSeqNum(FIXConnection.this, msgSeqNum, rxMsgSeqNum); } }
@Setup(Level.Iteration) public void prepare() { string = new StringBuilder(32); date = new MutableDateTime(2015, 9, 24, 0, 0, 0, 0); timeOnly = new MutableDateTime(2015, 9, 24, 9, 30, 5, 250); timestamp = new MutableDateTime(2015, 9, 24, 9, 30, 5, 250); booleanValue = new FIXValue(64); booleanValue.setBoolean(true); charValue = new FIXValue(64); charValue.setChar('Y'); intValue = new FIXValue(64); intValue.setInt(123); floatValue = new FIXValue(64); floatValue.setFloat(12.30, 2); stringValue = new FIXValue(64); stringValue.setString("FOO"); dateValue = new FIXValue(64); dateValue.setDate(date); timeOnlyValue = new FIXValue(64); timeOnlyValue.setTimeOnly(timeOnly, true); timestampValue = new FIXValue(64); timestampValue.setTimestamp(timestamp, true); copyValue = new FIXValue(64); }
private void sendOrderCancelReject(String clOrdId, String origClOrdId, char cxlRejResponseTo) throws IOException { fix.prepare(txMessage, OrderCancelReject); txMessage.addField(OrderID).setString(UNKNOWN_ORDER_ID); txMessage.addField(ClOrdID).setString(clOrdId); txMessage.addField(OrigClOrdID).setString(origClOrdId); txMessage.addField(OrdStatus).setChar(OrdStatusValues.Rejected); txMessage.addField(CxlRejResponseTo).setChar(cxlRejResponseTo); txMessage.addField(CxlRejReason).setInt(CxlRejReasonValues.UnknownOrder); fix.send(txMessage); }
if (msgType.length() != 1 || msgType.asChar() != OrderSingle) return; clOrdId.reset(); symbol.reset(); side.reset(); orderQty.reset(); price.reset(); clOrdId.set(message.valueAt(i)); break; case Symbol: symbol.set(message.valueAt(i)); break; case Side: side.set(message.valueAt(i)); break; case OrderQty: orderQty.set(message.valueAt(i)); break; case Price: price.set(message.valueAt(i)); break; if (clOrdId.length() == 0) { connection.sendReject(message.getMsgSeqNum(), 1, "ClOrdID(11) not found"); return; if (symbol.length() == 0) {
/** * Update SenderCompID(49) and TargetCompID(56). * * @param message a message * @throws NullPointerException if SenderCompID(49) or TargetCompID(56) * is not found */ public void updateCompID(FIXMessage message) { message.valueOf(SenderCompID).setString(senderCompId); message.valueOf(TargetCompID).setString(targetCompId); }
clOrdId = report.addField(ClOrdID); execId = report.addField(ExecID); report.addField(ExecTransType).setChar(ExecTransTypeValues.New); report.addField(ExecType).setChar(ExecTypeValues.New); report.addField(OrdStatus).setChar(OrdStatusValues.New); symbol = report.addField(Symbol); side = report.addField(Side); price = report.addField(Price); leavesQty = report.addField(LeavesQty); report.addField(CumQty).setInt(0); report.addField(AvgPx).setFloat(0.00, 2);
private void sendSequenceReset(FIXValue msgSeqNum, long newSeqNo) throws IOException { prepare(txMessage, SequenceReset); txMessage.valueOf(MsgSeqNum).set(msgSeqNum); txMessage.addField(GapFillFlag).setBoolean(true); txMessage.addField(NewSeqNo).setInt(newSeqNo); send(txMessage); }
String clOrdId = clOrdIdValue.asString(); account = accountValue.asString(); char side = sideValue.asChar(); String symbol = symbolValue.asString(); orderQty = orderQtyValue.asFloat(); } catch (FIXValueFormatException e) { incorrectDataFormatForValue(message, "Expected 'float' in OrderQty(38)"); price = priceValue.asFloat(); } catch (FIXValueFormatException e) { incorrectDataFormatForValue(message, "Expected 'float' in Price(44)");
/** * Send a message. * * @param message a message * @throws IOException if an I/O error occurs */ public void send(FIXMessage message) throws IOException { txBodyBuffer.clear(); message.put(txBodyBuffer); bodyLength.setInt(txBodyBuffer.position()); txHeaderBuffer.position(bodyLengthOffset); bodyLength.put(txHeaderBuffer); checkSum.setCheckSum(FIXCheckSums.sum(txHeaderBuffer, 0, txHeaderBuffer.position()) + FIXCheckSums.sum(txBodyBuffer, 0, txBodyBuffer.position())); txBodyBuffer.put(CHECK_SUM); checkSum.put(txBodyBuffer); txHeaderBuffer.flip(); txBodyBuffer.flip(); int remaining = txHeaderBuffer.remaining() + txBodyBuffer.remaining(); do { remaining -= channel.write(txBuffers, 0, txBuffers.length); } while (remaining > 0); txMsgSeqNum++; lastTxMillis = currentTimeMillis; }
this.bodyLength = new FIXValue(BODY_LENGTH_FIELD_CAPACITY); this.checkSum = new FIXValue(CHECK_SUM_FIELD_CAPACITY); FIXValue beginString = new FIXValue(BEGIN_STRING_FIELD_CAPACITY); beginString.setString(config.getVersion().getBeginString()); beginString.put(this.txHeaderBuffer); this.txHeaderBuffer.put(BODY_LENGTH);
@Benchmark public void setInt() { intValue.setInt(123); }
@Benchmark public void setChar() { charValue.setChar('Y'); }
/** * Send a Logon(A) message. Set EncryptMethod(98) to 0 and HeartBtInt(108) * according to the connection configuration. * * @param resetSeqNum if true set ResetSeqNumFlag(141) to true, otherwise * omit ResetSeqNumFlag(141) * @throws IOException if an I/O error occurs */ public void sendLogon(boolean resetSeqNum) throws IOException { prepare(txMessage, Logon); txMessage.addField(EncryptMethod).setInt(0); txMessage.addField(HeartBtInt).setInt(config.getHeartBtInt()); if (resetSeqNum) txMessage.addField(ResetSeqNumFlag).setBoolean(true); send(txMessage); }