Sunday, 29 July 2012

Fix8 version 0.6.0 released

I have released Fix8 version 0.6.0 today. This is a performance release and will:

1. reduce the encode/decode latency, improve throughput
2. add a metadata driven test harness

home

harness

This test client uses the FIX8::consolemenu class to provide a simple metadat driven test client. All of the messages and fields generated by the compiler are available.

The following is an example run:


% ./harness -r -l client -c hf_client.xml

?=help >
Key     Command
===     =======
?       Help
c       Create messages
d       Delete messages
e       Edit messages
l       Logout
r       Read messages from disk
s       Send messages
w       Write messages to disk
x       Exit

?=help >

--------------------------------------------------
 Select message to create
--------------------------------------------------
[0]  Heartbeat(0)
[1]  TestRequest(1)
[2]  ResendRequest(2)
[3]  Reject(3)
[4]  SequenceReset(4)
[5]  Logout(5)
[6]  IOI(6)
[7]  Advertisement(7)
[8]  ExecutionReport(8)
[9]  OrderCancelReject(9)
[a]  Logon(A)
[b]  DerivativeSecurityList(AA)
[c]  NewOrderMultileg(AB)
[d]  MultilegOrderCancelReplace(AC)
[e]  TradeCaptureReportRequest(AD)
[f]  TradeCaptureReport(AE)
[g]  OrderMassStatusRequest(AF)
[h]  QuoteRequestReject(AG)
[i]  RFQRequest(AH)
[j]  QuoteStatusReport(AI)
[k]  QuoteResponse(AJ)
[l]  Confirmation(AK)
[m]  PositionMaintenanceRequest(AL)
[n]  PositionMaintenanceReport(AM)
[o]  RequestForPositions(AN)
[p]  RequestForPositionsAck(AO)
[q]  PositionReport(AP)
[r]  TradeCaptureReportRequestAck(AQ)
[s]  TradeCaptureReportAck(AR)
[t]  AllocationReport(AS)
[u]  AllocationReportAck(AT)
[v]  ConfirmationAck(AU)
[w]  SettlementInstructionRequest(AV)
[x]  AssignmentReport(AW)
[y]  CollateralRequest(AX)
[z]  CollateralAssignment(AY)
[A]  CollateralResponse(AZ)
[B]  News(B)
[C]  CollateralReport(BA)
[D]  CollateralInquiry(BB)
[E]  NetworkCounterpartySystemStatusRequest(BC)
[F]  NetworkCounterpartySystemStatusResponse(BD)
[G]  UserRequest(BE)
[H]  UserResponse(BF)
[I]  CollateralInquiryAck(BG)
[J]  ConfirmationRequest(BH)
[K]  TradingSessionListRequest(BI)
[L]  TradingSessionList(BJ)
[M]  SecurityListUpdateReport(BK)
[N]  AdjustedPositionReport(BL)
Page 1/3 Press ENTER for next page, '.' to Quit or type an option>G

--------------------------------------------------
 UserRequest: Select field to add
--------------------------------------------------
[0]  RawDataLength(95)
[1]  RawData(96)
[2] *Username(553)
[3]  Password(554)
[4] *UserRequestID(923)
[5] *UserRequestType(924)
[6]  NewPassword(925)
[7]  EncryptedPasswordMethod(1400)
[8]  EncryptedPasswordLen(1401)
[9]  EncryptedPassword(1402)
[a]  EncryptedNewPasswordLen(1403)
[b]  EncryptedNewPassword(1404)
Page 1/1 Press ENTER for next page, '.' to Quit or type an option>2


Username: dakka

--------------------------------------------------
 UserRequest: Select field to add
--------------------------------------------------
[0]  RawDataLength(95)
[1]  RawData(96)
[2] +Username (553): dakka
[3]  Password(554)
[4] *UserRequestID(923)
[5] *UserRequestType(924)
[6]  NewPassword(925)
[7]  EncryptedPasswordMethod(1400)
[8]  EncryptedPasswordLen(1401)
[9]  EncryptedPassword(1402)
[a]  EncryptedNewPasswordLen(1403)
[b]  EncryptedNewPassword(1404)
Page 1/1 Press ENTER for next page, '.' to Quit or type an option> 4

UserRequestID: 1

--------------------------------------------------
 UserRequest: Select field to add
