MessageCracker.h 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994
  1. /* -*- C++ -*- */
  2. /****************************************************************************
  3. ** Copyright (c) 2001-2014
  4. **
  5. ** This file is part of the QuickFIX FIX Engine
  6. **
  7. ** This file may be distributed under the terms of the quickfixengine.org
  8. ** license as defined by quickfixengine.org and appearing in the file
  9. ** LICENSE included in the packaging of this file.
  10. **
  11. ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
  12. ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  13. **
  14. ** See http://www.quickfixengine.org/LICENSE for licensing information.
  15. **
  16. ** Contact ask@quickfixengine.org if any conditions of this licensing are
  17. ** not clear to you.
  18. **
  19. ****************************************************************************/
  20. #ifndef FIX44_MESSAGECRACKER_H
  21. #define FIX44_MESSAGECRACKER_H
  22. #include "../SessionID.h"
  23. #include "../Exceptions.h"
  24. #include "../fix44/Message.h"
  25. namespace FIX44
  26. {
  27. class Heartbeat;
  28. class TestRequest;
  29. class ResendRequest;
  30. class Reject;
  31. class SequenceReset;
  32. class Logout;
  33. class IOI;
  34. class Advertisement;
  35. class ExecutionReport;
  36. class OrderCancelReject;
  37. class Logon;
  38. class News;
  39. class Email;
  40. class NewOrderSingle;
  41. class NewOrderList;
  42. class OrderCancelRequest;
  43. class OrderCancelReplaceRequest;
  44. class OrderStatusRequest;
  45. class AllocationInstruction;
  46. class ListCancelRequest;
  47. class ListExecute;
  48. class ListStatusRequest;
  49. class ListStatus;
  50. class AllocationInstructionAck;
  51. class DontKnowTrade;
  52. class QuoteRequest;
  53. class Quote;
  54. class SettlementInstructions;
  55. class MarketDataRequest;
  56. class MarketDataSnapshotFullRefresh;
  57. class MarketDataIncrementalRefresh;
  58. class MarketDataRequestReject;
  59. class QuoteCancel;
  60. class QuoteStatusRequest;
  61. class MassQuoteAcknowledgement;
  62. class SecurityDefinitionRequest;
  63. class SecurityDefinition;
  64. class SecurityStatusRequest;
  65. class SecurityStatus;
  66. class TradingSessionStatusRequest;
  67. class TradingSessionStatus;
  68. class MassQuote;
  69. class BusinessMessageReject;
  70. class BidRequest;
  71. class BidResponse;
  72. class ListStrikePrice;
  73. class XMLnonFIX;
  74. class RegistrationInstructions;
  75. class RegistrationInstructionsResponse;
  76. class OrderMassCancelRequest;
  77. class OrderMassCancelReport;
  78. class NewOrderCross;
  79. class CrossOrderCancelReplaceRequest;
  80. class CrossOrderCancelRequest;
  81. class SecurityTypeRequest;
  82. class SecurityTypes;
  83. class SecurityListRequest;
  84. class SecurityList;
  85. class DerivativeSecurityListRequest;
  86. class DerivativeSecurityList;
  87. class NewOrderMultileg;
  88. class MultilegOrderCancelReplace;
  89. class TradeCaptureReportRequest;
  90. class TradeCaptureReport;
  91. class OrderMassStatusRequest;
  92. class QuoteRequestReject;
  93. class RFQRequest;
  94. class QuoteStatusReport;
  95. class QuoteResponse;
  96. class Confirmation;
  97. class PositionMaintenanceRequest;
  98. class PositionMaintenanceReport;
  99. class RequestForPositions;
  100. class RequestForPositionsAck;
  101. class PositionReport;
  102. class TradeCaptureReportRequestAck;
  103. class TradeCaptureReportAck;
  104. class AllocationReport;
  105. class AllocationReportAck;
  106. class ConfirmationAck;
  107. class SettlementInstructionRequest;
  108. class AssignmentReport;
  109. class CollateralRequest;
  110. class CollateralAssignment;
  111. class CollateralResponse;
  112. class CollateralReport;
  113. class CollateralInquiry;
  114. class NetworkCounterpartySystemStatusRequest;
  115. class NetworkCounterpartySystemStatusResponse;
  116. class UserRequest;
  117. class UserResponse;
  118. class CollateralInquiryAck;
  119. class ConfirmationRequest;
  120. class MessageCracker
  121. {
  122. public:
  123. virtual ~MessageCracker() {}
  124. virtual void onMessage( const Message&, const FIX::SessionID& )
  125. { throw FIX::UnsupportedMessageType(); }
  126. virtual void onMessage( Message&, const FIX::SessionID& )
  127. { throw FIX::UnsupportedMessageType(); }
  128. virtual void onMessage( const Heartbeat&, const FIX::SessionID& )
  129. {}
  130. virtual void onMessage( const TestRequest&, const FIX::SessionID& )
  131. {}
  132. virtual void onMessage( const ResendRequest&, const FIX::SessionID& )
  133. {}
  134. virtual void onMessage( const Reject&, const FIX::SessionID& )
  135. {}
  136. virtual void onMessage( const SequenceReset&, const FIX::SessionID& )
  137. {}
  138. virtual void onMessage( const Logout&, const FIX::SessionID& )
  139. {}
  140. virtual void onMessage( const IOI&, const FIX::SessionID& )
  141. { throw FIX::UnsupportedMessageType(); }
  142. virtual void onMessage( const Advertisement&, const FIX::SessionID& )
  143. { throw FIX::UnsupportedMessageType(); }
  144. virtual void onMessage( const ExecutionReport&, const FIX::SessionID& )
  145. { throw FIX::UnsupportedMessageType(); }
  146. virtual void onMessage( const OrderCancelReject&, const FIX::SessionID& )
  147. { throw FIX::UnsupportedMessageType(); }
  148. virtual void onMessage( const Logon&, const FIX::SessionID& )
  149. {}
  150. virtual void onMessage( const News&, const FIX::SessionID& )
  151. { throw FIX::UnsupportedMessageType(); }
  152. virtual void onMessage( const Email&, const FIX::SessionID& )
  153. { throw FIX::UnsupportedMessageType(); }
  154. virtual void onMessage( const NewOrderSingle&, const FIX::SessionID& )
  155. { throw FIX::UnsupportedMessageType(); }
  156. virtual void onMessage( const NewOrderList&, const FIX::SessionID& )
  157. { throw FIX::UnsupportedMessageType(); }
  158. virtual void onMessage( const OrderCancelRequest&, const FIX::SessionID& )
  159. { throw FIX::UnsupportedMessageType(); }
  160. virtual void onMessage( const OrderCancelReplaceRequest&, const FIX::SessionID& )
  161. { throw FIX::UnsupportedMessageType(); }
  162. virtual void onMessage( const OrderStatusRequest&, const FIX::SessionID& )
  163. { throw FIX::UnsupportedMessageType(); }
  164. virtual void onMessage( const AllocationInstruction&, const FIX::SessionID& )
  165. { throw FIX::UnsupportedMessageType(); }
  166. virtual void onMessage( const ListCancelRequest&, const FIX::SessionID& )
  167. { throw FIX::UnsupportedMessageType(); }
  168. virtual void onMessage( const ListExecute&, const FIX::SessionID& )
  169. { throw FIX::UnsupportedMessageType(); }
  170. virtual void onMessage( const ListStatusRequest&, const FIX::SessionID& )
  171. { throw FIX::UnsupportedMessageType(); }
  172. virtual void onMessage( const ListStatus&, const FIX::SessionID& )
  173. { throw FIX::UnsupportedMessageType(); }
  174. virtual void onMessage( const AllocationInstructionAck&, const FIX::SessionID& )
  175. { throw FIX::UnsupportedMessageType(); }
  176. virtual void onMessage( const DontKnowTrade&, const FIX::SessionID& )
  177. { throw FIX::UnsupportedMessageType(); }
  178. virtual void onMessage( const QuoteRequest&, const FIX::SessionID& )
  179. { throw FIX::UnsupportedMessageType(); }
  180. virtual void onMessage( const Quote&, const FIX::SessionID& )
  181. { throw FIX::UnsupportedMessageType(); }
  182. virtual void onMessage( const SettlementInstructions&, const FIX::SessionID& )
  183. { throw FIX::UnsupportedMessageType(); }
  184. virtual void onMessage( const MarketDataRequest&, const FIX::SessionID& )
  185. { throw FIX::UnsupportedMessageType(); }
  186. virtual void onMessage( const MarketDataSnapshotFullRefresh&, const FIX::SessionID& )
  187. { throw FIX::UnsupportedMessageType(); }
  188. virtual void onMessage( const MarketDataIncrementalRefresh&, const FIX::SessionID& )
  189. { throw FIX::UnsupportedMessageType(); }
  190. virtual void onMessage( const MarketDataRequestReject&, const FIX::SessionID& )
  191. { throw FIX::UnsupportedMessageType(); }
  192. virtual void onMessage( const QuoteCancel&, const FIX::SessionID& )
  193. { throw FIX::UnsupportedMessageType(); }
  194. virtual void onMessage( const QuoteStatusRequest&, const FIX::SessionID& )
  195. { throw FIX::UnsupportedMessageType(); }
  196. virtual void onMessage( const MassQuoteAcknowledgement&, const FIX::SessionID& )
  197. { throw FIX::UnsupportedMessageType(); }
  198. virtual void onMessage( const SecurityDefinitionRequest&, const FIX::SessionID& )
  199. { throw FIX::UnsupportedMessageType(); }
  200. virtual void onMessage( const SecurityDefinition&, const FIX::SessionID& )
  201. { throw FIX::UnsupportedMessageType(); }
  202. virtual void onMessage( const SecurityStatusRequest&, const FIX::SessionID& )
  203. { throw FIX::UnsupportedMessageType(); }
  204. virtual void onMessage( const SecurityStatus&, const FIX::SessionID& )
  205. { throw FIX::UnsupportedMessageType(); }
  206. virtual void onMessage( const TradingSessionStatusRequest&, const FIX::SessionID& )
  207. { throw FIX::UnsupportedMessageType(); }
  208. virtual void onMessage( const TradingSessionStatus&, const FIX::SessionID& )
  209. { throw FIX::UnsupportedMessageType(); }
  210. virtual void onMessage( const MassQuote&, const FIX::SessionID& )
  211. { throw FIX::UnsupportedMessageType(); }
  212. virtual void onMessage( const BusinessMessageReject&, const FIX::SessionID& )
  213. {}
  214. virtual void onMessage( const BidRequest&, const FIX::SessionID& )
  215. { throw FIX::UnsupportedMessageType(); }
  216. virtual void onMessage( const BidResponse&, const FIX::SessionID& )
  217. { throw FIX::UnsupportedMessageType(); }
  218. virtual void onMessage( const ListStrikePrice&, const FIX::SessionID& )
  219. { throw FIX::UnsupportedMessageType(); }
  220. virtual void onMessage( const XMLnonFIX&, const FIX::SessionID& )
  221. {}
  222. virtual void onMessage( const RegistrationInstructions&, const FIX::SessionID& )
  223. { throw FIX::UnsupportedMessageType(); }
  224. virtual void onMessage( const RegistrationInstructionsResponse&, const FIX::SessionID& )
  225. { throw FIX::UnsupportedMessageType(); }
  226. virtual void onMessage( const OrderMassCancelRequest&, const FIX::SessionID& )
  227. { throw FIX::UnsupportedMessageType(); }
  228. virtual void onMessage( const OrderMassCancelReport&, const FIX::SessionID& )
  229. { throw FIX::UnsupportedMessageType(); }
  230. virtual void onMessage( const NewOrderCross&, const FIX::SessionID& )
  231. { throw FIX::UnsupportedMessageType(); }
  232. virtual void onMessage( const CrossOrderCancelReplaceRequest&, const FIX::SessionID& )
  233. { throw FIX::UnsupportedMessageType(); }
  234. virtual void onMessage( const CrossOrderCancelRequest&, const FIX::SessionID& )
  235. { throw FIX::UnsupportedMessageType(); }
  236. virtual void onMessage( const SecurityTypeRequest&, const FIX::SessionID& )
  237. { throw FIX::UnsupportedMessageType(); }
  238. virtual void onMessage( const SecurityTypes&, const FIX::SessionID& )
  239. { throw FIX::UnsupportedMessageType(); }
  240. virtual void onMessage( const SecurityListRequest&, const FIX::SessionID& )
  241. { throw FIX::UnsupportedMessageType(); }
  242. virtual void onMessage( const SecurityList&, const FIX::SessionID& )
  243. { throw FIX::UnsupportedMessageType(); }
  244. virtual void onMessage( const DerivativeSecurityListRequest&, const FIX::SessionID& )
  245. { throw FIX::UnsupportedMessageType(); }
  246. virtual void onMessage( const DerivativeSecurityList&, const FIX::SessionID& )
  247. { throw FIX::UnsupportedMessageType(); }
  248. virtual void onMessage( const NewOrderMultileg&, const FIX::SessionID& )
  249. { throw FIX::UnsupportedMessageType(); }
  250. virtual void onMessage( const MultilegOrderCancelReplace&, const FIX::SessionID& )
  251. { throw FIX::UnsupportedMessageType(); }
  252. virtual void onMessage( const TradeCaptureReportRequest&, const FIX::SessionID& )
  253. { throw FIX::UnsupportedMessageType(); }
  254. virtual void onMessage( const TradeCaptureReport&, const FIX::SessionID& )
  255. { throw FIX::UnsupportedMessageType(); }
  256. virtual void onMessage( const OrderMassStatusRequest&, const FIX::SessionID& )
  257. { throw FIX::UnsupportedMessageType(); }
  258. virtual void onMessage( const QuoteRequestReject&, const FIX::SessionID& )
  259. { throw FIX::UnsupportedMessageType(); }
  260. virtual void onMessage( const RFQRequest&, const FIX::SessionID& )
  261. { throw FIX::UnsupportedMessageType(); }
  262. virtual void onMessage( const QuoteStatusReport&, const FIX::SessionID& )
  263. { throw FIX::UnsupportedMessageType(); }
  264. virtual void onMessage( const QuoteResponse&, const FIX::SessionID& )
  265. { throw FIX::UnsupportedMessageType(); }
  266. virtual void onMessage( const Confirmation&, const FIX::SessionID& )
  267. { throw FIX::UnsupportedMessageType(); }
  268. virtual void onMessage( const PositionMaintenanceRequest&, const FIX::SessionID& )
  269. { throw FIX::UnsupportedMessageType(); }
  270. virtual void onMessage( const PositionMaintenanceReport&, const FIX::SessionID& )
  271. { throw FIX::UnsupportedMessageType(); }
  272. virtual void onMessage( const RequestForPositions&, const FIX::SessionID& )
  273. { throw FIX::UnsupportedMessageType(); }
  274. virtual void onMessage( const RequestForPositionsAck&, const FIX::SessionID& )
  275. { throw FIX::UnsupportedMessageType(); }
  276. virtual void onMessage( const PositionReport&, const FIX::SessionID& )
  277. { throw FIX::UnsupportedMessageType(); }
  278. virtual void onMessage( const TradeCaptureReportRequestAck&, const FIX::SessionID& )
  279. { throw FIX::UnsupportedMessageType(); }
  280. virtual void onMessage( const TradeCaptureReportAck&, const FIX::SessionID& )
  281. { throw FIX::UnsupportedMessageType(); }
  282. virtual void onMessage( const AllocationReport&, const FIX::SessionID& )
  283. { throw FIX::UnsupportedMessageType(); }
  284. virtual void onMessage( const AllocationReportAck&, const FIX::SessionID& )
  285. { throw FIX::UnsupportedMessageType(); }
  286. virtual void onMessage( const ConfirmationAck&, const FIX::SessionID& )
  287. { throw FIX::UnsupportedMessageType(); }
  288. virtual void onMessage( const SettlementInstructionRequest&, const FIX::SessionID& )
  289. { throw FIX::UnsupportedMessageType(); }
  290. virtual void onMessage( const AssignmentReport&, const FIX::SessionID& )
  291. { throw FIX::UnsupportedMessageType(); }
  292. virtual void onMessage( const CollateralRequest&, const FIX::SessionID& )
  293. { throw FIX::UnsupportedMessageType(); }
  294. virtual void onMessage( const CollateralAssignment&, const FIX::SessionID& )
  295. { throw FIX::UnsupportedMessageType(); }
  296. virtual void onMessage( const CollateralResponse&, const FIX::SessionID& )
  297. { throw FIX::UnsupportedMessageType(); }
  298. virtual void onMessage( const CollateralReport&, const FIX::SessionID& )
  299. { throw FIX::UnsupportedMessageType(); }
  300. virtual void onMessage( const CollateralInquiry&, const FIX::SessionID& )
  301. { throw FIX::UnsupportedMessageType(); }
  302. virtual void onMessage( const NetworkCounterpartySystemStatusRequest&, const FIX::SessionID& )
  303. { throw FIX::UnsupportedMessageType(); }
  304. virtual void onMessage( const NetworkCounterpartySystemStatusResponse&, const FIX::SessionID& )
  305. { throw FIX::UnsupportedMessageType(); }
  306. virtual void onMessage( const UserRequest&, const FIX::SessionID& )
  307. { throw FIX::UnsupportedMessageType(); }
  308. virtual void onMessage( const UserResponse&, const FIX::SessionID& )
  309. { throw FIX::UnsupportedMessageType(); }
  310. virtual void onMessage( const CollateralInquiryAck&, const FIX::SessionID& )
  311. { throw FIX::UnsupportedMessageType(); }
  312. virtual void onMessage( const ConfirmationRequest&, const FIX::SessionID& )
  313. { throw FIX::UnsupportedMessageType(); }
  314. virtual void onMessage( Heartbeat&, const FIX::SessionID& ) {}
  315. virtual void onMessage( TestRequest&, const FIX::SessionID& ) {}
  316. virtual void onMessage( ResendRequest&, const FIX::SessionID& ) {}
  317. virtual void onMessage( Reject&, const FIX::SessionID& ) {}
  318. virtual void onMessage( SequenceReset&, const FIX::SessionID& ) {}
  319. virtual void onMessage( Logout&, const FIX::SessionID& ) {}
  320. virtual void onMessage( IOI&, const FIX::SessionID& ) {}
  321. virtual void onMessage( Advertisement&, const FIX::SessionID& ) {}
  322. virtual void onMessage( ExecutionReport&, const FIX::SessionID& ) {}
  323. virtual void onMessage( OrderCancelReject&, const FIX::SessionID& ) {}
  324. virtual void onMessage( Logon&, const FIX::SessionID& ) {}
  325. virtual void onMessage( News&, const FIX::SessionID& ) {}
  326. virtual void onMessage( Email&, const FIX::SessionID& ) {}
  327. virtual void onMessage( NewOrderSingle&, const FIX::SessionID& ) {}
  328. virtual void onMessage( NewOrderList&, const FIX::SessionID& ) {}
  329. virtual void onMessage( OrderCancelRequest&, const FIX::SessionID& ) {}
  330. virtual void onMessage( OrderCancelReplaceRequest&, const FIX::SessionID& ) {}
  331. virtual void onMessage( OrderStatusRequest&, const FIX::SessionID& ) {}
  332. virtual void onMessage( AllocationInstruction&, const FIX::SessionID& ) {}
  333. virtual void onMessage( ListCancelRequest&, const FIX::SessionID& ) {}
  334. virtual void onMessage( ListExecute&, const FIX::SessionID& ) {}
  335. virtual void onMessage( ListStatusRequest&, const FIX::SessionID& ) {}
  336. virtual void onMessage( ListStatus&, const FIX::SessionID& ) {}
  337. virtual void onMessage( AllocationInstructionAck&, const FIX::SessionID& ) {}
  338. virtual void onMessage( DontKnowTrade&, const FIX::SessionID& ) {}
  339. virtual void onMessage( QuoteRequest&, const FIX::SessionID& ) {}
  340. virtual void onMessage( Quote&, const FIX::SessionID& ) {}
  341. virtual void onMessage( SettlementInstructions&, const FIX::SessionID& ) {}
  342. virtual void onMessage( MarketDataRequest&, const FIX::SessionID& ) {}
  343. virtual void onMessage( MarketDataSnapshotFullRefresh&, const FIX::SessionID& ) {}
  344. virtual void onMessage( MarketDataIncrementalRefresh&, const FIX::SessionID& ) {}
  345. virtual void onMessage( MarketDataRequestReject&, const FIX::SessionID& ) {}
  346. virtual void onMessage( QuoteCancel&, const FIX::SessionID& ) {}
  347. virtual void onMessage( QuoteStatusRequest&, const FIX::SessionID& ) {}
  348. virtual void onMessage( MassQuoteAcknowledgement&, const FIX::SessionID& ) {}
  349. virtual void onMessage( SecurityDefinitionRequest&, const FIX::SessionID& ) {}
  350. virtual void onMessage( SecurityDefinition&, const FIX::SessionID& ) {}
  351. virtual void onMessage( SecurityStatusRequest&, const FIX::SessionID& ) {}
  352. virtual void onMessage( SecurityStatus&, const FIX::SessionID& ) {}
  353. virtual void onMessage( TradingSessionStatusRequest&, const FIX::SessionID& ) {}
  354. virtual void onMessage( TradingSessionStatus&, const FIX::SessionID& ) {}
  355. virtual void onMessage( MassQuote&, const FIX::SessionID& ) {}
  356. virtual void onMessage( BusinessMessageReject&, const FIX::SessionID& ) {}
  357. virtual void onMessage( BidRequest&, const FIX::SessionID& ) {}
  358. virtual void onMessage( BidResponse&, const FIX::SessionID& ) {}
  359. virtual void onMessage( ListStrikePrice&, const FIX::SessionID& ) {}
  360. virtual void onMessage( XMLnonFIX&, const FIX::SessionID& ) {}
  361. virtual void onMessage( RegistrationInstructions&, const FIX::SessionID& ) {}
  362. virtual void onMessage( RegistrationInstructionsResponse&, const FIX::SessionID& ) {}
  363. virtual void onMessage( OrderMassCancelRequest&, const FIX::SessionID& ) {}
  364. virtual void onMessage( OrderMassCancelReport&, const FIX::SessionID& ) {}
  365. virtual void onMessage( NewOrderCross&, const FIX::SessionID& ) {}
  366. virtual void onMessage( CrossOrderCancelReplaceRequest&, const FIX::SessionID& ) {}
  367. virtual void onMessage( CrossOrderCancelRequest&, const FIX::SessionID& ) {}
  368. virtual void onMessage( SecurityTypeRequest&, const FIX::SessionID& ) {}
  369. virtual void onMessage( SecurityTypes&, const FIX::SessionID& ) {}
  370. virtual void onMessage( SecurityListRequest&, const FIX::SessionID& ) {}
  371. virtual void onMessage( SecurityList&, const FIX::SessionID& ) {}
  372. virtual void onMessage( DerivativeSecurityListRequest&, const FIX::SessionID& ) {}
  373. virtual void onMessage( DerivativeSecurityList&, const FIX::SessionID& ) {}
  374. virtual void onMessage( NewOrderMultileg&, const FIX::SessionID& ) {}
  375. virtual void onMessage( MultilegOrderCancelReplace&, const FIX::SessionID& ) {}
  376. virtual void onMessage( TradeCaptureReportRequest&, const FIX::SessionID& ) {}
  377. virtual void onMessage( TradeCaptureReport&, const FIX::SessionID& ) {}
  378. virtual void onMessage( OrderMassStatusRequest&, const FIX::SessionID& ) {}
  379. virtual void onMessage( QuoteRequestReject&, const FIX::SessionID& ) {}
  380. virtual void onMessage( RFQRequest&, const FIX::SessionID& ) {}
  381. virtual void onMessage( QuoteStatusReport&, const FIX::SessionID& ) {}
  382. virtual void onMessage( QuoteResponse&, const FIX::SessionID& ) {}
  383. virtual void onMessage( Confirmation&, const FIX::SessionID& ) {}
  384. virtual void onMessage( PositionMaintenanceRequest&, const FIX::SessionID& ) {}
  385. virtual void onMessage( PositionMaintenanceReport&, const FIX::SessionID& ) {}
  386. virtual void onMessage( RequestForPositions&, const FIX::SessionID& ) {}
  387. virtual void onMessage( RequestForPositionsAck&, const FIX::SessionID& ) {}
  388. virtual void onMessage( PositionReport&, const FIX::SessionID& ) {}
  389. virtual void onMessage( TradeCaptureReportRequestAck&, const FIX::SessionID& ) {}
  390. virtual void onMessage( TradeCaptureReportAck&, const FIX::SessionID& ) {}
  391. virtual void onMessage( AllocationReport&, const FIX::SessionID& ) {}
  392. virtual void onMessage( AllocationReportAck&, const FIX::SessionID& ) {}
  393. virtual void onMessage( ConfirmationAck&, const FIX::SessionID& ) {}
  394. virtual void onMessage( SettlementInstructionRequest&, const FIX::SessionID& ) {}
  395. virtual void onMessage( AssignmentReport&, const FIX::SessionID& ) {}
  396. virtual void onMessage( CollateralRequest&, const FIX::SessionID& ) {}
  397. virtual void onMessage( CollateralAssignment&, const FIX::SessionID& ) {}
  398. virtual void onMessage( CollateralResponse&, const FIX::SessionID& ) {}
  399. virtual void onMessage( CollateralReport&, const FIX::SessionID& ) {}
  400. virtual void onMessage( CollateralInquiry&, const FIX::SessionID& ) {}
  401. virtual void onMessage( NetworkCounterpartySystemStatusRequest&, const FIX::SessionID& ) {}
  402. virtual void onMessage( NetworkCounterpartySystemStatusResponse&, const FIX::SessionID& ) {}
  403. virtual void onMessage( UserRequest&, const FIX::SessionID& ) {}
  404. virtual void onMessage( UserResponse&, const FIX::SessionID& ) {}
  405. virtual void onMessage( CollateralInquiryAck&, const FIX::SessionID& ) {}
  406. virtual void onMessage( ConfirmationRequest&, const FIX::SessionID& ) {}
  407. public:
  408. void crack( const Message& message,
  409. const FIX::SessionID& sessionID )
  410. {
  411. const std::string& msgTypeValue
  412. = message.getHeader().getField( FIX::FIELD::MsgType );
  413. if( msgTypeValue == "0" )
  414. onMessage( (const Heartbeat&)message, sessionID );
  415. else
  416. if( msgTypeValue == "1" )
  417. onMessage( (const TestRequest&)message, sessionID );
  418. else
  419. if( msgTypeValue == "2" )
  420. onMessage( (const ResendRequest&)message, sessionID );
  421. else
  422. if( msgTypeValue == "3" )
  423. onMessage( (const Reject&)message, sessionID );
  424. else
  425. if( msgTypeValue == "4" )
  426. onMessage( (const SequenceReset&)message, sessionID );
  427. else
  428. if( msgTypeValue == "5" )
  429. onMessage( (const Logout&)message, sessionID );
  430. else
  431. if( msgTypeValue == "6" )
  432. onMessage( (const IOI&)message, sessionID );
  433. else
  434. if( msgTypeValue == "7" )
  435. onMessage( (const Advertisement&)message, sessionID );
  436. else
  437. if( msgTypeValue == "8" )
  438. onMessage( (const ExecutionReport&)message, sessionID );
  439. else
  440. if( msgTypeValue == "9" )
  441. onMessage( (const OrderCancelReject&)message, sessionID );
  442. else
  443. if( msgTypeValue == "A" )
  444. onMessage( (const Logon&)message, sessionID );
  445. else
  446. if( msgTypeValue == "B" )
  447. onMessage( (const News&)message, sessionID );
  448. else
  449. if( msgTypeValue == "C" )
  450. onMessage( (const Email&)message, sessionID );
  451. else
  452. if( msgTypeValue == "D" )
  453. onMessage( (const NewOrderSingle&)message, sessionID );
  454. else
  455. if( msgTypeValue == "E" )
  456. onMessage( (const NewOrderList&)message, sessionID );
  457. else
  458. if( msgTypeValue == "F" )
  459. onMessage( (const OrderCancelRequest&)message, sessionID );
  460. else
  461. if( msgTypeValue == "G" )
  462. onMessage( (const OrderCancelReplaceRequest&)message, sessionID );
  463. else
  464. if( msgTypeValue == "H" )
  465. onMessage( (const OrderStatusRequest&)message, sessionID );
  466. else
  467. if( msgTypeValue == "J" )
  468. onMessage( (const AllocationInstruction&)message, sessionID );
  469. else
  470. if( msgTypeValue == "K" )
  471. onMessage( (const ListCancelRequest&)message, sessionID );
  472. else
  473. if( msgTypeValue == "L" )
  474. onMessage( (const ListExecute&)message, sessionID );
  475. else
  476. if( msgTypeValue == "M" )
  477. onMessage( (const ListStatusRequest&)message, sessionID );
  478. else
  479. if( msgTypeValue == "N" )
  480. onMessage( (const ListStatus&)message, sessionID );
  481. else
  482. if( msgTypeValue == "P" )
  483. onMessage( (const AllocationInstructionAck&)message, sessionID );
  484. else
  485. if( msgTypeValue == "Q" )
  486. onMessage( (const DontKnowTrade&)message, sessionID );
  487. else
  488. if( msgTypeValue == "R" )
  489. onMessage( (const QuoteRequest&)message, sessionID );
  490. else
  491. if( msgTypeValue == "S" )
  492. onMessage( (const Quote&)message, sessionID );
  493. else
  494. if( msgTypeValue == "T" )
  495. onMessage( (const SettlementInstructions&)message, sessionID );
  496. else
  497. if( msgTypeValue == "V" )
  498. onMessage( (const MarketDataRequest&)message, sessionID );
  499. else
  500. if( msgTypeValue == "W" )
  501. onMessage( (const MarketDataSnapshotFullRefresh&)message, sessionID );
  502. else
  503. if( msgTypeValue == "X" )
  504. onMessage( (const MarketDataIncrementalRefresh&)message, sessionID );
  505. else
  506. if( msgTypeValue == "Y" )
  507. onMessage( (const MarketDataRequestReject&)message, sessionID );
  508. else
  509. if( msgTypeValue == "Z" )
  510. onMessage( (const QuoteCancel&)message, sessionID );
  511. else
  512. if( msgTypeValue == "a" )
  513. onMessage( (const QuoteStatusRequest&)message, sessionID );
  514. else
  515. if( msgTypeValue == "b" )
  516. onMessage( (const MassQuoteAcknowledgement&)message, sessionID );
  517. else
  518. if( msgTypeValue == "c" )
  519. onMessage( (const SecurityDefinitionRequest&)message, sessionID );
  520. else
  521. if( msgTypeValue == "d" )
  522. onMessage( (const SecurityDefinition&)message, sessionID );
  523. else
  524. if( msgTypeValue == "e" )
  525. onMessage( (const SecurityStatusRequest&)message, sessionID );
  526. else
  527. if( msgTypeValue == "f" )
  528. onMessage( (const SecurityStatus&)message, sessionID );
  529. else
  530. if( msgTypeValue == "g" )
  531. onMessage( (const TradingSessionStatusRequest&)message, sessionID );
  532. else
  533. if( msgTypeValue == "h" )
  534. onMessage( (const TradingSessionStatus&)message, sessionID );
  535. else
  536. if( msgTypeValue == "i" )
  537. onMessage( (const MassQuote&)message, sessionID );
  538. else
  539. if( msgTypeValue == "j" )
  540. onMessage( (const BusinessMessageReject&)message, sessionID );
  541. else
  542. if( msgTypeValue == "k" )
  543. onMessage( (const BidRequest&)message, sessionID );
  544. else
  545. if( msgTypeValue == "l" )
  546. onMessage( (const BidResponse&)message, sessionID );
  547. else
  548. if( msgTypeValue == "m" )
  549. onMessage( (const ListStrikePrice&)message, sessionID );
  550. else
  551. if( msgTypeValue == "n" )
  552. onMessage( (const XMLnonFIX&)message, sessionID );
  553. else
  554. if( msgTypeValue == "o" )
  555. onMessage( (const RegistrationInstructions&)message, sessionID );
  556. else
  557. if( msgTypeValue == "p" )
  558. onMessage( (const RegistrationInstructionsResponse&)message, sessionID );
  559. else
  560. if( msgTypeValue == "q" )
  561. onMessage( (const OrderMassCancelRequest&)message, sessionID );
  562. else
  563. if( msgTypeValue == "r" )
  564. onMessage( (const OrderMassCancelReport&)message, sessionID );
  565. else
  566. if( msgTypeValue == "s" )
  567. onMessage( (const NewOrderCross&)message, sessionID );
  568. else
  569. if( msgTypeValue == "t" )
  570. onMessage( (const CrossOrderCancelReplaceRequest&)message, sessionID );
  571. else
  572. if( msgTypeValue == "u" )
  573. onMessage( (const CrossOrderCancelRequest&)message, sessionID );
  574. else
  575. if( msgTypeValue == "v" )
  576. onMessage( (const SecurityTypeRequest&)message, sessionID );
  577. else
  578. if( msgTypeValue == "w" )
  579. onMessage( (const SecurityTypes&)message, sessionID );
  580. else
  581. if( msgTypeValue == "x" )
  582. onMessage( (const SecurityListRequest&)message, sessionID );
  583. else
  584. if( msgTypeValue == "y" )
  585. onMessage( (const SecurityList&)message, sessionID );
  586. else
  587. if( msgTypeValue == "z" )
  588. onMessage( (const DerivativeSecurityListRequest&)message, sessionID );
  589. else
  590. if( msgTypeValue == "AA" )
  591. onMessage( (const DerivativeSecurityList&)message, sessionID );
  592. else
  593. if( msgTypeValue == "AB" )
  594. onMessage( (const NewOrderMultileg&)message, sessionID );
  595. else
  596. if( msgTypeValue == "AC" )
  597. onMessage( (const MultilegOrderCancelReplace&)message, sessionID );
  598. else
  599. if( msgTypeValue == "AD" )
  600. onMessage( (const TradeCaptureReportRequest&)message, sessionID );
  601. else
  602. if( msgTypeValue == "AE" )
  603. onMessage( (const TradeCaptureReport&)message, sessionID );
  604. else
  605. if( msgTypeValue == "AF" )
  606. onMessage( (const OrderMassStatusRequest&)message, sessionID );
  607. else
  608. if( msgTypeValue == "AG" )
  609. onMessage( (const QuoteRequestReject&)message, sessionID );
  610. else
  611. if( msgTypeValue == "AH" )
  612. onMessage( (const RFQRequest&)message, sessionID );
  613. else
  614. if( msgTypeValue == "AI" )
  615. onMessage( (const QuoteStatusReport&)message, sessionID );
  616. else
  617. if( msgTypeValue == "AJ" )
  618. onMessage( (const QuoteResponse&)message, sessionID );
  619. else
  620. if( msgTypeValue == "AK" )
  621. onMessage( (const Confirmation&)message, sessionID );
  622. else
  623. if( msgTypeValue == "AL" )
  624. onMessage( (const PositionMaintenanceRequest&)message, sessionID );
  625. else
  626. if( msgTypeValue == "AM" )
  627. onMessage( (const PositionMaintenanceReport&)message, sessionID );
  628. else
  629. if( msgTypeValue == "AN" )
  630. onMessage( (const RequestForPositions&)message, sessionID );
  631. else
  632. if( msgTypeValue == "AO" )
  633. onMessage( (const RequestForPositionsAck&)message, sessionID );
  634. else
  635. if( msgTypeValue == "AP" )
  636. onMessage( (const PositionReport&)message, sessionID );
  637. else
  638. if( msgTypeValue == "AQ" )
  639. onMessage( (const TradeCaptureReportRequestAck&)message, sessionID );
  640. else
  641. if( msgTypeValue == "AR" )
  642. onMessage( (const TradeCaptureReportAck&)message, sessionID );
  643. else
  644. if( msgTypeValue == "AS" )
  645. onMessage( (const AllocationReport&)message, sessionID );
  646. else
  647. if( msgTypeValue == "AT" )
  648. onMessage( (const AllocationReportAck&)message, sessionID );
  649. else
  650. if( msgTypeValue == "AU" )
  651. onMessage( (const ConfirmationAck&)message, sessionID );
  652. else
  653. if( msgTypeValue == "AV" )
  654. onMessage( (const SettlementInstructionRequest&)message, sessionID );
  655. else
  656. if( msgTypeValue == "AW" )
  657. onMessage( (const AssignmentReport&)message, sessionID );
  658. else
  659. if( msgTypeValue == "AX" )
  660. onMessage( (const CollateralRequest&)message, sessionID );
  661. else
  662. if( msgTypeValue == "AY" )
  663. onMessage( (const CollateralAssignment&)message, sessionID );
  664. else
  665. if( msgTypeValue == "AZ" )
  666. onMessage( (const CollateralResponse&)message, sessionID );
  667. else
  668. if( msgTypeValue == "BA" )
  669. onMessage( (const CollateralReport&)message, sessionID );
  670. else
  671. if( msgTypeValue == "BB" )
  672. onMessage( (const CollateralInquiry&)message, sessionID );
  673. else
  674. if( msgTypeValue == "BC" )
  675. onMessage( (const NetworkCounterpartySystemStatusRequest&)message, sessionID );
  676. else
  677. if( msgTypeValue == "BD" )
  678. onMessage( (const NetworkCounterpartySystemStatusResponse&)message, sessionID );
  679. else
  680. if( msgTypeValue == "BE" )
  681. onMessage( (const UserRequest&)message, sessionID );
  682. else
  683. if( msgTypeValue == "BF" )
  684. onMessage( (const UserResponse&)message, sessionID );
  685. else
  686. if( msgTypeValue == "BG" )
  687. onMessage( (const CollateralInquiryAck&)message, sessionID );
  688. else
  689. if( msgTypeValue == "BH" )
  690. onMessage( (const ConfirmationRequest&)message, sessionID );
  691. else onMessage( message, sessionID );
  692. }
  693. void crack( Message& message,
  694. const FIX::SessionID& sessionID )
  695. {
  696. FIX::MsgType msgType;
  697. message.getHeader().getField(msgType);
  698. std::string msgTypeValue = msgType.getValue();
  699. if( msgTypeValue == "0" )
  700. onMessage( (Heartbeat&)message, sessionID );
  701. else
  702. if( msgTypeValue == "1" )
  703. onMessage( (TestRequest&)message, sessionID );
  704. else
  705. if( msgTypeValue == "2" )
  706. onMessage( (ResendRequest&)message, sessionID );
  707. else
  708. if( msgTypeValue == "3" )
  709. onMessage( (Reject&)message, sessionID );
  710. else
  711. if( msgTypeValue == "4" )
  712. onMessage( (SequenceReset&)message, sessionID );
  713. else
  714. if( msgTypeValue == "5" )
  715. onMessage( (Logout&)message, sessionID );
  716. else
  717. if( msgTypeValue == "6" )
  718. onMessage( (IOI&)message, sessionID );
  719. else
  720. if( msgTypeValue == "7" )
  721. onMessage( (Advertisement&)message, sessionID );
  722. else
  723. if( msgTypeValue == "8" )
  724. onMessage( (ExecutionReport&)message, sessionID );
  725. else
  726. if( msgTypeValue == "9" )
  727. onMessage( (OrderCancelReject&)message, sessionID );
  728. else
  729. if( msgTypeValue == "A" )
  730. onMessage( (Logon&)message, sessionID );
  731. else
  732. if( msgTypeValue == "B" )
  733. onMessage( (News&)message, sessionID );
  734. else
  735. if( msgTypeValue == "C" )
  736. onMessage( (Email&)message, sessionID );
  737. else
  738. if( msgTypeValue == "D" )
  739. onMessage( (NewOrderSingle&)message, sessionID );
  740. else
  741. if( msgTypeValue == "E" )
  742. onMessage( (NewOrderList&)message, sessionID );
  743. else
  744. if( msgTypeValue == "F" )
  745. onMessage( (OrderCancelRequest&)message, sessionID );
  746. else
  747. if( msgTypeValue == "G" )
  748. onMessage( (OrderCancelReplaceRequest&)message, sessionID );
  749. else
  750. if( msgTypeValue == "H" )
  751. onMessage( (OrderStatusRequest&)message, sessionID );
  752. else
  753. if( msgTypeValue == "J" )
  754. onMessage( (AllocationInstruction&)message, sessionID );
  755. else
  756. if( msgTypeValue == "K" )
  757. onMessage( (ListCancelRequest&)message, sessionID );
  758. else
  759. if( msgTypeValue == "L" )
  760. onMessage( (ListExecute&)message, sessionID );
  761. else
  762. if( msgTypeValue == "M" )
  763. onMessage( (ListStatusRequest&)message, sessionID );
  764. else
  765. if( msgTypeValue == "N" )
  766. onMessage( (ListStatus&)message, sessionID );
  767. else
  768. if( msgTypeValue == "P" )
  769. onMessage( (AllocationInstructionAck&)message, sessionID );
  770. else
  771. if( msgTypeValue == "Q" )
  772. onMessage( (DontKnowTrade&)message, sessionID );
  773. else
  774. if( msgTypeValue == "R" )
  775. onMessage( (QuoteRequest&)message, sessionID );
  776. else
  777. if( msgTypeValue == "S" )
  778. onMessage( (Quote&)message, sessionID );
  779. else
  780. if( msgTypeValue == "T" )
  781. onMessage( (SettlementInstructions&)message, sessionID );
  782. else
  783. if( msgTypeValue == "V" )
  784. onMessage( (MarketDataRequest&)message, sessionID );
  785. else
  786. if( msgTypeValue == "W" )
  787. onMessage( (MarketDataSnapshotFullRefresh&)message, sessionID );
  788. else
  789. if( msgTypeValue == "X" )
  790. onMessage( (MarketDataIncrementalRefresh&)message, sessionID );
  791. else
  792. if( msgTypeValue == "Y" )
  793. onMessage( (MarketDataRequestReject&)message, sessionID );
  794. else
  795. if( msgTypeValue == "Z" )
  796. onMessage( (QuoteCancel&)message, sessionID );
  797. else
  798. if( msgTypeValue == "a" )
  799. onMessage( (QuoteStatusRequest&)message, sessionID );
  800. else
  801. if( msgTypeValue == "b" )
  802. onMessage( (MassQuoteAcknowledgement&)message, sessionID );
  803. else
  804. if( msgTypeValue == "c" )
  805. onMessage( (SecurityDefinitionRequest&)message, sessionID );
  806. else
  807. if( msgTypeValue == "d" )
  808. onMessage( (SecurityDefinition&)message, sessionID );
  809. else
  810. if( msgTypeValue == "e" )
  811. onMessage( (SecurityStatusRequest&)message, sessionID );
  812. else
  813. if( msgTypeValue == "f" )
  814. onMessage( (SecurityStatus&)message, sessionID );
  815. else
  816. if( msgTypeValue == "g" )
  817. onMessage( (TradingSessionStatusRequest&)message, sessionID );
  818. else
  819. if( msgTypeValue == "h" )
  820. onMessage( (TradingSessionStatus&)message, sessionID );
  821. else
  822. if( msgTypeValue == "i" )
  823. onMessage( (MassQuote&)message, sessionID );
  824. else
  825. if( msgTypeValue == "j" )
  826. onMessage( (BusinessMessageReject&)message, sessionID );
  827. else
  828. if( msgTypeValue == "k" )
  829. onMessage( (BidRequest&)message, sessionID );
  830. else
  831. if( msgTypeValue == "l" )
  832. onMessage( (BidResponse&)message, sessionID );
  833. else
  834. if( msgTypeValue == "m" )
  835. onMessage( (ListStrikePrice&)message, sessionID );
  836. else
  837. if( msgTypeValue == "n" )
  838. onMessage( (XMLnonFIX&)message, sessionID );
  839. else
  840. if( msgTypeValue == "o" )
  841. onMessage( (RegistrationInstructions&)message, sessionID );
  842. else
  843. if( msgTypeValue == "p" )
  844. onMessage( (RegistrationInstructionsResponse&)message, sessionID );
  845. else
  846. if( msgTypeValue == "q" )
  847. onMessage( (OrderMassCancelRequest&)message, sessionID );
  848. else
  849. if( msgTypeValue == "r" )
  850. onMessage( (OrderMassCancelReport&)message, sessionID );
  851. else
  852. if( msgTypeValue == "s" )
  853. onMessage( (NewOrderCross&)message, sessionID );
  854. else
  855. if( msgTypeValue == "t" )
  856. onMessage( (CrossOrderCancelReplaceRequest&)message, sessionID );
  857. else
  858. if( msgTypeValue == "u" )
  859. onMessage( (CrossOrderCancelRequest&)message, sessionID );
  860. else
  861. if( msgTypeValue == "v" )
  862. onMessage( (SecurityTypeRequest&)message, sessionID );
  863. else
  864. if( msgTypeValue == "w" )
  865. onMessage( (SecurityTypes&)message, sessionID );
  866. else
  867. if( msgTypeValue == "x" )
  868. onMessage( (SecurityListRequest&)message, sessionID );
  869. else
  870. if( msgTypeValue == "y" )
  871. onMessage( (SecurityList&)message, sessionID );
  872. else
  873. if( msgTypeValue == "z" )
  874. onMessage( (DerivativeSecurityListRequest&)message, sessionID );
  875. else
  876. if( msgTypeValue == "AA" )
  877. onMessage( (DerivativeSecurityList&)message, sessionID );
  878. else
  879. if( msgTypeValue == "AB" )
  880. onMessage( (NewOrderMultileg&)message, sessionID );
  881. else
  882. if( msgTypeValue == "AC" )
  883. onMessage( (MultilegOrderCancelReplace&)message, sessionID );
  884. else
  885. if( msgTypeValue == "AD" )
  886. onMessage( (TradeCaptureReportRequest&)message, sessionID );
  887. else
  888. if( msgTypeValue == "AE" )
  889. onMessage( (TradeCaptureReport&)message, sessionID );
  890. else
  891. if( msgTypeValue == "AF" )
  892. onMessage( (OrderMassStatusRequest&)message, sessionID );
  893. else
  894. if( msgTypeValue == "AG" )
  895. onMessage( (QuoteRequestReject&)message, sessionID );
  896. else
  897. if( msgTypeValue == "AH" )
  898. onMessage( (RFQRequest&)message, sessionID );
  899. else
  900. if( msgTypeValue == "AI" )
  901. onMessage( (QuoteStatusReport&)message, sessionID );
  902. else
  903. if( msgTypeValue == "AJ" )
  904. onMessage( (QuoteResponse&)message, sessionID );
  905. else
  906. if( msgTypeValue == "AK" )
  907. onMessage( (Confirmation&)message, sessionID );
  908. else
  909. if( msgTypeValue == "AL" )
  910. onMessage( (PositionMaintenanceRequest&)message, sessionID );
  911. else
  912. if( msgTypeValue == "AM" )
  913. onMessage( (PositionMaintenanceReport&)message, sessionID );
  914. else
  915. if( msgTypeValue == "AN" )
  916. onMessage( (RequestForPositions&)message, sessionID );
  917. else
  918. if( msgTypeValue == "AO" )
  919. onMessage( (RequestForPositionsAck&)message, sessionID );
  920. else
  921. if( msgTypeValue == "AP" )
  922. onMessage( (PositionReport&)message, sessionID );
  923. else
  924. if( msgTypeValue == "AQ" )
  925. onMessage( (TradeCaptureReportRequestAck&)message, sessionID );
  926. else
  927. if( msgTypeValue == "AR" )
  928. onMessage( (TradeCaptureReportAck&)message, sessionID );
  929. else
  930. if( msgTypeValue == "AS" )
  931. onMessage( (AllocationReport&)message, sessionID );
  932. else
  933. if( msgTypeValue == "AT" )
  934. onMessage( (AllocationReportAck&)message, sessionID );
  935. else
  936. if( msgTypeValue == "AU" )
  937. onMessage( (ConfirmationAck&)message, sessionID );
  938. else
  939. if( msgTypeValue == "AV" )
  940. onMessage( (SettlementInstructionRequest&)message, sessionID );
  941. else
  942. if( msgTypeValue == "AW" )
  943. onMessage( (AssignmentReport&)message, sessionID );
  944. else
  945. if( msgTypeValue == "AX" )
  946. onMessage( (CollateralRequest&)message, sessionID );
  947. else
  948. if( msgTypeValue == "AY" )
  949. onMessage( (CollateralAssignment&)message, sessionID );
  950. else
  951. if( msgTypeValue == "AZ" )
  952. onMessage( (CollateralResponse&)message, sessionID );
  953. else
  954. if( msgTypeValue == "BA" )
  955. onMessage( (CollateralReport&)message, sessionID );
  956. else
  957. if( msgTypeValue == "BB" )
  958. onMessage( (CollateralInquiry&)message, sessionID );
  959. else
  960. if( msgTypeValue == "BC" )
  961. onMessage( (NetworkCounterpartySystemStatusRequest&)message, sessionID );
  962. else
  963. if( msgTypeValue == "BD" )
  964. onMessage( (NetworkCounterpartySystemStatusResponse&)message, sessionID );
  965. else
  966. if( msgTypeValue == "BE" )
  967. onMessage( (UserRequest&)message, sessionID );
  968. else
  969. if( msgTypeValue == "BF" )
  970. onMessage( (UserResponse&)message, sessionID );
  971. else
  972. if( msgTypeValue == "BG" )
  973. onMessage( (CollateralInquiryAck&)message, sessionID );
  974. else
  975. if( msgTypeValue == "BH" )
  976. onMessage( (ConfirmationRequest&)message, sessionID );
  977. else onMessage( message, sessionID );
  978. }
  979. };
  980. }
  981. #endif