jspurefix 2.2.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (639) hide show
  1. package/.eslintrc +30 -0
  2. package/README.md +297 -249
  3. package/data/session/test-http-initiator.json +2 -2
  4. package/dist/buffer/ascii/ascii-chars.js.map +1 -1
  5. package/dist/buffer/ascii/ascii-encoder.js +9 -5
  6. package/dist/buffer/ascii/ascii-encoder.js.map +1 -1
  7. package/dist/buffer/ascii/ascii-parser-state.d.ts +2 -2
  8. package/dist/buffer/ascii/ascii-parser-state.js +1 -1
  9. package/dist/buffer/ascii/ascii-parser-state.js.map +1 -1
  10. package/dist/buffer/ascii/ascii-parser.d.ts +2 -2
  11. package/dist/buffer/ascii/ascii-parser.js +17 -11
  12. package/dist/buffer/ascii/ascii-parser.js.map +1 -1
  13. package/dist/buffer/ascii/ascii-segment-parser.d.ts +1 -1
  14. package/dist/buffer/ascii/ascii-segment-parser.js +11 -3
  15. package/dist/buffer/ascii/ascii-segment-parser.js.map +1 -1
  16. package/dist/buffer/ascii/ascii-view.d.ts +3 -3
  17. package/dist/buffer/ascii/ascii-view.js +18 -0
  18. package/dist/buffer/ascii/ascii-view.js.map +1 -1
  19. package/dist/buffer/ascii/itime-formatter.d.ts +12 -12
  20. package/dist/buffer/ascii/itime-formatter.js.map +1 -1
  21. package/dist/buffer/ascii/time-formatter.d.ts +6 -6
  22. package/dist/buffer/ascii/time-formatter.js.map +1 -1
  23. package/dist/buffer/elastic-buffer.d.ts +1 -1
  24. package/dist/buffer/elastic-buffer.js +2 -2
  25. package/dist/buffer/elastic-buffer.js.map +1 -1
  26. package/dist/buffer/encode-proxy.js +1 -1
  27. package/dist/buffer/encode-proxy.js.map +1 -1
  28. package/dist/buffer/encoder-state.d.ts +2 -2
  29. package/dist/buffer/encoder-state.js +4 -1
  30. package/dist/buffer/encoder-state.js.map +1 -1
  31. package/dist/buffer/fixml/fixml-encoder.js +4 -2
  32. package/dist/buffer/fixml/fixml-encoder.js.map +1 -1
  33. package/dist/buffer/fixml/fixml-parser.js +61 -39
  34. package/dist/buffer/fixml/fixml-parser.js.map +1 -1
  35. package/dist/buffer/fixml/fixml-view.js +3 -3
  36. package/dist/buffer/fixml/fixml-view.js.map +1 -1
  37. package/dist/buffer/fixml/populated-attributes.js.map +1 -1
  38. package/dist/buffer/msg-encoder.js +2 -1
  39. package/dist/buffer/msg-encoder.js.map +1 -1
  40. package/dist/buffer/msg-view.d.ts +9 -9
  41. package/dist/buffer/msg-view.js +58 -25
  42. package/dist/buffer/msg-view.js.map +1 -1
  43. package/dist/buffer/segment/segment-description.d.ts +4 -4
  44. package/dist/buffer/segment/segment-description.js +7 -5
  45. package/dist/buffer/segment/segment-description.js.map +1 -1
  46. package/dist/buffer/segment/segment-summary.js +2 -1
  47. package/dist/buffer/segment/segment-summary.js.map +1 -1
  48. package/dist/buffer/structure.d.ts +1 -1
  49. package/dist/buffer/structure.js +1 -2
  50. package/dist/buffer/structure.js.map +1 -1
  51. package/dist/buffer/time-format-template.js.map +1 -1
  52. package/dist/collections/collection.d.ts +3 -7
  53. package/dist/collections/collection.js.map +1 -1
  54. package/dist/collections/dictionary.d.ts +1 -1
  55. package/dist/collections/dictionary.js +2 -1
  56. package/dist/collections/dictionary.js.map +1 -1
  57. package/dist/config/empty-log-factory.js.map +1 -1
  58. package/dist/config/get-js-fx-logger.d.ts +1 -3
  59. package/dist/config/get-js-fx-logger.js.map +1 -1
  60. package/dist/config/js-fix-config.d.ts +3 -3
  61. package/dist/config/js-fix-config.js.map +1 -1
  62. package/dist/config/js-fix-logger.d.ts +5 -5
  63. package/dist/config/js-fix-logger.js.map +1 -1
  64. package/dist/config/js-fix-winston-log-factory.d.ts +1 -1
  65. package/dist/config/js-fix-winston-log-factory.js.map +1 -1
  66. package/dist/config/winston-logger.js +7 -7
  67. package/dist/config/winston-logger.js.map +1 -1
  68. package/dist/dict-parser.js +27 -21
  69. package/dist/dict-parser.js.map +1 -1
  70. package/dist/dictionary/compiler/compiler-settings.js.map +1 -1
  71. package/dist/dictionary/compiler/compiler-type.js.map +1 -1
  72. package/dist/dictionary/compiler/enum-compiler.d.ts +2 -2
  73. package/dist/dictionary/compiler/enum-compiler.js +7 -10
  74. package/dist/dictionary/compiler/enum-compiler.js.map +1 -1
  75. package/dist/dictionary/compiler/msg-compiler.js +9 -10
  76. package/dist/dictionary/compiler/msg-compiler.js.map +1 -1
  77. package/dist/dictionary/compiler/standard-snippet.d.ts +1 -1
  78. package/dist/dictionary/compiler/standard-snippet.js +11 -10
  79. package/dist/dictionary/compiler/standard-snippet.js.map +1 -1
  80. package/dist/dictionary/contained/contained-component-field.d.ts +2 -2
  81. package/dist/dictionary/contained/contained-component-field.js +1 -1
  82. package/dist/dictionary/contained/contained-component-field.js.map +1 -1
  83. package/dist/dictionary/contained/contained-field-dispatcher.d.ts +3 -9
  84. package/dist/dictionary/contained/contained-field-dispatcher.js.map +1 -1
  85. package/dist/dictionary/contained/contained-field-set.d.ts +4 -4
  86. package/dist/dictionary/contained/contained-field-set.js +1 -1
  87. package/dist/dictionary/contained/contained-field-set.js.map +1 -1
  88. package/dist/dictionary/contained/contained-field.d.ts +1 -0
  89. package/dist/dictionary/contained/contained-field.js +3 -0
  90. package/dist/dictionary/contained/contained-field.js.map +1 -1
  91. package/dist/dictionary/contained/contained-group-field.d.ts +2 -2
  92. package/dist/dictionary/contained/contained-group-field.js +1 -1
  93. package/dist/dictionary/contained/contained-group-field.js.map +1 -1
  94. package/dist/dictionary/contained/contained-simple-field.d.ts +2 -2
  95. package/dist/dictionary/contained/contained-simple-field.js +1 -1
  96. package/dist/dictionary/contained/contained-simple-field.js.map +1 -1
  97. package/dist/dictionary/contained/field-dispatcher.d.ts +3 -9
  98. package/dist/dictionary/contained/field-dispatcher.js.map +1 -1
  99. package/dist/dictionary/contained/fields-dispatch.js +0 -1
  100. package/dist/dictionary/contained/fields-dispatch.js.map +1 -1
  101. package/dist/dictionary/definition/component-field-definition.d.ts +3 -3
  102. package/dist/dictionary/definition/component-field-definition.js +1 -1
  103. package/dist/dictionary/definition/component-field-definition.js.map +1 -1
  104. package/dist/dictionary/definition/fix-definitions.d.ts +3 -3
  105. package/dist/dictionary/definition/fix-definitions.js +3 -2
  106. package/dist/dictionary/definition/fix-definitions.js.map +1 -1
  107. package/dist/dictionary/definition/group-field-definition.d.ts +4 -4
  108. package/dist/dictionary/definition/group-field-definition.js +1 -1
  109. package/dist/dictionary/definition/group-field-definition.js.map +1 -1
  110. package/dist/dictionary/definition/message-definition.d.ts +2 -2
  111. package/dist/dictionary/definition/message-definition.js.map +1 -1
  112. package/dist/dictionary/definition/simple-field-definition.d.ts +4 -4
  113. package/dist/dictionary/definition/simple-field-definition.js +3 -2
  114. package/dist/dictionary/definition/simple-field-definition.js.map +1 -1
  115. package/dist/dictionary/dict-primitive.d.ts +1 -1
  116. package/dist/dictionary/dict-primitive.js.map +1 -1
  117. package/dist/dictionary/field-enum.js.map +1 -1
  118. package/dist/dictionary/fix-versions.js.map +1 -1
  119. package/dist/dictionary/parser/fix-repository/repository-xml-parser.js +20 -18
  120. package/dist/dictionary/parser/fix-repository/repository-xml-parser.js.map +1 -1
  121. package/dist/dictionary/parser/fix-repository/repository.js +24 -16
  122. package/dist/dictionary/parser/fix-repository/repository.js.map +1 -1
  123. package/dist/dictionary/parser/fixml/components-parser.d.ts +1 -1
  124. package/dist/dictionary/parser/fixml/components-parser.js +24 -15
  125. package/dist/dictionary/parser/fixml/components-parser.js.map +1 -1
  126. package/dist/dictionary/parser/fixml/fields-parser.d.ts +1 -1
  127. package/dist/dictionary/parser/fixml/fields-parser.js +5 -5
  128. package/dist/dictionary/parser/fixml/fields-parser.js.map +1 -1
  129. package/dist/dictionary/parser/fixml/fix-xsd-parser.js +3 -2
  130. package/dist/dictionary/parser/fixml/fix-xsd-parser.js.map +1 -1
  131. package/dist/dictionary/parser/fixml/include-graph.d.ts +1 -1
  132. package/dist/dictionary/parser/fixml/include-graph.js +58 -48
  133. package/dist/dictionary/parser/fixml/include-graph.js.map +1 -1
  134. package/dist/dictionary/parser/fixml/xsd-parser.d.ts +1 -1
  135. package/dist/dictionary/parser/fixml/xsd-parser.js +34 -23
  136. package/dist/dictionary/parser/fixml/xsd-parser.js.map +1 -1
  137. package/dist/dictionary/parser/quickfix/field-definition-parser.js +0 -2
  138. package/dist/dictionary/parser/quickfix/field-definition-parser.js.map +1 -1
  139. package/dist/dictionary/parser/quickfix/field-set-parser.js +3 -2
  140. package/dist/dictionary/parser/quickfix/field-set-parser.js.map +1 -1
  141. package/dist/dictionary/parser/quickfix/message-parser.js +10 -5
  142. package/dist/dictionary/parser/quickfix/message-parser.js.map +1 -1
  143. package/dist/dictionary/parser/quickfix/node-parser.js +14 -8
  144. package/dist/dictionary/parser/quickfix/node-parser.js.map +1 -1
  145. package/dist/dictionary/parser/quickfix/parse-context.d.ts +5 -5
  146. package/dist/dictionary/parser/quickfix/parse-context.js.map +1 -1
  147. package/dist/dictionary/parser/quickfix/quick-fix-xml-file-parser.js +22 -19
  148. package/dist/dictionary/parser/quickfix/quick-fix-xml-file-parser.js.map +1 -1
  149. package/dist/dictionary/set-reduce.js.map +1 -1
  150. package/dist/dictionary/type-dispatcher.d.ts +3 -9
  151. package/dist/dictionary/type-dispatcher.js.map +1 -1
  152. package/dist/dictionary/version-util.js +8 -8
  153. package/dist/dictionary/version-util.js.map +1 -1
  154. package/dist/jsfix-cmd.d.ts +3 -1
  155. package/dist/jsfix-cmd.js +134 -99
  156. package/dist/jsfix-cmd.js.map +1 -1
  157. package/dist/runtime/make-config.js +34 -14
  158. package/dist/runtime/make-config.js.map +1 -1
  159. package/dist/runtime/session-container.d.ts +3 -2
  160. package/dist/runtime/session-container.js +36 -16
  161. package/dist/runtime/session-container.js.map +1 -1
  162. package/dist/runtime/session-launcher.d.ts +10 -6
  163. package/dist/runtime/session-launcher.js +80 -43
  164. package/dist/runtime/session-launcher.js.map +1 -1
  165. package/dist/sample/http/oms/app.js +37 -7
  166. package/dist/sample/http/oms/app.js.map +1 -1
  167. package/dist/sample/http/oms/http-client.js +4 -2
  168. package/dist/sample/http/oms/http-client.js.map +1 -1
  169. package/dist/sample/http/oms/http-server.js +7 -1
  170. package/dist/sample/http/oms/http-server.js.map +1 -1
  171. package/dist/sample/http/oms/oms-factory.js +4 -3
  172. package/dist/sample/http/oms/oms-factory.js.map +1 -1
  173. package/dist/sample/tcp/qf-md/app.js +3 -3
  174. package/dist/sample/tcp/qf-md/app.js.map +1 -1
  175. package/dist/sample/tcp/qf-md/md-client.js +2 -1
  176. package/dist/sample/tcp/qf-md/md-client.js.map +1 -1
  177. package/dist/sample/tcp/qf-md/md-factory.js.map +1 -1
  178. package/dist/sample/tcp/qf-md/md-server.d.ts +1 -1
  179. package/dist/sample/tcp/qf-md/md-server.js +2 -1
  180. package/dist/sample/tcp/qf-md/md-server.js.map +1 -1
  181. package/dist/sample/tcp/recovering-skeleton/app.js +29 -16
  182. package/dist/sample/tcp/recovering-skeleton/app.js.map +1 -1
  183. package/dist/sample/tcp/recovering-skeleton/respawn-acceptor.d.ts +9 -1
  184. package/dist/sample/tcp/recovering-skeleton/respawn-acceptor.js +51 -2
  185. package/dist/sample/tcp/recovering-skeleton/respawn-acceptor.js.map +1 -1
  186. package/dist/sample/tcp/recovering-skeleton/skeleton-client.js +2 -1
  187. package/dist/sample/tcp/recovering-skeleton/skeleton-client.js.map +1 -1
  188. package/dist/sample/tcp/recovering-skeleton/skeleton-server.js +4 -3
  189. package/dist/sample/tcp/recovering-skeleton/skeleton-server.js.map +1 -1
  190. package/dist/sample/tcp/skeleton/app.js.map +1 -1
  191. package/dist/sample/tcp/skeleton/skeleton-session.js +7 -4
  192. package/dist/sample/tcp/skeleton/skeleton-session.js.map +1 -1
  193. package/dist/sample/tcp/tls-trade-capture/app.js.map +1 -1
  194. package/dist/sample/tcp/trade-capture/app-launcher.js +3 -3
  195. package/dist/sample/tcp/trade-capture/app-launcher.js.map +1 -1
  196. package/dist/sample/tcp/trade-capture/trade-capture-client.d.ts +1 -1
  197. package/dist/sample/tcp/trade-capture/trade-capture-client.js +2 -1
  198. package/dist/sample/tcp/trade-capture/trade-capture-client.js.map +1 -1
  199. package/dist/sample/tcp/trade-capture/trade-capture-server.js +7 -2
  200. package/dist/sample/tcp/trade-capture/trade-capture-server.js.map +1 -1
  201. package/dist/sample/tcp/trade-capture/trade-factory.js.map +1 -1
  202. package/dist/store/fix-msg-ascii-store-resend.js +18 -7
  203. package/dist/store/fix-msg-ascii-store-resend.js.map +1 -1
  204. package/dist/store/fix-msg-memory-store.d.ts +3 -3
  205. package/dist/store/fix-msg-memory-store.js +93 -69
  206. package/dist/store/fix-msg-memory-store.js.map +1 -1
  207. package/dist/store/fix-msg-store-record.d.ts +6 -6
  208. package/dist/store/fix-msg-store-record.js +2 -1
  209. package/dist/store/fix-msg-store-record.js.map +1 -1
  210. package/dist/store/fix-msg-store-state.js.map +1 -1
  211. package/dist/store/fix-msg-store.d.ts +7 -7
  212. package/dist/store/fix-msg-store.js.map +1 -1
  213. package/dist/test/ascii/ascii-encoder.test.js +93 -63
  214. package/dist/test/ascii/ascii-encoder.test.js.map +1 -1
  215. package/dist/test/ascii/ascii-parser.test.js +28 -24
  216. package/dist/test/ascii/ascii-parser.test.js.map +1 -1
  217. package/dist/test/ascii/ascii-segment.test.js +16 -11
  218. package/dist/test/ascii/ascii-segment.test.js.map +1 -1
  219. package/dist/test/ascii/ascii-store-replay.test.js +1 -1
  220. package/dist/test/ascii/ascii-store-replay.test.js.map +1 -1
  221. package/dist/test/ascii/ascii-tag-pos.test.js +7 -3
  222. package/dist/test/ascii/ascii-tag-pos.test.js.map +1 -1
  223. package/dist/test/ascii/execution-report.test.js +80 -72
  224. package/dist/test/ascii/execution-report.test.js.map +1 -1
  225. package/dist/test/ascii/fix-log-replay.test.js +1 -1
  226. package/dist/test/ascii/fix-log-replay.test.js.map +1 -1
  227. package/dist/test/ascii/fix-repo-dict.test.js +58 -55
  228. package/dist/test/ascii/fix-repo-dict.test.js.map +1 -1
  229. package/dist/test/ascii/includes.test.js +1 -1
  230. package/dist/test/ascii/includes.test.js.map +1 -1
  231. package/dist/test/ascii/logon.test.js +3 -3
  232. package/dist/test/ascii/logon.test.js.map +1 -1
  233. package/dist/test/ascii/memory-store.test.js +3 -3
  234. package/dist/test/ascii/memory-store.test.js.map +1 -1
  235. package/dist/test/ascii/qf-full-msg.test.js +19 -16
  236. package/dist/test/ascii/qf-full-msg.test.js.map +1 -1
  237. package/dist/test/ascii/repo-full-ascii-msg.test.js +11 -11
  238. package/dist/test/ascii/repo-full-ascii-msg.test.js.map +1 -1
  239. package/dist/test/ascii/session-state.test.js.map +1 -1
  240. package/dist/test/ascii/session.test.js +59 -42
  241. package/dist/test/ascii/session.test.js.map +1 -1
  242. package/dist/test/ascii/view-decode.test.js +30 -22
  243. package/dist/test/ascii/view-decode.test.js.map +1 -1
  244. package/dist/test/encode-proxy.test.js +29 -29
  245. package/dist/test/encode-proxy.test.js.map +1 -1
  246. package/dist/test/env/experiment.js +5 -5
  247. package/dist/test/env/experiment.js.map +1 -1
  248. package/dist/test/env/parsing-result.d.ts +3 -3
  249. package/dist/test/env/parsing-result.js.map +1 -1
  250. package/dist/test/env/setup.d.ts +2 -2
  251. package/dist/test/env/setup.js +13 -11
  252. package/dist/test/env/setup.js.map +1 -1
  253. package/dist/test/env/skeleton-runner.d.ts +1 -1
  254. package/dist/test/env/skeleton-runner.js +16 -16
  255. package/dist/test/env/skeleton-runner.js.map +1 -1
  256. package/dist/test/env/test-recovery.d.ts +3 -3
  257. package/dist/test/env/test-recovery.js +1 -1
  258. package/dist/test/env/test-recovery.js.map +1 -1
  259. package/dist/test/env/to-views.d.ts +1 -1
  260. package/dist/test/env/to-views.js +2 -2
  261. package/dist/test/env/to-views.js.map +1 -1
  262. package/dist/test/fixml/fixml-alloc-parse.test.js +32 -15
  263. package/dist/test/fixml/fixml-alloc-parse.test.js.map +1 -1
  264. package/dist/test/fixml/fixml-mkt-data-fut-parse.test.js +2 -2
  265. package/dist/test/fixml/fixml-mkt-data-fut-parse.test.js.map +1 -1
  266. package/dist/test/fixml/fixml-mkt-data-settle-parse.test.js +2 -1
  267. package/dist/test/fixml/fixml-mkt-data-settle-parse.test.js.map +1 -1
  268. package/dist/test/fixml/fixml-tc-bi-lateral-parse.test.js +19 -12
  269. package/dist/test/fixml/fixml-tc-bi-lateral-parse.test.js.map +1 -1
  270. package/dist/test/fixml/repo-full-fixml-msg.test.js +2 -2
  271. package/dist/test/fixml/repo-full-fixml-msg.test.js.map +1 -1
  272. package/dist/transport/ascii/ascii-msg-transmitter.d.ts +1 -1
  273. package/dist/transport/ascii/ascii-msg-transmitter.js +18 -8
  274. package/dist/transport/ascii/ascii-msg-transmitter.js.map +1 -1
  275. package/dist/transport/ascii/ascii-session-msg-factory.d.ts +3 -3
  276. package/dist/transport/ascii/ascii-session-msg-factory.js +4 -2
  277. package/dist/transport/ascii/ascii-session-msg-factory.js.map +1 -1
  278. package/dist/transport/ascii/ascii-session.d.ts +1 -1
  279. package/dist/transport/ascii/ascii-session.js +34 -16
  280. package/dist/transport/ascii/ascii-session.js.map +1 -1
  281. package/dist/transport/duplex/http-duplex.js +10 -8
  282. package/dist/transport/duplex/http-duplex.js.map +1 -1
  283. package/dist/transport/duplex/string-duplex.js +2 -2
  284. package/dist/transport/duplex/string-duplex.js.map +1 -1
  285. package/dist/transport/factory/msg-transport.js +21 -10
  286. package/dist/transport/factory/msg-transport.js.map +1 -1
  287. package/dist/transport/fix-acceptor.d.ts +3 -3
  288. package/dist/transport/fix-acceptor.js.map +1 -1
  289. package/dist/transport/fix-entity.d.ts +1 -1
  290. package/dist/transport/fix-entity.js.map +1 -1
  291. package/dist/transport/fix-initiator.d.ts +2 -2
  292. package/dist/transport/fix-initiator.js.map +1 -1
  293. package/dist/transport/fixml/fixml-msg-transmitter.d.ts +1 -1
  294. package/dist/transport/fixml/fixml-msg-transmitter.js +4 -2
  295. package/dist/transport/fixml/fixml-msg-transmitter.js.map +1 -1
  296. package/dist/transport/fixml/fixml-session-msg-factory.d.ts +1 -1
  297. package/dist/transport/fixml/fixml-session-msg-factory.js.map +1 -1
  298. package/dist/transport/fixml/fixml-session.js +7 -3
  299. package/dist/transport/fixml/fixml-session.js.map +1 -1
  300. package/dist/transport/http/html-options.d.ts +2 -2
  301. package/dist/transport/http/html-options.js.map +1 -1
  302. package/dist/transport/http/html-route.js.map +1 -1
  303. package/dist/transport/http/http-acceptor-listener.js +27 -23
  304. package/dist/transport/http/http-acceptor-listener.js.map +1 -1
  305. package/dist/transport/http/http-acceptor.d.ts +2 -2
  306. package/dist/transport/http/http-acceptor.js +52 -41
  307. package/dist/transport/http/http-acceptor.js.map +1 -1
  308. package/dist/transport/http/http-adapter.d.ts +3 -3
  309. package/dist/transport/http/http-adapter.js.map +1 -1
  310. package/dist/transport/http/http-initiator.js +35 -23
  311. package/dist/transport/http/http-initiator.js.map +1 -1
  312. package/dist/transport/http/http-json-sample-adapter.d.ts +4 -4
  313. package/dist/transport/http/http-json-sample-adapter.js +16 -11
  314. package/dist/transport/http/http-json-sample-adapter.js.map +1 -1
  315. package/dist/transport/http/http-transaction.js.map +1 -1
  316. package/dist/transport/http/http-transport-description.js.map +1 -1
  317. package/dist/transport/msg-application.js.map +1 -1
  318. package/dist/transport/msg-transmitter.d.ts +1 -1
  319. package/dist/transport/msg-transmitter.js +2 -2
  320. package/dist/transport/msg-transmitter.js.map +1 -1
  321. package/dist/transport/session/a-session-msg-factory.d.ts +3 -5
  322. package/dist/transport/session/a-session-msg-factory.js.map +1 -1
  323. package/dist/transport/session/fix-session-state.d.ts +8 -5
  324. package/dist/transport/session/fix-session-state.js +21 -16
  325. package/dist/transport/session/fix-session-state.js.map +1 -1
  326. package/dist/transport/session/fix-session.d.ts +19 -6
  327. package/dist/transport/session/fix-session.js +197 -110
  328. package/dist/transport/session/fix-session.js.map +1 -1
  329. package/dist/transport/session/make-fix-session.d.ts +1 -3
  330. package/dist/transport/session/make-fix-session.js.map +1 -1
  331. package/dist/transport/session/session-description.d.ts +1 -1
  332. package/dist/transport/session/session-description.js.map +1 -1
  333. package/dist/transport/session/session-msg-factory.d.ts +9 -9
  334. package/dist/transport/session/session-msg-factory.js.map +1 -1
  335. package/dist/transport/tcp/recovering-tcp-initiator.d.ts +4 -2
  336. package/dist/transport/tcp/recovering-tcp-initiator.js +62 -30
  337. package/dist/transport/tcp/recovering-tcp-initiator.js.map +1 -1
  338. package/dist/transport/tcp/tcp-acceptor-listener.js +28 -25
  339. package/dist/transport/tcp/tcp-acceptor-listener.js.map +1 -1
  340. package/dist/transport/tcp/tcp-acceptor.d.ts +2 -2
  341. package/dist/transport/tcp/tcp-acceptor.js +23 -15
  342. package/dist/transport/tcp/tcp-acceptor.js.map +1 -1
  343. package/dist/transport/tcp/tcp-initiator-connector.js +39 -30
  344. package/dist/transport/tcp/tcp-initiator-connector.js.map +1 -1
  345. package/dist/transport/tcp/tcp-initiator.d.ts +1 -1
  346. package/dist/transport/tcp/tcp-initiator.js +130 -104
  347. package/dist/transport/tcp/tcp-initiator.js.map +1 -1
  348. package/dist/transport/tcp/tcp-transport-description.js.map +1 -1
  349. package/dist/transport/tcp/tls-options-factory.d.ts +3 -3
  350. package/dist/transport/tcp/tls-options-factory.js +10 -3
  351. package/dist/transport/tcp/tls-options-factory.js.map +1 -1
  352. package/dist/transport/tcp/tls-options.d.ts +6 -2
  353. package/dist/transport/tcp/tls-options.js.map +1 -1
  354. package/dist/util/json-helper.js +2 -1
  355. package/dist/util/json-helper.js.map +1 -1
  356. package/dist/util/message-generator.d.ts +1 -1
  357. package/dist/util/message-generator.js +1 -1
  358. package/dist/util/message-generator.js.map +1 -1
  359. package/package.json +53 -48
  360. package/src/buffer/ascii/ascii-chars.ts +0 -1
  361. package/src/buffer/ascii/ascii-encoder.ts +18 -16
  362. package/src/buffer/ascii/ascii-parser-state.ts +4 -4
  363. package/src/buffer/ascii/ascii-parser.ts +16 -13
  364. package/src/buffer/ascii/ascii-segment-parser.ts +16 -15
  365. package/src/buffer/ascii/ascii-view.ts +22 -14
  366. package/src/buffer/ascii/itime-formatter.ts +12 -12
  367. package/src/buffer/ascii/time-formatter.ts +11 -12
  368. package/src/buffer/elastic-buffer.ts +5 -6
  369. package/src/buffer/encode-proxy.ts +6 -5
  370. package/src/buffer/encoder-state.ts +7 -3
  371. package/src/buffer/fixml/fixml-encoder.ts +10 -10
  372. package/src/buffer/fixml/fixml-parser.ts +80 -60
  373. package/src/buffer/fixml/fixml-view.ts +6 -7
  374. package/src/buffer/fixml/populated-attributes.ts +1 -1
  375. package/src/buffer/msg-encoder.ts +2 -1
  376. package/src/buffer/msg-view.ts +73 -53
  377. package/src/buffer/segment/segment-description.ts +13 -13
  378. package/src/buffer/segment/segment-summary.ts +3 -2
  379. package/src/buffer/structure.ts +6 -6
  380. package/src/buffer/time-format-template.ts +1 -1
  381. package/src/collections/collection.ts +2 -6
  382. package/src/collections/dictionary.ts +4 -5
  383. package/src/config/empty-log-factory.ts +1 -0
  384. package/src/config/get-js-fx-logger.ts +1 -2
  385. package/src/config/js-fix-config.ts +6 -6
  386. package/src/config/js-fix-logger.ts +14 -9
  387. package/src/config/js-fix-winston-log-factory.ts +2 -1
  388. package/src/config/winston-logger.ts +9 -7
  389. package/src/dictionary/compiler/compiler-settings.ts +5 -5
  390. package/src/dictionary/compiler/compiler-type.ts +1 -1
  391. package/src/dictionary/compiler/enum-compiler.ts +14 -16
  392. package/src/dictionary/compiler/msg-compiler.ts +15 -17
  393. package/src/dictionary/compiler/standard-snippet.ts +28 -27
  394. package/src/dictionary/contained/contained-component-field.ts +5 -4
  395. package/src/dictionary/contained/contained-field-dispatcher.ts +3 -3
  396. package/src/dictionary/contained/contained-field-set.ts +21 -21
  397. package/src/dictionary/contained/contained-field.ts +4 -1
  398. package/src/dictionary/contained/contained-group-field.ts +4 -4
  399. package/src/dictionary/contained/contained-simple-field.ts +5 -5
  400. package/src/dictionary/contained/field-dispatcher.ts +3 -3
  401. package/src/dictionary/contained/fields-dispatch.ts +0 -1
  402. package/src/dictionary/definition/component-field-definition.ts +4 -4
  403. package/src/dictionary/definition/fix-definitions.ts +8 -8
  404. package/src/dictionary/definition/group-field-definition.ts +5 -5
  405. package/src/dictionary/definition/message-definition.ts +4 -4
  406. package/src/dictionary/definition/simple-field-definition.ts +9 -9
  407. package/src/dictionary/dict-primitive.ts +2 -2
  408. package/src/dictionary/field-enum.ts +3 -2
  409. package/src/dictionary/fix-versions.ts +10 -10
  410. package/src/dictionary/parser/fix-repository/repository-xml-parser.ts +7 -8
  411. package/src/dictionary/parser/fix-repository/repository.ts +38 -30
  412. package/src/dictionary/parser/fixml/components-parser.ts +57 -51
  413. package/src/dictionary/parser/fixml/fields-parser.ts +9 -10
  414. package/src/dictionary/parser/fixml/fix-xsd-parser.ts +2 -3
  415. package/src/dictionary/parser/fixml/include-graph.ts +26 -21
  416. package/src/dictionary/parser/fixml/xsd-parser.ts +5 -5
  417. package/src/dictionary/parser/quickfix/field-definition-parser.ts +3 -5
  418. package/src/dictionary/parser/quickfix/field-set-parser.ts +2 -2
  419. package/src/dictionary/parser/quickfix/message-parser.ts +9 -6
  420. package/src/dictionary/parser/quickfix/node-parser.ts +20 -18
  421. package/src/dictionary/parser/quickfix/parse-context.ts +4 -4
  422. package/src/dictionary/parser/quickfix/quick-fix-xml-file-parser.ts +13 -15
  423. package/src/dictionary/set-reduce.ts +4 -3
  424. package/src/dictionary/type-dispatcher.ts +3 -3
  425. package/src/dictionary/version-util.ts +8 -8
  426. package/src/jsfix-cmd.ts +82 -58
  427. package/src/runtime/make-config.ts +15 -10
  428. package/src/runtime/session-container.ts +26 -18
  429. package/src/runtime/session-launcher.ts +58 -30
  430. package/src/sample/http/oms/app.ts +24 -7
  431. package/src/sample/http/oms/http-client.ts +3 -3
  432. package/src/sample/http/oms/http-server.ts +7 -1
  433. package/src/sample/http/oms/oms-factory.ts +3 -3
  434. package/src/sample/tcp/qf-md/app.ts +3 -3
  435. package/src/sample/tcp/qf-md/md-client.ts +1 -1
  436. package/src/sample/tcp/qf-md/md-factory.ts +3 -2
  437. package/src/sample/tcp/qf-md/md-server.ts +2 -2
  438. package/src/sample/tcp/recovering-skeleton/app.ts +37 -20
  439. package/src/sample/tcp/recovering-skeleton/respawn-acceptor.ts +66 -4
  440. package/src/sample/tcp/recovering-skeleton/skeleton-client.ts +2 -2
  441. package/src/sample/tcp/recovering-skeleton/skeleton-server.ts +4 -4
  442. package/src/sample/tcp/skeleton/app.ts +1 -1
  443. package/src/sample/tcp/skeleton/skeleton-session.ts +7 -7
  444. package/src/sample/tcp/tls-trade-capture/app.ts +1 -1
  445. package/src/sample/tcp/trade-capture/app-launcher.ts +4 -4
  446. package/src/sample/tcp/trade-capture/trade-capture-client.ts +7 -5
  447. package/src/sample/tcp/trade-capture/trade-capture-server.ts +10 -5
  448. package/src/sample/tcp/trade-capture/trade-factory.ts +1 -1
  449. package/src/store/fix-msg-ascii-store-resend.ts +5 -6
  450. package/src/store/fix-msg-memory-store.ts +22 -21
  451. package/src/store/fix-msg-store-record.ts +8 -8
  452. package/src/store/fix-msg-store-state.ts +2 -2
  453. package/src/store/fix-msg-store.ts +7 -7
  454. package/src/transport/ascii/ascii-msg-transmitter.ts +20 -14
  455. package/src/transport/ascii/ascii-session-msg-factory.ts +5 -6
  456. package/src/transport/ascii/ascii-session.ts +40 -29
  457. package/src/transport/duplex/http-duplex.ts +11 -9
  458. package/src/transport/duplex/string-duplex.ts +4 -5
  459. package/src/transport/factory/msg-transport.ts +5 -6
  460. package/src/transport/fix-acceptor.ts +2 -2
  461. package/src/transport/fix-entity.ts +1 -1
  462. package/src/transport/fix-initiator.ts +1 -1
  463. package/src/transport/fixml/fixml-msg-transmitter.ts +4 -3
  464. package/src/transport/fixml/fixml-session-msg-factory.ts +1 -2
  465. package/src/transport/fixml/fixml-session.ts +7 -6
  466. package/src/transport/http/html-options.ts +5 -5
  467. package/src/transport/http/html-route.ts +1 -1
  468. package/src/transport/http/http-acceptor-listener.ts +6 -4
  469. package/src/transport/http/http-acceptor.ts +36 -34
  470. package/src/transport/http/http-adapter.ts +3 -3
  471. package/src/transport/http/http-initiator.ts +22 -16
  472. package/src/transport/http/http-json-sample-adapter.ts +17 -16
  473. package/src/transport/http/http-transaction.ts +1 -1
  474. package/src/transport/http/http-transport-description.ts +1 -1
  475. package/src/transport/msg-application.ts +4 -4
  476. package/src/transport/msg-transmitter.ts +5 -5
  477. package/src/transport/session/a-session-msg-factory.ts +2 -3
  478. package/src/transport/session/fix-session-state.ts +24 -18
  479. package/src/transport/session/fix-session.ts +169 -96
  480. package/src/transport/session/make-fix-session.ts +1 -2
  481. package/src/transport/session/session-description.ts +2 -2
  482. package/src/transport/session/session-msg-factory.ts +9 -9
  483. package/src/transport/tcp/recovering-tcp-initiator.ts +39 -21
  484. package/src/transport/tcp/tcp-acceptor-listener.ts +4 -3
  485. package/src/transport/tcp/tcp-acceptor.ts +23 -22
  486. package/src/transport/tcp/tcp-initiator-connector.ts +16 -10
  487. package/src/transport/tcp/tcp-initiator.ts +57 -46
  488. package/src/transport/tcp/tcp-transport-description.ts +1 -1
  489. package/src/transport/tcp/tls-options-factory.ts +21 -8
  490. package/src/transport/tcp/tls-options.ts +11 -7
  491. package/src/util/json-helper.ts +6 -5
  492. package/src/util/message-generator.ts +6 -7
  493. package/tsconfig.json +2 -0
  494. package/.eslintrc.js +0 -6
  495. package/dist/buffer/ascii-chars.d.ts +0 -22
  496. package/dist/buffer/ascii-chars.js +0 -29
  497. package/dist/buffer/ascii-chars.js.map +0 -1
  498. package/dist/buffer/segment-description.d.ts +0 -33
  499. package/dist/buffer/segment-description.js +0 -80
  500. package/dist/buffer/segment-description.js.map +0 -1
  501. package/dist/buffer/segment-summary.d.ts +0 -13
  502. package/dist/buffer/segment-summary.js +0 -20
  503. package/dist/buffer/segment-summary.js.map +0 -1
  504. package/dist/buffer/tag-pos.d.ts +0 -12
  505. package/dist/buffer/tag-pos.js +0 -55
  506. package/dist/buffer/tag-pos.js.map +0 -1
  507. package/dist/buffer/tags.d.ts +0 -32
  508. package/dist/buffer/tags.js +0 -135
  509. package/dist/buffer/tags.js.map +0 -1
  510. package/dist/dictionary/fields-dispatch.d.ts +0 -13
  511. package/dist/dictionary/fields-dispatch.js +0 -40
  512. package/dist/dictionary/fields-dispatch.js.map +0 -1
  513. package/dist/sample/launcher.d.ts +0 -12
  514. package/dist/sample/launcher.js +0 -63
  515. package/dist/sample/launcher.js.map +0 -1
  516. package/dist/test/ascii-encoder.test.d.ts +0 -1
  517. package/dist/test/ascii-encoder.test.js +0 -529
  518. package/dist/test/ascii-encoder.test.js.map +0 -1
  519. package/dist/test/ascii-parser.test.d.ts +0 -1
  520. package/dist/test/ascii-parser.test.js +0 -142
  521. package/dist/test/ascii-parser.test.js.map +0 -1
  522. package/dist/test/ascii-segment.test.d.ts +0 -1
  523. package/dist/test/ascii-segment.test.js +0 -107
  524. package/dist/test/ascii-segment.test.js.map +0 -1
  525. package/dist/test/ascii-store-replay.test.d.ts +0 -1
  526. package/dist/test/ascii-store-replay.test.js +0 -121
  527. package/dist/test/ascii-store-replay.test.js.map +0 -1
  528. package/dist/test/ascii-tag-pos.test.d.ts +0 -1
  529. package/dist/test/ascii-tag-pos.test.js +0 -105
  530. package/dist/test/ascii-tag-pos.test.js.map +0 -1
  531. package/dist/test/execution-report.test.d.ts +0 -1
  532. package/dist/test/execution-report.test.js +0 -490
  533. package/dist/test/execution-report.test.js.map +0 -1
  534. package/dist/test/fix-log-replay.test.d.ts +0 -1
  535. package/dist/test/fix-log-replay.test.js +0 -45
  536. package/dist/test/fix-log-replay.test.js.map +0 -1
  537. package/dist/test/fix-repo-dict.test.d.ts +0 -1
  538. package/dist/test/fix-repo-dict.test.js +0 -127
  539. package/dist/test/fix-repo-dict.test.js.map +0 -1
  540. package/dist/test/fixml-alloc-parse.test.d.ts +0 -1
  541. package/dist/test/fixml-alloc-parse.test.js +0 -160
  542. package/dist/test/fixml-alloc-parse.test.js.map +0 -1
  543. package/dist/test/fixml-mkt-data-fut-parse.test.d.ts +0 -1
  544. package/dist/test/fixml-mkt-data-fut-parse.test.js +0 -60
  545. package/dist/test/fixml-mkt-data-fut-parse.test.js.map +0 -1
  546. package/dist/test/fixml-mkt-data-settle-parse.test.d.ts +0 -1
  547. package/dist/test/fixml-mkt-data-settle-parse.test.js +0 -33
  548. package/dist/test/fixml-mkt-data-settle-parse.test.js.map +0 -1
  549. package/dist/test/fixml-tc-bi-lateral-parse.test.d.ts +0 -1
  550. package/dist/test/fixml-tc-bi-lateral-parse.test.js +0 -96
  551. package/dist/test/fixml-tc-bi-lateral-parse.test.js.map +0 -1
  552. package/dist/test/includes.test.d.ts +0 -1
  553. package/dist/test/includes.test.js +0 -42
  554. package/dist/test/includes.test.js.map +0 -1
  555. package/dist/test/logon.test.d.ts +0 -1
  556. package/dist/test/logon.test.js +0 -93
  557. package/dist/test/logon.test.js.map +0 -1
  558. package/dist/test/memory-store.test.d.ts +0 -1
  559. package/dist/test/memory-store.test.js +0 -75
  560. package/dist/test/memory-store.test.js.map +0 -1
  561. package/dist/test/qf-full-msg.test.d.ts +0 -1
  562. package/dist/test/qf-full-msg.test.js +0 -76
  563. package/dist/test/qf-full-msg.test.js.map +0 -1
  564. package/dist/test/repo-full-ascii-msg.test.d.ts +0 -1
  565. package/dist/test/repo-full-ascii-msg.test.js +0 -82
  566. package/dist/test/repo-full-ascii-msg.test.js.map +0 -1
  567. package/dist/test/repo-full-fixml-msg.test.d.ts +0 -1
  568. package/dist/test/repo-full-fixml-msg.test.js +0 -136
  569. package/dist/test/repo-full-fixml-msg.test.js.map +0 -1
  570. package/dist/test/session-state.test.d.ts +0 -1
  571. package/dist/test/session-state.test.js +0 -74
  572. package/dist/test/session-state.test.js.map +0 -1
  573. package/dist/test/session.test.d.ts +0 -1
  574. package/dist/test/session.test.js +0 -412
  575. package/dist/test/session.test.js.map +0 -1
  576. package/dist/test/time-formatter.test.d.ts +0 -1
  577. package/dist/test/time-formatter.test.js +0 -78
  578. package/dist/test/time-formatter.test.js.map +0 -1
  579. package/dist/test/to-views.d.ts +0 -11
  580. package/dist/test/to-views.js +0 -55
  581. package/dist/test/to-views.js.map +0 -1
  582. package/dist/test/view-decode.test.d.ts +0 -1
  583. package/dist/test/view-decode.test.js +0 -208
  584. package/dist/test/view-decode.test.js.map +0 -1
  585. package/dist/transport/a-session-msg-factory.d.ts +0 -23
  586. package/dist/transport/a-session-msg-factory.js +0 -58
  587. package/dist/transport/a-session-msg-factory.js.map +0 -1
  588. package/dist/transport/ascii-session-msg-factory.d.ts +0 -16
  589. package/dist/transport/ascii-session-msg-factory.js +0 -47
  590. package/dist/transport/ascii-session-msg-factory.js.map +0 -1
  591. package/dist/transport/fix-msg-factory.d.ts +0 -15
  592. package/dist/transport/fix-msg-factory.js +0 -3
  593. package/dist/transport/fix-msg-factory.js.map +0 -1
  594. package/dist/transport/fix-session-state-args.d.ts +0 -8
  595. package/dist/transport/fix-session-state-args.js +0 -3
  596. package/dist/transport/fix-session-state-args.js.map +0 -1
  597. package/dist/transport/fix-session-state.d.ts +0 -32
  598. package/dist/transport/fix-session-state.js +0 -133
  599. package/dist/transport/fix-session-state.js.map +0 -1
  600. package/dist/transport/fix-session.d.ts +0 -50
  601. package/dist/transport/fix-session.js +0 -290
  602. package/dist/transport/fix-session.js.map +0 -1
  603. package/dist/transport/fixml/acceptor.d.ts +0 -3
  604. package/dist/transport/fixml/acceptor.js +0 -38
  605. package/dist/transport/fixml/acceptor.js.map +0 -1
  606. package/dist/transport/fixml-session-msg-factory.d.ts +0 -13
  607. package/dist/transport/fixml-session-msg-factory.js +0 -68
  608. package/dist/transport/fixml-session-msg-factory.js.map +0 -1
  609. package/dist/transport/make-config.d.ts +0 -4
  610. package/dist/transport/make-config.js +0 -31
  611. package/dist/transport/make-config.js.map +0 -1
  612. package/dist/transport/make-fix-session.d.ts +0 -5
  613. package/dist/transport/make-fix-session.js +0 -3
  614. package/dist/transport/make-fix-session.js.map +0 -1
  615. package/dist/transport/make-fixl-session.d.ts +0 -5
  616. package/dist/transport/make-fixl-session.js +0 -3
  617. package/dist/transport/make-fixl-session.js.map +0 -1
  618. package/dist/transport/msg-transport.d.ts +0 -14
  619. package/dist/transport/msg-transport.js +0 -57
  620. package/dist/transport/msg-transport.js.map +0 -1
  621. package/dist/transport/session-description.d.ts +0 -64
  622. package/dist/transport/session-description.js +0 -3
  623. package/dist/transport/session-description.js.map +0 -1
  624. package/dist/transport/session-msg-factory.d.ts +0 -6
  625. package/dist/transport/session-msg-factory.js +0 -13
  626. package/dist/transport/session-msg-factory.js.map +0 -1
  627. package/dist/transport/session-state.d.ts +0 -25
  628. package/dist/transport/session-state.js +0 -30
  629. package/dist/transport/session-state.js.map +0 -1
  630. package/dist/transport/tcp/acceptor.d.ts +0 -3
  631. package/dist/transport/tcp/acceptor.js +0 -40
  632. package/dist/transport/tcp/acceptor.js.map +0 -1
  633. package/dist/transport/tcp/initiator.d.ts +0 -3
  634. package/dist/transport/tcp/initiator.js +0 -67
  635. package/dist/transport/tcp/initiator.js.map +0 -1
  636. package/dist/util/dictionary-definitions.d.ts +0 -8
  637. package/dist/util/dictionary-definitions.js +0 -51
  638. package/dist/util/dictionary-definitions.js.map +0 -1
  639. package/tslint.json +0 -3