--------------------------------------------------
[0]  RawDataLength(95)
[1]  RawData(96)
[2] +Username (553): dakka
[3]  Password(554)
[4] +UserRequestID (923): 1
[5] *UserRequestType(924)
[6]  NewPassword(925)
[7]  EncryptedPasswordMethod(1400)
[8]  EncryptedPasswordLen(1401)
[9]  EncryptedPassword(1402)
[a]  EncryptedNewPasswordLen(1403)
[b]  EncryptedNewPassword(1404)
Page 1/1 Press ENTER for next page, '.' to Quit or type an option> 5
--------------------------------------------------
 UserRequestType: Select realm value to add
--------------------------------------------------
[0]  LOG_ON_USER (1)
[1]  LOG_OFF_USER (2)
[2]  CHANGE_PASSWORD_FOR_USER (3)
[3]  REQUEST_INDIVIDUAL_USER_STATUS (4)
Page 1/1 Press ENTER for next page, '.' to Quit or type an option> 3
--------------------------------------------------
 UserRequest: Select field to add
--------------------------------------------------
[0]  RawDataLength(95)
[1]  RawData(96)
[2] +Username (553): dakka
[3]  Password(554)
[4] +UserRequestID (923): 1
[5] +UserRequestType (924): CHANGE_PASSWORD_FOR_USER (3)
[6]  NewPassword(925)
[7]  EncryptedPasswordMethod(1400)
[8]  EncryptedPasswordLen(1401)
[9]  EncryptedPassword(1402)
[a]  EncryptedNewPasswordLen(1403)
[b]  EncryptedNewPassword(1404)
Page 1/1 Press ENTER for next page, '.' to Quit or type an option> .


UserRequest ("BE")
   Username (553): dakka
   UserRequestID (923): 1
   UserRequestType (924): CHANGE_PASSWORD_FOR_USER (3)

Add to list? (y/n):y
--------------------------------------------------
 Select message to create
--------------------------------------------------
[0]  Heartbeat(0)
[1]  TestRequest(1)
[2]  ResendRequest(2)
[3]  Reject(3)
[4]  SequenceReset(4)
[5]  Logout(5)
[6]  IOI(6)
[7]  Advertisement(7)
[8]  ExecutionReport(8)
[9]  OrderCancelReject(9)
[a]  Logon(A)
[b]  DerivativeSecurityList(AA)
[c]  NewOrderMultileg(AB)
[d]  MultilegOrderCancelReplace(AC)
[e]  TradeCaptureReportRequest(AD)
[f]  TradeCaptureReport(AE)
[g]  OrderMassStatusRequest(AF)
[h]  QuoteRequestReject(AG)
[i]  RFQRequest(AH)
[j]  QuoteStatusReport(AI)
[k]  QuoteResponse(AJ)
[l]  Confirmation(AK)
[m]  PositionMaintenanceRequest(AL)
[n]  PositionMaintenanceReport(AM)
[o]  RequestForPositions(AN)
[p]  RequestForPositionsAck(AO)
[q]  PositionReport(AP)
[r]  TradeCaptureReportRequestAck(AQ)
[s]  TradeCaptureReportAck(AR)
[t]  AllocationReport(AS)
[u]  AllocationReportAck(AT)
[v]  ConfirmationAck(AU)
[w]  SettlementInstructionRequest(AV)
[x]  AssignmentReport(AW)
[y]  CollateralRequest(AX)
[z]  CollateralAssignment(AY)
[A]  CollateralResponse(AZ)
[B]  News(B)
[C]  CollateralReport(BA)
[D]  CollateralInquiry(BB)
[E]  NetworkCounterpartySystemStatusRequest(BC)
[F]  NetworkCounterpartySystemStatusResponse(BD)
[G]  UserRequest(BE)
[H]  UserResponse(BF)
[I]  CollateralInquiryAck(BG)
[J]  ConfirmationRequest(BH)
[K]  TradingSessionListRequest(BI)
[L]  TradingSessionList(BJ)
[M]  SecurityListUpdateReport(BK)
[N]  AdjustedPositionReport(BL)
Page 1/3 Press ENTER for next page, '.' to Quit or type an option> .


?=help >
% ?

Key     Command
===     =======
?       Help
c       Create messages
d       Delete messages
e       Edit messages
l       Logout
r       Read messages from disk
s       Send messages
w       Write messages to disk
x       Exit

?=help > s

Send messages? (y/n):y
?=help > x

%

notes:
1. Mandatory fields are maked with an '*'
2. Fields that have values are marked with an '+'
3. For fields that have pre-defined domain values, a sub-menu of valid values is presented to select

Thursday, 19 July 2012

Fix8 version 0.6.0 to be released soon

Fix8 version 0.6.0 will be released very soon. This release will again address performance (substantial improvements here) Also I have added a simple metadata driven test harness. There have also been numerous bug fixes and improvements. Time poverty is all that is holding this back ;(