@@ -1,133 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FixSessionState = void 0;
4
- const buffer_1 = require("../buffer");
5
- const moment = require("moment");
6
- const tick_action_1 = require("./tick-action");
7
- const session_state_1 = require("./session-state");
8
- class FixSessionState {
9
- constructor({ heartBeat, state = session_state_1.SessionState.Idle, waitLogoutConfirmSeconds = 5, stopSeconds = 2, lastPeerMsgSeqNum = 0 }) {
10
- this.nextTickAction = tick_action_1.TickAction.Nothing;
11
- this.lastReceivedAt = null;
12
- this.LastSentAt = null;
13
- this.lastTestRequestAt = null;
14
- this.logoutSentAt = null;
15
- this.now = new Date();
16
- this.compId = '';
17
- this.peerCompId = '';
18
- this.peerHeartBeatSecs = 0;
19
- this.secondsSinceLogoutSent = -1;
20
- this.secondsSinceSent = -1;
21
- this.secondsSinceReceive = -1;
22
- this.heartBeat = heartBeat;
23
- this.state = state;
24
- this.waitLogoutConfirmSeconds = waitLogoutConfirmSeconds;
25
- this.stopSeconds = stopSeconds;
26
- this.lastPeerMsgSeqNum = lastPeerMsgSeqNum;
27
- }
28
- reset(resetSeqNo) {
29
- this.lastReceivedAt = null;
30
- this.LastSentAt = null;
31
- this.lastTestRequestAt = null;
32
- this.secondsSinceLogoutSent = -1;
33
- this.secondsSinceSent = -1;
34
- this.secondsSinceReceive = -1;
35
- this.peerHeartBeatSecs = 0;
36
- this.logoutSentAt = null;
37
- this.nextTickAction = tick_action_1.TickAction.Nothing;
38
- if (resetSeqNo) {
39
- this.lastPeerMsgSeqNum = 0;
40
- }
41
- }
42
- static dateAsString(d) {
43
- if (!d) {
44
- return 'null';
45
- }
46
- return moment(d).format('HH:mm:ss.SSS');
47
- }
48
- toString() {
49
- const buffer = new buffer_1.ElasticBuffer(1024);
50
- buffer.writeString(`compId = ${this.compId}, `);
51
- buffer.writeString(`heartBeat = ${this.heartBeat}, `);
52
- buffer.writeString(`state = ${session_state_1.SessionState[this.state]} (${this.state}), `);
53
- buffer.writeString(`nextTickAction = ${tick_action_1.TickAction[this.nextTickAction]} (${this.nextTickAction}), `);
54
- buffer.writeString(`now = ${FixSessionState.dateAsString(this.now)}, `);
55
- buffer.writeString(`timeToDie = ${this.timeToDie()}, `);
56
- buffer.writeString(`timeToHeartbeat = ${this.timeToHeartbeat()}, `);
57
- buffer.writeString(`timeToTerminate = ${this.timeToTerminate()}, `);
58
- buffer.writeString(`timeToTestRequest = ${this.timeToTestRequest()}, `);
59
- buffer.writeString(`lastReceivedAt = ${FixSessionState.dateAsString(this.lastReceivedAt)}, `);
60
- buffer.writeString(`LastSentAt = ${FixSessionState.dateAsString(this.LastSentAt)}, `);
61
- buffer.writeString(`lastTestRequestAt = ${FixSessionState.dateAsString(this.lastTestRequestAt)}, `);
62
- buffer.writeString(`logoutSentAt = ${FixSessionState.dateAsString(this.logoutSentAt)}, `);
63
- buffer.writeString(`peerHeartBeatSecs = ${this.peerHeartBeatSecs}, `);
64
- buffer.writeString(`peerCompId = ${this.peerCompId}, `);
65
- buffer.writeString(`lastPeerMsgSeqNum = ${this.lastPeerMsgSeqNum}, `);
66
- buffer.writeString(`secondsSinceLogoutSent = ${this.secondsSinceLogoutSent}, `);
67
- buffer.writeString(`secondsSinceSent = ${this.secondsSinceSent}, `);
68
- buffer.writeString(`secondsSinceReceive = ${this.secondsSinceReceive}`);
69
- return buffer.toString();
70
- }
71
- calcAction(now) {
72
- this.now = now;
73
- this.calcState();
74
- switch (this.state) {
75
- case session_state_1.SessionState.PeerLogonRejected: {
76
- if (this.secondsSinceSent >= this.stopSeconds) {
77
- this.nextTickAction = tick_action_1.TickAction.Stop;
78
- }
79
- break;
80
- }
81
- case session_state_1.SessionState.WaitingLogoutConfirm:
82
- case session_state_1.SessionState.ConfirmingLogout: {
83
- if (this.timeToDie()) {
84
- this.nextTickAction = tick_action_1.TickAction.Stop;
85
- }
86
- break;
87
- }
88
- case session_state_1.SessionState.ActiveNormalSession:
89
- case session_state_1.SessionState.AwaitingProcessingResponseToTestRequest:
90
- case session_state_1.SessionState.InitiationLogonReceived:
91
- case session_state_1.SessionState.InitiationLogonResponse: {
92
- if (this.timeToHeartbeat()) {
93
- this.nextTickAction = tick_action_1.TickAction.Heartbeat;
94
- }
95
- else {
96
- if (this.timeToTerminate()) {
97
- this.nextTickAction = tick_action_1.TickAction.TerminateOnError;
98
- }
99
- else if (this.timeToTestRequest()) {
100
- if (!this.lastTestRequestAt) {
101
- this.nextTickAction = tick_action_1.TickAction.TestRequest;
102
- this.lastTestRequestAt = this.now;
103
- }
104
- }
105
- }
106
- break;
107
- }
108
- }
109
- return this.nextTickAction;
110
- }
111
- timeToDie() {
112
- return this.secondsSinceLogoutSent > this.waitLogoutConfirmSeconds ||
113
- this.secondsSinceLogoutSent > this.stopSeconds;
114
- }
115
- timeToHeartbeat() {
116
- return this.secondsSinceSent >= this.heartBeat;
117
- }
118
- timeToTerminate() {
119
- return this.secondsSinceReceive >= 2.5 * this.peerHeartBeatSecs;
120
- }
121
- timeToTestRequest() {
122
- return this.secondsSinceReceive >= 1.5 * this.peerHeartBeatSecs;
123
- }
124
- calcState() {
125
- const time = this.now.getTime();
126
- this.nextTickAction = tick_action_1.TickAction.Nothing;
127
- this.secondsSinceLogoutSent = this.logoutSentAt ? (time - this.logoutSentAt.getTime()) / 1000 : -1;
128
- this.secondsSinceSent = (time - this.LastSentAt.getTime()) / 1000;
129
- this.secondsSinceReceive = (time - this.lastReceivedAt.getTime()) / 1000;
130
- }
131
- }
132
- exports.FixSessionState = FixSessionState;
133
- //# sourceMappingURL=fix-session-state.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fix-session-state.js","sourceRoot":"","sources":["../../src/transport/fix-session-state.ts"],"names":[],"mappings":"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","sourcesContent":["import { ElasticBuffer } from '../buffer'\r\nimport moment = require('moment')\r\nimport { TickAction } from './tick-action'\r\nimport { IFixSessionStateArgs } from './fix-session-state-args'\r\nimport { SessionState } from './session-state'\r\n\r\nexport class FixSessionState {\r\n public nextTickAction: TickAction = TickAction.Nothing\r\n\r\n public lastReceivedAt: Date = null\r\n public LastSentAt: Date = null\r\n public lastTestRequestAt: Date = null\r\n public logoutSentAt: Date = null\r\n public now: Date = new Date()\r\n public compId: string = ''\r\n public peerCompId: string = ''\r\n public peerHeartBeatSecs: number = 0\r\n public lastPeerMsgSeqNum: number\r\n public readonly heartBeat: number\r\n public state: SessionState\r\n public readonly waitLogoutConfirmSeconds: number\r\n public readonly stopSeconds: number\r\n\r\n private secondsSinceLogoutSent: number = -1\r\n private secondsSinceSent: number = -1\r\n private secondsSinceReceive: number = -1\r\n\r\n public reset (resetSeqNo: boolean): void {\r\n this.lastReceivedAt = null\r\n this.LastSentAt = null\r\n this.lastTestRequestAt = null\r\n this.secondsSinceLogoutSent = -1\r\n this.secondsSinceSent = -1\r\n this.secondsSinceReceive = -1\r\n this.peerHeartBeatSecs = 0\r\n this.logoutSentAt = null\r\n this.nextTickAction = TickAction.Nothing\r\n if (resetSeqNo) {\r\n this.lastPeerMsgSeqNum = 0\r\n }\r\n }\r\n\r\n public constructor ({ heartBeat,\r\n state = SessionState.Idle,\r\n waitLogoutConfirmSeconds = 5,\r\n stopSeconds = 2,\r\n lastPeerMsgSeqNum = 0 }: IFixSessionStateArgs) {\r\n this.heartBeat = heartBeat\r\n this.state = state\r\n this.waitLogoutConfirmSeconds = waitLogoutConfirmSeconds\r\n this.stopSeconds = stopSeconds\r\n this.lastPeerMsgSeqNum = lastPeerMsgSeqNum\r\n }\r\n\r\n private static dateAsString (d: Date) {\r\n if (!d) {\r\n return 'null'\r\n }\r\n return moment(d).format('HH:mm:ss.SSS')\r\n }\r\n\r\n public toString (): string {\r\n\r\n const buffer = new ElasticBuffer(1024)\r\n\r\n buffer.writeString(`compId = ${this.compId}, `)\r\n buffer.writeString(`heartBeat = ${this.heartBeat}, `)\r\n buffer.writeString(`state = ${SessionState[this.state]} (${this.state}), `)\r\n buffer.writeString(`nextTickAction = ${TickAction[this.nextTickAction]} (${this.nextTickAction}), `)\r\n buffer.writeString(`now = ${FixSessionState.dateAsString(this.now)}, `)\r\n buffer.writeString(`timeToDie = ${this.timeToDie()}, `)\r\n buffer.writeString(`timeToHeartbeat = ${this.timeToHeartbeat()}, `)\r\n buffer.writeString(`timeToTerminate = ${this.timeToTerminate()}, `)\r\n buffer.writeString(`timeToTestRequest = ${this.timeToTestRequest()}, `)\r\n buffer.writeString(`lastReceivedAt = ${FixSessionState.dateAsString(this.lastReceivedAt)}, `)\r\n buffer.writeString(`LastSentAt = ${FixSessionState.dateAsString(this.LastSentAt)}, `)\r\n buffer.writeString(`lastTestRequestAt = ${FixSessionState.dateAsString(this.lastTestRequestAt)}, `)\r\n buffer.writeString(`logoutSentAt = ${FixSessionState.dateAsString(this.logoutSentAt)}, `)\r\n buffer.writeString(`peerHeartBeatSecs = ${this.peerHeartBeatSecs}, `)\r\n buffer.writeString(`peerCompId = ${this.peerCompId}, `)\r\n buffer.writeString(`lastPeerMsgSeqNum = ${this.lastPeerMsgSeqNum}, `)\r\n buffer.writeString(`secondsSinceLogoutSent = ${this.secondsSinceLogoutSent}, `)\r\n buffer.writeString(`secondsSinceSent = ${this.secondsSinceSent}, `)\r\n buffer.writeString(`secondsSinceReceive = ${this.secondsSinceReceive}`)\r\n\r\n return buffer.toString()\r\n }\r\n\r\n public calcAction (now: Date): TickAction {\r\n this.now = now\r\n this.calcState()\r\n\r\n switch (this.state) {\r\n\r\n case SessionState.PeerLogonRejected: {\r\n if (this.secondsSinceSent >= this.stopSeconds) {\r\n this.nextTickAction = TickAction.Stop\r\n }\r\n break\r\n }\r\n\r\n case SessionState.WaitingLogoutConfirm:\r\n case SessionState.ConfirmingLogout: {\r\n if (this.timeToDie()) {\r\n this.nextTickAction = TickAction.Stop\r\n }\r\n break\r\n }\r\n\r\n case SessionState.ActiveNormalSession:\r\n case SessionState.AwaitingProcessingResponseToTestRequest:\r\n case SessionState.InitiationLogonReceived:\r\n case SessionState.InitiationLogonResponse : {\r\n if (this.timeToHeartbeat()) {\r\n // have not sent anything for heartbeat period so let other side know still alive.\r\n this.nextTickAction = TickAction.Heartbeat\r\n } else {\r\n // console.log(`${application.name}: secondsSinceSent = ${secondsSinceSent} secondsSinceReceive = ${secondsSinceReceive}`)\r\n if (this.timeToTerminate()) {\r\n this.nextTickAction = TickAction.TerminateOnError\r\n } else if (this.timeToTestRequest()) {\r\n if (!this.lastTestRequestAt) {\r\n // not received anything from peer\r\n this.nextTickAction = TickAction.TestRequest\r\n this.lastTestRequestAt = this.now\r\n }\r\n }\r\n }\r\n break\r\n }\r\n }\r\n\r\n return this.nextTickAction\r\n }\r\n\r\n public timeToDie (): boolean {\r\n return this.secondsSinceLogoutSent > this.waitLogoutConfirmSeconds ||\r\n this.secondsSinceLogoutSent > this.stopSeconds\r\n }\r\n\r\n public timeToHeartbeat (): boolean {\r\n return this.secondsSinceSent >= this.heartBeat\r\n }\r\n\r\n public timeToTerminate (): boolean {\r\n return this.secondsSinceReceive >= 2.5 * this.peerHeartBeatSecs\r\n }\r\n\r\n public timeToTestRequest (): boolean {\r\n return this.secondsSinceReceive >= 1.5 * this.peerHeartBeatSecs\r\n }\r\n\r\n private calcState (): void {\r\n const time = this.now.getTime()\r\n this.nextTickAction = TickAction.Nothing\r\n this.secondsSinceLogoutSent = this.logoutSentAt ? (time - this.logoutSentAt.getTime()) / 1000 : -1\r\n this.secondsSinceSent = (time - this.LastSentAt.getTime()) / 1000\r\n this.secondsSinceReceive = (time - this.lastReceivedAt.getTime()) / 1000\r\n }\r\n}\r\n"]}
@@ -1,50 +0,0 @@
1
- /// <reference types="node" />
2
- import { MsgView } from '../buffer';
3
- import { IJsFixConfig, IJsFixLogger } from '../config';
4
- import { FixSessionState } from './fix-session-state';
5
- import { MsgTransport } from './factory/msg-transport';
6
- import { ILooseObject } from '../collections/collection';
7
- import * as events from 'events';
8
- import { SessionState } from '.';
9
- export declare abstract class FixSession extends events.EventEmitter {
10
- readonly config: IJsFixConfig;
11
- logReceivedMsgs: boolean;
12
- protected timer: NodeJS.Timer;
13
- protected transport: MsgTransport;
14
- manageSession: boolean;
15
- checkMsgIntegrity: boolean;
16
- protected readonly me: string;
17
- protected readonly initiator: boolean;
18
- protected readonly acceptor: boolean;
19
- protected readonly sessionState: FixSessionState;
20
- protected readonly sessionLogger: IJsFixLogger;
21
- protected requestLogoutType: string;
22
- protected respondLogoutType: string;
23
- protected requestLogonType: string;
24
- protected constructor(config: IJsFixConfig);
25
- setState(state: SessionState): void;
26
- getState(): SessionState;
27
- sendLogon(): void;
28
- private waitPromise;
29
- run(transport: MsgTransport): Promise<number>;
30
- protected expectedState(): boolean;
31
- protected subscribe(): void;
32
- protected validStateApplicationMsg(): boolean;
33
- protected stateString(): string;
34
- protected checkForwardMsg(msgType: string, view: MsgView): void;
35
- protected terminate(error: Error): void;
36
- protected peerLogout(view: MsgView): void;
37
- protected send(msgType: string, obj: ILooseObject): void;
38
- protected sendLogout(msg: string): void;
39
- protected sessionLogout(): void;
40
- done(): void;
41
- reset(): void;
42
- protected stop(error?: Error): void;
43
- protected abstract onMsg(msgType: string, view: MsgView): void;
44
- protected abstract onDecoded(msgType: string, txt: string): void;
45
- protected abstract onEncoded(msgType: string, txt: string): void;
46
- protected abstract onApplicationMsg(msgType: string, view: MsgView): void;
47
- protected abstract onReady(view: MsgView): void;
48
- protected abstract onStopped(error?: Error): void;
49
- protected abstract onLogon(view: MsgView, user: string, password: string): boolean;
50
- }
@@ -1,290 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FixSession = void 0;
4
- const buffer_1 = require("../buffer");
5
- const fix_session_state_1 = require("./fix-session-state");
6
- const types_1 = require("../types");
7
- const events = require("events");
8
- const _1 = require(".");
9
- class FixSession extends events.EventEmitter {
10
- constructor(config) {
11
- super();
12
- this.config = config;
13
- this.logReceivedMsgs = false;
14
- this.timer = null;
15
- this.transport = null;
16
- this.manageSession = true;
17
- this.checkMsgIntegrity = false;
18
- const description = config.description;
19
- this.me = description.application.name;
20
- this.sessionState = new fix_session_state_1.FixSessionState({ heartBeat: config.description.HeartBtInt,
21
- lastPeerMsgSeqNum: config.description.LastReceivedSeqNum });
22
- this.sessionLogger = config.logFactory.logger(`${this.me}:FixSession`);
23
- this.initiator = description.application.type === 'initiator';
24
- this.acceptor = !this.initiator;
25
- this.checkMsgIntegrity = this.acceptor;
26
- this.sessionState.compId = description.SenderCompId;
27
- }
28
- setState(state) {
29
- if (state === this.sessionState.state)
30
- return;
31
- const logger = this.sessionLogger;
32
- const prevState = this.sessionState.state;
33
- const msg = `current state ${_1.SessionState[prevState]} (${prevState}) moves to ${_1.SessionState[state]} (${state})`;
34
- logger.info(msg);
35
- this.sessionState.state = state;
36
- }
37
- getState() {
38
- return this.sessionState.state;
39
- }
40
- sendLogon() {
41
- this.send(this.requestLogonType, this.config.factory.logon());
42
- }
43
- waitPromise() {
44
- const logger = this.sessionLogger;
45
- return new Promise((accept, reject) => {
46
- if (this.initiator) {
47
- logger.debug(`initiator sending logon state = ${this.stateString()}`);
48
- this.sendLogon();
49
- this.setState(_1.SessionState.InitiationLogonSent);
50
- }
51
- else {
52
- logger.debug(`acceptor waits for logon state = ${this.stateString()}`);
53
- this.setState(_1.SessionState.WaitingForALogon);
54
- }
55
- this.on('error', (e) => {
56
- logger.error(e);
57
- reject(e);
58
- });
59
- this.on('done', () => {
60
- accept(this.transport.id);
61
- });
62
- });
63
- }
64
- run(transport) {
65
- const logger = this.sessionLogger;
66
- if (this.transport) {
67
- logger.info(`reset from previous transport. state ${this.stateString()}`);
68
- this.reset();
69
- }
70
- this.transport = transport;
71
- this.subscribe();
72
- return this.waitPromise();
73
- }
74
- expectedState() {
75
- switch (this.sessionState.state) {
76
- case _1.SessionState.ActiveNormalSession:
77
- case _1.SessionState.ReceiveLogout:
78
- case _1.SessionState.Stopped:
79
- case _1.SessionState.ConfirmingLogout:
80
- case _1.SessionState.HandleResendRequest:
81
- case _1.SessionState.AwaitingProcessingResponseToTestRequest:
82
- case _1.SessionState.AwaitingProcessingResponseToResendRequest:
83
- return true;
84
- default:
85
- return false;
86
- }
87
- }
88
- subscribe() {
89
- const transport = this.transport;
90
- const logger = this.sessionLogger;
91
- const rx = transport.receiver;
92
- const tx = transport.transmitter;
93
- rx.on('msg', (msgType, view) => {
94
- if (this.logReceivedMsgs) {
95
- const name = view.segment.type !== buffer_1.SegmentType.Unknown ? view.segment.set.name : 'unknown';
96
- logger.info(`${msgType}: ${name}`);
97
- logger.info(`${view.toString()}`);
98
- }
99
- this.sessionState.lastReceivedAt = new Date();
100
- if (this.manageSession) {
101
- this.onMsg(msgType, view);
102
- }
103
- else {
104
- this.checkForwardMsg(msgType, view);
105
- }
106
- });
107
- rx.on('error', (e) => {
108
- logger.warning(`rx error event: ${e.message} ${e.stack || ''}`);
109
- this.terminate(e);
110
- });
111
- rx.on('done', () => {
112
- logger.info('rx done received');
113
- this.done();
114
- });
115
- rx.on('end', () => {
116
- logger.info(`rx end received sessionState = [${this.sessionState.toString()}]`);
117
- const expectedState = this.expectedState();
118
- if (expectedState) {
119
- logger.info(`rx graceful end state = ${this.stateString()}`);
120
- this.done();
121
- }
122
- else {
123
- const e = new Error(`unexpected state - transport failed? = ${this.stateString()}`);
124
- logger.info(`rx error ${e.message}`);
125
- this.terminate(e);
126
- }
127
- });
128
- rx.on('decoded', (msgType, data, ptr) => {
129
- logger.debug(`rx: [${msgType}] ${ptr} bytes`);
130
- this.onDecoded(msgType, data.toString(ptr));
131
- });
132
- tx.on('error', (e) => {
133
- logger.warning(`tx error event: ${e.message} ${e.stack || ''}`);
134
- this.terminate(e);
135
- });
136
- tx.on('encoded', (msgType, data) => {
137
- logger.debug(`tx: [${msgType}] ${data.length} bytes`);
138
- this.onEncoded(msgType, data);
139
- });
140
- }
141
- validStateApplicationMsg() {
142
- switch (this.sessionState.state) {
143
- case _1.SessionState.Idle:
144
- case _1.SessionState.InitiateConnection:
145
- case _1.SessionState.InitiationLogonSent:
146
- case _1.SessionState.WaitingForALogon:
147
- case _1.SessionState.HandleResendRequest:
148
- case _1.SessionState.AwaitingProcessingResponseToTestRequest:
149
- case _1.SessionState.AwaitingProcessingResponseToResendRequest:
150
- return false;
151
- default:
152
- return true;
153
- }
154
- }
155
- stateString() {
156
- return _1.SessionState[this.sessionState.state];
157
- }
158
- checkForwardMsg(msgType, view) {
159
- this.sessionLogger.info(`forwarding msgType = '${msgType}' to application`);
160
- this.setState(_1.SessionState.ActiveNormalSession);
161
- this.onApplicationMsg(msgType, view);
162
- }
163
- terminate(error) {
164
- if (this.sessionState.state === _1.SessionState.Stopped)
165
- return;
166
- this.sessionLogger.error(error);
167
- if (this.timer) {
168
- clearInterval(this.timer);
169
- }
170
- if (this.transport) {
171
- this.transport.end();
172
- }
173
- this.transport = null;
174
- this.setState(_1.SessionState.Stopped);
175
- this.emit('error', error);
176
- }
177
- peerLogout(view) {
178
- const msg = view.getString(types_1.MsgTag.Text);
179
- const state = this.sessionState.state;
180
- switch (state) {
181
- case _1.SessionState.WaitingLogoutConfirm: {
182
- this.sessionLogger.info(`peer confirms logout Text = '${msg}'`);
183
- this.stop();
184
- break;
185
- }
186
- case _1.SessionState.InitiationLogonResponse:
187
- case _1.SessionState.ActiveNormalSession:
188
- case _1.SessionState.InitiationLogonReceived: {
189
- this.setState(_1.SessionState.ConfirmingLogout);
190
- this.sessionLogger.info(`peer initiates logout Text = '${msg}'`);
191
- this.sessionLogout();
192
- }
193
- }
194
- }
195
- send(msgType, obj) {
196
- const state = this.sessionState.state;
197
- switch (state) {
198
- case _1.SessionState.Stopped: {
199
- this.sessionLogger.warning(`can't send in state ${this.stateString()}`);
200
- break;
201
- }
202
- default: {
203
- this.sessionState.LastSentAt = new Date();
204
- this.transport.transmitter.send(msgType, obj);
205
- break;
206
- }
207
- }
208
- }
209
- sendLogout(msg) {
210
- const factory = this.config.factory;
211
- this.sessionLogger.info(`sending logout with ${msg}`);
212
- this.send(this.requestLogoutType, factory.logout(this.requestLogoutType, msg));
213
- }
214
- sessionLogout() {
215
- const sessionState = this.sessionState;
216
- if (sessionState.logoutSentAt) {
217
- return;
218
- }
219
- switch (sessionState.state) {
220
- case _1.SessionState.ActiveNormalSession:
221
- case _1.SessionState.InitiationLogonResponse:
222
- case _1.SessionState.InitiationLogonReceived: {
223
- this.setState(_1.SessionState.WaitingLogoutConfirm);
224
- sessionState.logoutSentAt = new Date();
225
- const msg = `${this.me} initiate logout`;
226
- this.sessionLogger.info(msg);
227
- this.sendLogout(msg);
228
- break;
229
- }
230
- case _1.SessionState.ConfirmingLogout: {
231
- sessionState.logoutSentAt = new Date();
232
- const msg = `${this.me} confirming logout`;
233
- this.sessionLogger.info(msg);
234
- this.sendLogout(msg);
235
- break;
236
- }
237
- default: {
238
- this.sessionLogger.info(`sessionLogout ignored as in state ${sessionState.state}`);
239
- }
240
- }
241
- }
242
- done() {
243
- switch (this.sessionState.state) {
244
- case _1.SessionState.InitiationLogonResponse:
245
- case _1.SessionState.ActiveNormalSession:
246
- case _1.SessionState.InitiationLogonReceived: {
247
- this.sessionLogout();
248
- break;
249
- }
250
- case _1.SessionState.Stopped:
251
- this.sessionLogger.info(`done. session is now stopped`);
252
- break;
253
- default: {
254
- this.stop();
255
- break;
256
- }
257
- }
258
- this.sessionLogger.info(`done. check logout sequence state ${this.stateString()}`);
259
- }
260
- reset() {
261
- if (this.timer) {
262
- clearInterval(this.timer);
263
- }
264
- this.transport = null;
265
- this.sessionState.reset(true);
266
- this.setState(_1.SessionState.NetworkConnectionEstablished);
267
- }
268
- stop(error = null) {
269
- if (this.sessionState.state === _1.SessionState.Stopped) {
270
- return;
271
- }
272
- if (this.timer) {
273
- clearInterval(this.timer);
274
- }
275
- this.sessionLogger.info(`stop: kill transport`);
276
- this.transport.end();
277
- if (error) {
278
- this.sessionLogger.info(`stop: emit error ${error.message}`);
279
- this.emit('error', error);
280
- }
281
- else {
282
- this.emit('done');
283
- }
284
- this.setState(_1.SessionState.Stopped);
285
- this.onStopped(error);
286
- this.transport = null;
287
- }
288
- }
289
- exports.FixSession = FixSession;
290
- //# sourceMappingURL=fix-session.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fix-session.js","sourceRoot":"","sources":["../../src/transport/fix-session.ts"],"names":[],"mappings":"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","sourcesContent":["import { ElasticBuffer, MsgView, SegmentType } from '../buffer'\r\nimport { IJsFixConfig, IJsFixLogger } from '../config'\r\nimport { FixSessionState } from './fix-session-state'\r\nimport { MsgTransport } from './factory/msg-transport'\r\nimport { MsgTag } from '../types'\r\nimport { ILooseObject } from '../collections/collection'\r\n\r\nimport * as events from 'events'\r\nimport { SessionState } from '.'\r\n\r\nexport abstract class FixSession extends events.EventEmitter {\r\n public logReceivedMsgs: boolean = false\r\n protected timer: NodeJS.Timer = null\r\n protected transport: MsgTransport = null\r\n public manageSession: boolean = true\r\n public checkMsgIntegrity: boolean = false\r\n protected readonly me: string\r\n protected readonly initiator: boolean\r\n protected readonly acceptor: boolean\r\n protected readonly sessionState: FixSessionState\r\n protected readonly sessionLogger: IJsFixLogger\r\n protected requestLogoutType: string\r\n protected respondLogoutType: string\r\n protected requestLogonType: string\r\n\r\n protected constructor (public readonly config: IJsFixConfig) {\r\n super()\r\n const description = config.description\r\n this.me = description.application.name\r\n this.sessionState = new FixSessionState(\r\n { heartBeat: config.description.HeartBtInt,\r\n lastPeerMsgSeqNum: config.description.LastReceivedSeqNum})\r\n this.sessionLogger = config.logFactory.logger(`${this.me}:FixSession`)\r\n this.initiator = description.application.type === 'initiator'\r\n this.acceptor = !this.initiator\r\n this.checkMsgIntegrity = this.acceptor\r\n this.sessionState.compId = description.SenderCompId\r\n }\r\n\r\n public setState (state: SessionState) {\r\n if (state === this.sessionState.state) return\r\n const logger = this.sessionLogger\r\n const prevState = this.sessionState.state\r\n const msg = `current state ${SessionState[prevState]} (${prevState}) moves to ${SessionState[state]} (${state})`\r\n logger.info(msg)\r\n this.sessionState.state = state\r\n }\r\n\r\n public getState (): SessionState {\r\n return this.sessionState.state\r\n }\r\n\r\n public sendLogon () {\r\n this.send(this.requestLogonType, this.config.factory.logon())\r\n }\r\n\r\n private waitPromise (): Promise<any> {\r\n const logger = this.sessionLogger\r\n return new Promise<any>((accept, reject) => {\r\n if (this.initiator) {\r\n logger.debug(`initiator sending logon state = ${this.stateString()}`)\r\n this.sendLogon()\r\n this.setState(SessionState.InitiationLogonSent)\r\n } else {\r\n logger.debug(`acceptor waits for logon state = ${this.stateString()}`)\r\n this.setState(SessionState.WaitingForALogon)\r\n }\r\n\r\n this.on('error', (e: Error) => {\r\n logger.error(e)\r\n reject(e)\r\n })\r\n\r\n this.on('done', () => {\r\n accept(this.transport.id)\r\n })\r\n })\r\n }\r\n\r\n public run (transport: MsgTransport): Promise<number> {\r\n const logger = this.sessionLogger\r\n if (this.transport) {\r\n logger.info(`reset from previous transport. state ${this.stateString()}`)\r\n this.reset()\r\n }\r\n this.transport = transport\r\n this.subscribe()\r\n return this.waitPromise()\r\n }\r\n\r\n protected expectedState (): boolean {\r\n switch (this.sessionState.state) {\r\n case SessionState.ActiveNormalSession:\r\n case SessionState.ReceiveLogout:\r\n case SessionState.Stopped:\r\n case SessionState.ConfirmingLogout:\r\n case SessionState.HandleResendRequest:\r\n case SessionState.AwaitingProcessingResponseToTestRequest:\r\n case SessionState.AwaitingProcessingResponseToResendRequest:\r\n return true\r\n\r\n default:\r\n return false\r\n }\r\n }\r\n\r\n protected subscribe () {\r\n\r\n const transport = this.transport\r\n const logger = this.sessionLogger\r\n\r\n const rx = transport.receiver\r\n const tx = transport.transmitter\r\n\r\n rx.on('msg', (msgType: string, view: MsgView) => {\r\n if (this.logReceivedMsgs) {\r\n const name = view.segment.type !== SegmentType.Unknown ? view.segment.set.name : 'unknown'\r\n logger.info(`${msgType}: ${name}`)\r\n logger.info(`${view.toString()}`)\r\n }\r\n this.sessionState.lastReceivedAt = new Date()\r\n if (this.manageSession) {\r\n this.onMsg(msgType, view)\r\n } else {\r\n this.checkForwardMsg(msgType, view)\r\n }\r\n })\r\n\r\n rx.on('error', (e: Error) => {\r\n logger.warning(`rx error event: ${e.message} ${e.stack || ''}`)\r\n this.terminate(e)\r\n })\r\n\r\n rx.on('done', () => {\r\n logger.info('rx done received')\r\n this.done()\r\n })\r\n\r\n rx.on('end', () => {\r\n logger.info(`rx end received sessionState = [${this.sessionState.toString()}]`)\r\n const expectedState = this.expectedState()\r\n if (expectedState) {\r\n logger.info(`rx graceful end state = ${this.stateString()}`)\r\n this.done()\r\n } else {\r\n const e = new Error(`unexpected state - transport failed? = ${this.stateString()}`)\r\n logger.info(`rx error ${e.message}`)\r\n this.terminate(e)\r\n }\r\n })\r\n\r\n rx.on('decoded', (msgType: string, data: ElasticBuffer, ptr: number) => {\r\n logger.debug(`rx: [${msgType}] ${ptr} bytes`)\r\n this.onDecoded(msgType, data.toString(ptr))\r\n })\r\n\r\n tx.on('error', (e: Error) => {\r\n logger.warning(`tx error event: ${e.message} ${e.stack || ''}`)\r\n this.terminate(e)\r\n })\r\n\r\n tx.on('encoded', (msgType: string, data: string) => {\r\n logger.debug(`tx: [${msgType}] ${data.length} bytes`)\r\n this.onEncoded(msgType, data)\r\n })\r\n }\r\n\r\n protected validStateApplicationMsg (): boolean {\r\n switch (this.sessionState.state) {\r\n case SessionState.Idle:\r\n case SessionState.InitiateConnection:\r\n case SessionState.InitiationLogonSent:\r\n case SessionState.WaitingForALogon:\r\n case SessionState.HandleResendRequest:\r\n case SessionState.AwaitingProcessingResponseToTestRequest:\r\n case SessionState.AwaitingProcessingResponseToResendRequest:\r\n return false\r\n default:\r\n return true\r\n }\r\n }\r\n\r\n protected stateString (): string {\r\n return SessionState[this.sessionState.state]\r\n }\r\n\r\n protected checkForwardMsg (msgType: string, view: MsgView): void {\r\n this.sessionLogger.info(`forwarding msgType = '${msgType}' to application`)\r\n this.setState(SessionState.ActiveNormalSession)\r\n this.onApplicationMsg(msgType, view)\r\n }\r\n\r\n protected terminate (error: Error): void {\r\n if (this.sessionState.state === SessionState.Stopped) return\r\n this.sessionLogger.error(error)\r\n if (this.timer) {\r\n clearInterval(this.timer)\r\n }\r\n if (this.transport) {\r\n this.transport.end()\r\n }\r\n this.transport = null\r\n this.setState(SessionState.Stopped)\r\n this.emit('error', error)\r\n }\r\n\r\n protected peerLogout (view: MsgView) {\r\n const msg = view.getString(MsgTag.Text)\r\n const state = this.sessionState.state\r\n switch (state) {\r\n case SessionState.WaitingLogoutConfirm: {\r\n this.sessionLogger.info(`peer confirms logout Text = '${msg}'`)\r\n this.stop()\r\n break\r\n }\r\n\r\n case SessionState.InitiationLogonResponse:\r\n case SessionState.ActiveNormalSession:\r\n case SessionState.InitiationLogonReceived: {\r\n this.setState(SessionState.ConfirmingLogout)\r\n this.sessionLogger.info(`peer initiates logout Text = '${msg}'`)\r\n this.sessionLogout()\r\n }\r\n }\r\n }\r\n\r\n protected send (msgType: string, obj: ILooseObject) {\r\n const state = this.sessionState.state\r\n switch (state) {\r\n case SessionState.Stopped: {\r\n this.sessionLogger.warning(`can't send in state ${this.stateString()}`)\r\n break\r\n }\r\n\r\n default: {\r\n this.sessionState.LastSentAt = new Date()\r\n this.transport.transmitter.send(msgType, obj)\r\n break\r\n }\r\n }\r\n }\r\n\r\n protected sendLogout (msg: string) {\r\n const factory = this.config.factory\r\n this.sessionLogger.info(`sending logout with ${msg}`)\r\n this.send(this.requestLogoutType, factory.logout(this.requestLogoutType, msg))\r\n }\r\n\r\n protected sessionLogout (): void {\r\n const sessionState = this.sessionState\r\n if (sessionState.logoutSentAt) {\r\n return\r\n }\r\n\r\n switch (sessionState.state) {\r\n case SessionState.ActiveNormalSession:\r\n case SessionState.InitiationLogonResponse:\r\n case SessionState.InitiationLogonReceived: {\r\n // this instance initiates logout\r\n this.setState(SessionState.WaitingLogoutConfirm)\r\n sessionState.logoutSentAt = new Date()\r\n const msg = `${this.me} initiate logout`\r\n this.sessionLogger.info(msg)\r\n this.sendLogout(msg)\r\n break\r\n }\r\n\r\n case SessionState.ConfirmingLogout: {\r\n // this instance responds to logout\r\n sessionState.logoutSentAt = new Date()\r\n const msg = `${this.me} confirming logout`\r\n this.sessionLogger.info(msg)\r\n this.sendLogout(msg)\r\n break\r\n }\r\n\r\n default: {\r\n this.sessionLogger.info(`sessionLogout ignored as in state ${sessionState.state}`)\r\n }\r\n }\r\n }\r\n\r\n public done (): void {\r\n switch (this.sessionState.state) {\r\n case SessionState.InitiationLogonResponse:\r\n case SessionState.ActiveNormalSession:\r\n case SessionState.InitiationLogonReceived: {\r\n this.sessionLogout()\r\n break\r\n }\r\n\r\n case SessionState.Stopped:\r\n this.sessionLogger.info(`done. session is now stopped`)\r\n break\r\n\r\n default: {\r\n this.stop()\r\n break\r\n }\r\n }\r\n this.sessionLogger.info(`done. check logout sequence state ${this.stateString()}`)\r\n }\r\n\r\n public reset (): void {\r\n if (this.timer) {\r\n clearInterval(this.timer)\r\n }\r\n this.transport = null\r\n this.sessionState.reset(true) // from header def ... eventually\r\n this.setState(SessionState.NetworkConnectionEstablished)\r\n }\r\n\r\n protected stop (error: Error = null): void {\r\n if (this.sessionState.state === SessionState.Stopped) {\r\n return\r\n }\r\n if (this.timer) {\r\n clearInterval(this.timer)\r\n }\r\n this.sessionLogger.info(`stop: kill transport`)\r\n this.transport.end()\r\n if (error) {\r\n this.sessionLogger.info(`stop: emit error ${error.message}`)\r\n this.emit('error', error)\r\n } else {\r\n this.emit('done')\r\n }\r\n\r\n this.setState(SessionState.Stopped)\r\n this.onStopped(error)\r\n this.transport = null\r\n }\r\n\r\n protected abstract onMsg (msgType: string, view: MsgView): void\r\n // application responsible for writing its own log\r\n protected abstract onDecoded (msgType: string, txt: string): void\r\n protected abstract onEncoded (msgType: string, txt: string): void\r\n // an application level message to be handled by implementation, unless\r\n // manageSession = false in which case all messages will be forwarded\r\n protected abstract onApplicationMsg (msgType: string, view: MsgView): void\r\n // inform application peer has logged in - provide login message\r\n protected abstract onReady (view: MsgView): void\r\n // inform application this session has now ended - either from logout or connection dropped\r\n protected abstract onStopped (error?: Error): void\r\n // does the application accept the inbound logon request\r\n protected abstract onLogon (view: MsgView, user: string, password: string): boolean\r\n}\r\n"]}
@@ -1,3 +0,0 @@
1
- import { IJsFixConfig } from '../../config';
2
- import { MakeFixSession } from '../make-fixl-session';
3
- export declare function acceptor(config: IJsFixConfig, sessionFactory: MakeFixSession): Promise<any>;
@@ -1,38 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.acceptor = void 0;
13
- const http_1 = require("../http");
14
- function acceptor(config, sessionFactory) {
15
- return new Promise((accept, reject) => __awaiter(this, void 0, void 0, function* () {
16
- const logger = config.logFactory.logger('acceptor');
17
- logger.info('starting.');
18
- const acceptor = new http_1.HttpAcceptor(config);
19
- acceptor.on('transport', (t) => {
20
- logger.info('creates new transport.');
21
- const acceptorSession = sessionFactory(config);
22
- acceptorSession.run(t).then(() => {
23
- logger.info('ends');
24
- acceptor.close(() => {
25
- logger.info('acceptor closed.');
26
- accept(true);
27
- });
28
- }).catch((e) => {
29
- logger.error(e);
30
- logger.info(e.stack);
31
- reject(e);
32
- });
33
- });
34
- acceptor.listen();
35
- }));
36
- }
37
- exports.acceptor = acceptor;
38
- //# sourceMappingURL=acceptor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"acceptor.js","sourceRoot":"","sources":["../../../src/transport/fixml/acceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAGA,kCAAsC;AAGtC,SAAgB,QAAQ,CAAE,MAAoB,EAAE,cAA8B;IAC5E,OAAO,IAAI,OAAO,CAAM,CAAO,MAAM,EAAE,MAAM,EAAE,EAAE;QAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QACnD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACxB,MAAM,QAAQ,GAAgB,IAAI,mBAAY,CAAC,MAAM,CAAC,CAAA;QACtD,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAe,EAAE,EAAE;YAC3C,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;YACrC,MAAM,eAAe,GAAG,cAAc,CAAC,MAAM,CAAC,CAAA;YAC9C,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC/B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBACnB,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE;oBAClB,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;oBAC/B,MAAM,CAAC,IAAI,CAAC,CAAA;gBACd,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAQ,EAAE,EAAE;gBACpB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBACf,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;gBACpB,MAAM,CAAC,CAAC,CAAC,CAAA;YACX,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QACF,QAAQ,CAAC,MAAM,EAAE,CAAA;IACnB,CAAC,CAAA,CAAC,CAAA;AACJ,CAAC;AAtBD,4BAsBC","sourcesContent":["import { IJsFixConfig } from '../../config'\r\nimport { FixAcceptor } from '../fix-acceptor'\r\nimport { MsgTransport } from '../msg-transport'\r\nimport { HttpAcceptor } from '../http'\r\nimport { MakeFixSession } from '../make-fixl-session'\r\n\r\nexport function acceptor (config: IJsFixConfig, sessionFactory: MakeFixSession): Promise<any> {\r\n return new Promise<any>(async (accept, reject) => {\r\n const logger = config.logFactory.logger('acceptor')\r\n logger.info('starting.')\r\n const acceptor: FixAcceptor = new HttpAcceptor(config)\r\n acceptor.on('transport', (t: MsgTransport) => {\r\n logger.info('creates new transport.')\r\n const acceptorSession = sessionFactory(config)\r\n acceptorSession.run(t).then(() => {\r\n logger.info('ends')\r\n acceptor.close(() => {\r\n logger.info('acceptor closed.')\r\n accept(true)\r\n })\r\n }).catch((e: Error) => {\r\n logger.error(e)\r\n logger.info(e.stack)\r\n reject(e)\r\n })\r\n })\r\n acceptor.listen()\r\n })\r\n}\r\n"]}
@@ -1,13 +0,0 @@
1
- import { ISessionDescription } from './session-description';
2
- import { ILooseObject } from '../collections/collection';
3
- import { ASessionMsgFactory, ObjectMutator } from '.';
4
- import { IStandardHeader } from '../types/FIXML50SP2';
5
- export declare class FixmlSessionMsgFactory extends ASessionMsgFactory {
6
- readonly description: ISessionDescription;
7
- constructor(description: ISessionDescription, mutator?: ObjectMutator);
8
- logon(userRequestId?: string, isResponse?: boolean): ILooseObject;
9
- logout(msgType: string, text: string): ILooseObject;
10
- header(msgType: string, seqNum?: number, time?: Date, overrideData?: Partial<IStandardHeader>): ILooseObject;
11
- private fixmlLogon;
12
- private fixmlLogout;
13
- }