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.
- package/.eslintrc +30 -0
- package/README.md +297 -249
- package/data/session/test-http-initiator.json +2 -2
- package/dist/buffer/ascii/ascii-chars.js.map +1 -1
- package/dist/buffer/ascii/ascii-encoder.js +9 -5
- package/dist/buffer/ascii/ascii-encoder.js.map +1 -1
- package/dist/buffer/ascii/ascii-parser-state.d.ts +2 -2
- package/dist/buffer/ascii/ascii-parser-state.js +1 -1
- package/dist/buffer/ascii/ascii-parser-state.js.map +1 -1
- package/dist/buffer/ascii/ascii-parser.d.ts +2 -2
- package/dist/buffer/ascii/ascii-parser.js +17 -11
- package/dist/buffer/ascii/ascii-parser.js.map +1 -1
- package/dist/buffer/ascii/ascii-segment-parser.d.ts +1 -1
- package/dist/buffer/ascii/ascii-segment-parser.js +11 -3
- package/dist/buffer/ascii/ascii-segment-parser.js.map +1 -1
- package/dist/buffer/ascii/ascii-view.d.ts +3 -3
- package/dist/buffer/ascii/ascii-view.js +18 -0
- package/dist/buffer/ascii/ascii-view.js.map +1 -1
- package/dist/buffer/ascii/itime-formatter.d.ts +12 -12
- package/dist/buffer/ascii/itime-formatter.js.map +1 -1
- package/dist/buffer/ascii/time-formatter.d.ts +6 -6
- package/dist/buffer/ascii/time-formatter.js.map +1 -1
- package/dist/buffer/elastic-buffer.d.ts +1 -1
- package/dist/buffer/elastic-buffer.js +2 -2
- package/dist/buffer/elastic-buffer.js.map +1 -1
- package/dist/buffer/encode-proxy.js +1 -1
- package/dist/buffer/encode-proxy.js.map +1 -1
- package/dist/buffer/encoder-state.d.ts +2 -2
- package/dist/buffer/encoder-state.js +4 -1
- package/dist/buffer/encoder-state.js.map +1 -1
- package/dist/buffer/fixml/fixml-encoder.js +4 -2
- package/dist/buffer/fixml/fixml-encoder.js.map +1 -1
- package/dist/buffer/fixml/fixml-parser.js +61 -39
- package/dist/buffer/fixml/fixml-parser.js.map +1 -1
- package/dist/buffer/fixml/fixml-view.js +3 -3
- package/dist/buffer/fixml/fixml-view.js.map +1 -1
- package/dist/buffer/fixml/populated-attributes.js.map +1 -1
- package/dist/buffer/msg-encoder.js +2 -1
- package/dist/buffer/msg-encoder.js.map +1 -1
- package/dist/buffer/msg-view.d.ts +9 -9
- package/dist/buffer/msg-view.js +58 -25
- package/dist/buffer/msg-view.js.map +1 -1
- package/dist/buffer/segment/segment-description.d.ts +4 -4
- package/dist/buffer/segment/segment-description.js +7 -5
- package/dist/buffer/segment/segment-description.js.map +1 -1
- package/dist/buffer/segment/segment-summary.js +2 -1
- package/dist/buffer/segment/segment-summary.js.map +1 -1
- package/dist/buffer/structure.d.ts +1 -1
- package/dist/buffer/structure.js +1 -2
- package/dist/buffer/structure.js.map +1 -1
- package/dist/buffer/time-format-template.js.map +1 -1
- package/dist/collections/collection.d.ts +3 -7
- package/dist/collections/collection.js.map +1 -1
- package/dist/collections/dictionary.d.ts +1 -1
- package/dist/collections/dictionary.js +2 -1
- package/dist/collections/dictionary.js.map +1 -1
- package/dist/config/empty-log-factory.js.map +1 -1
- package/dist/config/get-js-fx-logger.d.ts +1 -3
- package/dist/config/get-js-fx-logger.js.map +1 -1
- package/dist/config/js-fix-config.d.ts +3 -3
- package/dist/config/js-fix-config.js.map +1 -1
- package/dist/config/js-fix-logger.d.ts +5 -5
- package/dist/config/js-fix-logger.js.map +1 -1
- package/dist/config/js-fix-winston-log-factory.d.ts +1 -1
- package/dist/config/js-fix-winston-log-factory.js.map +1 -1
- package/dist/config/winston-logger.js +7 -7
- package/dist/config/winston-logger.js.map +1 -1
- package/dist/dict-parser.js +27 -21
- package/dist/dict-parser.js.map +1 -1
- package/dist/dictionary/compiler/compiler-settings.js.map +1 -1
- package/dist/dictionary/compiler/compiler-type.js.map +1 -1
- package/dist/dictionary/compiler/enum-compiler.d.ts +2 -2
- package/dist/dictionary/compiler/enum-compiler.js +7 -10
- package/dist/dictionary/compiler/enum-compiler.js.map +1 -1
- package/dist/dictionary/compiler/msg-compiler.js +9 -10
- package/dist/dictionary/compiler/msg-compiler.js.map +1 -1
- package/dist/dictionary/compiler/standard-snippet.d.ts +1 -1
- package/dist/dictionary/compiler/standard-snippet.js +11 -10
- package/dist/dictionary/compiler/standard-snippet.js.map +1 -1
- package/dist/dictionary/contained/contained-component-field.d.ts +2 -2
- package/dist/dictionary/contained/contained-component-field.js +1 -1
- package/dist/dictionary/contained/contained-component-field.js.map +1 -1
- package/dist/dictionary/contained/contained-field-dispatcher.d.ts +3 -9
- package/dist/dictionary/contained/contained-field-dispatcher.js.map +1 -1
- package/dist/dictionary/contained/contained-field-set.d.ts +4 -4
- package/dist/dictionary/contained/contained-field-set.js +1 -1
- package/dist/dictionary/contained/contained-field-set.js.map +1 -1
- package/dist/dictionary/contained/contained-field.d.ts +1 -0
- package/dist/dictionary/contained/contained-field.js +3 -0
- package/dist/dictionary/contained/contained-field.js.map +1 -1
- package/dist/dictionary/contained/contained-group-field.d.ts +2 -2
- package/dist/dictionary/contained/contained-group-field.js +1 -1
- package/dist/dictionary/contained/contained-group-field.js.map +1 -1
- package/dist/dictionary/contained/contained-simple-field.d.ts +2 -2
- package/dist/dictionary/contained/contained-simple-field.js +1 -1
- package/dist/dictionary/contained/contained-simple-field.js.map +1 -1
- package/dist/dictionary/contained/field-dispatcher.d.ts +3 -9
- package/dist/dictionary/contained/field-dispatcher.js.map +1 -1
- package/dist/dictionary/contained/fields-dispatch.js +0 -1
- package/dist/dictionary/contained/fields-dispatch.js.map +1 -1
- package/dist/dictionary/definition/component-field-definition.d.ts +3 -3
- package/dist/dictionary/definition/component-field-definition.js +1 -1
- package/dist/dictionary/definition/component-field-definition.js.map +1 -1
- package/dist/dictionary/definition/fix-definitions.d.ts +3 -3
- package/dist/dictionary/definition/fix-definitions.js +3 -2
- package/dist/dictionary/definition/fix-definitions.js.map +1 -1
- package/dist/dictionary/definition/group-field-definition.d.ts +4 -4
- package/dist/dictionary/definition/group-field-definition.js +1 -1
- package/dist/dictionary/definition/group-field-definition.js.map +1 -1
- package/dist/dictionary/definition/message-definition.d.ts +2 -2
- package/dist/dictionary/definition/message-definition.js.map +1 -1
- package/dist/dictionary/definition/simple-field-definition.d.ts +4 -4
- package/dist/dictionary/definition/simple-field-definition.js +3 -2
- package/dist/dictionary/definition/simple-field-definition.js.map +1 -1
- package/dist/dictionary/dict-primitive.d.ts +1 -1
- package/dist/dictionary/dict-primitive.js.map +1 -1
- package/dist/dictionary/field-enum.js.map +1 -1
- package/dist/dictionary/fix-versions.js.map +1 -1
- package/dist/dictionary/parser/fix-repository/repository-xml-parser.js +20 -18
- package/dist/dictionary/parser/fix-repository/repository-xml-parser.js.map +1 -1
- package/dist/dictionary/parser/fix-repository/repository.js +24 -16
- package/dist/dictionary/parser/fix-repository/repository.js.map +1 -1
- package/dist/dictionary/parser/fixml/components-parser.d.ts +1 -1
- package/dist/dictionary/parser/fixml/components-parser.js +24 -15
- package/dist/dictionary/parser/fixml/components-parser.js.map +1 -1
- package/dist/dictionary/parser/fixml/fields-parser.d.ts +1 -1
- package/dist/dictionary/parser/fixml/fields-parser.js +5 -5
- package/dist/dictionary/parser/fixml/fields-parser.js.map +1 -1
- package/dist/dictionary/parser/fixml/fix-xsd-parser.js +3 -2
- package/dist/dictionary/parser/fixml/fix-xsd-parser.js.map +1 -1
- package/dist/dictionary/parser/fixml/include-graph.d.ts +1 -1
- package/dist/dictionary/parser/fixml/include-graph.js +58 -48
- package/dist/dictionary/parser/fixml/include-graph.js.map +1 -1
- package/dist/dictionary/parser/fixml/xsd-parser.d.ts +1 -1
- package/dist/dictionary/parser/fixml/xsd-parser.js +34 -23
- package/dist/dictionary/parser/fixml/xsd-parser.js.map +1 -1
- package/dist/dictionary/parser/quickfix/field-definition-parser.js +0 -2
- package/dist/dictionary/parser/quickfix/field-definition-parser.js.map +1 -1
- package/dist/dictionary/parser/quickfix/field-set-parser.js +3 -2
- package/dist/dictionary/parser/quickfix/field-set-parser.js.map +1 -1
- package/dist/dictionary/parser/quickfix/message-parser.js +10 -5
- package/dist/dictionary/parser/quickfix/message-parser.js.map +1 -1
- package/dist/dictionary/parser/quickfix/node-parser.js +14 -8
- package/dist/dictionary/parser/quickfix/node-parser.js.map +1 -1
- package/dist/dictionary/parser/quickfix/parse-context.d.ts +5 -5
- package/dist/dictionary/parser/quickfix/parse-context.js.map +1 -1
- package/dist/dictionary/parser/quickfix/quick-fix-xml-file-parser.js +22 -19
- package/dist/dictionary/parser/quickfix/quick-fix-xml-file-parser.js.map +1 -1
- package/dist/dictionary/set-reduce.js.map +1 -1
- package/dist/dictionary/type-dispatcher.d.ts +3 -9
- package/dist/dictionary/type-dispatcher.js.map +1 -1
- package/dist/dictionary/version-util.js +8 -8
- package/dist/dictionary/version-util.js.map +1 -1
- package/dist/jsfix-cmd.d.ts +3 -1
- package/dist/jsfix-cmd.js +134 -99
- package/dist/jsfix-cmd.js.map +1 -1
- package/dist/runtime/make-config.js +34 -14
- package/dist/runtime/make-config.js.map +1 -1
- package/dist/runtime/session-container.d.ts +3 -2
- package/dist/runtime/session-container.js +36 -16
- package/dist/runtime/session-container.js.map +1 -1
- package/dist/runtime/session-launcher.d.ts +10 -6
- package/dist/runtime/session-launcher.js +80 -43
- package/dist/runtime/session-launcher.js.map +1 -1
- package/dist/sample/http/oms/app.js +37 -7
- package/dist/sample/http/oms/app.js.map +1 -1
- package/dist/sample/http/oms/http-client.js +4 -2
- package/dist/sample/http/oms/http-client.js.map +1 -1
- package/dist/sample/http/oms/http-server.js +7 -1
- package/dist/sample/http/oms/http-server.js.map +1 -1
- package/dist/sample/http/oms/oms-factory.js +4 -3
- package/dist/sample/http/oms/oms-factory.js.map +1 -1
- package/dist/sample/tcp/qf-md/app.js +3 -3
- package/dist/sample/tcp/qf-md/app.js.map +1 -1
- package/dist/sample/tcp/qf-md/md-client.js +2 -1
- package/dist/sample/tcp/qf-md/md-client.js.map +1 -1
- package/dist/sample/tcp/qf-md/md-factory.js.map +1 -1
- package/dist/sample/tcp/qf-md/md-server.d.ts +1 -1
- package/dist/sample/tcp/qf-md/md-server.js +2 -1
- package/dist/sample/tcp/qf-md/md-server.js.map +1 -1
- package/dist/sample/tcp/recovering-skeleton/app.js +29 -16
- package/dist/sample/tcp/recovering-skeleton/app.js.map +1 -1
- package/dist/sample/tcp/recovering-skeleton/respawn-acceptor.d.ts +9 -1
- package/dist/sample/tcp/recovering-skeleton/respawn-acceptor.js +51 -2
- package/dist/sample/tcp/recovering-skeleton/respawn-acceptor.js.map +1 -1
- package/dist/sample/tcp/recovering-skeleton/skeleton-client.js +2 -1
- package/dist/sample/tcp/recovering-skeleton/skeleton-client.js.map +1 -1
- package/dist/sample/tcp/recovering-skeleton/skeleton-server.js +4 -3
- package/dist/sample/tcp/recovering-skeleton/skeleton-server.js.map +1 -1
- package/dist/sample/tcp/skeleton/app.js.map +1 -1
- package/dist/sample/tcp/skeleton/skeleton-session.js +7 -4
- package/dist/sample/tcp/skeleton/skeleton-session.js.map +1 -1
- package/dist/sample/tcp/tls-trade-capture/app.js.map +1 -1
- package/dist/sample/tcp/trade-capture/app-launcher.js +3 -3
- package/dist/sample/tcp/trade-capture/app-launcher.js.map +1 -1
- package/dist/sample/tcp/trade-capture/trade-capture-client.d.ts +1 -1
- package/dist/sample/tcp/trade-capture/trade-capture-client.js +2 -1
- package/dist/sample/tcp/trade-capture/trade-capture-client.js.map +1 -1
- package/dist/sample/tcp/trade-capture/trade-capture-server.js +7 -2
- package/dist/sample/tcp/trade-capture/trade-capture-server.js.map +1 -1
- package/dist/sample/tcp/trade-capture/trade-factory.js.map +1 -1
- package/dist/store/fix-msg-ascii-store-resend.js +18 -7
- package/dist/store/fix-msg-ascii-store-resend.js.map +1 -1
- package/dist/store/fix-msg-memory-store.d.ts +3 -3
- package/dist/store/fix-msg-memory-store.js +93 -69
- package/dist/store/fix-msg-memory-store.js.map +1 -1
- package/dist/store/fix-msg-store-record.d.ts +6 -6
- package/dist/store/fix-msg-store-record.js +2 -1
- package/dist/store/fix-msg-store-record.js.map +1 -1
- package/dist/store/fix-msg-store-state.js.map +1 -1
- package/dist/store/fix-msg-store.d.ts +7 -7
- package/dist/store/fix-msg-store.js.map +1 -1
- package/dist/test/ascii/ascii-encoder.test.js +93 -63
- package/dist/test/ascii/ascii-encoder.test.js.map +1 -1
- package/dist/test/ascii/ascii-parser.test.js +28 -24
- package/dist/test/ascii/ascii-parser.test.js.map +1 -1
- package/dist/test/ascii/ascii-segment.test.js +16 -11
- package/dist/test/ascii/ascii-segment.test.js.map +1 -1
- package/dist/test/ascii/ascii-store-replay.test.js +1 -1
- package/dist/test/ascii/ascii-store-replay.test.js.map +1 -1
- package/dist/test/ascii/ascii-tag-pos.test.js +7 -3
- package/dist/test/ascii/ascii-tag-pos.test.js.map +1 -1
- package/dist/test/ascii/execution-report.test.js +80 -72
- package/dist/test/ascii/execution-report.test.js.map +1 -1
- package/dist/test/ascii/fix-log-replay.test.js +1 -1
- package/dist/test/ascii/fix-log-replay.test.js.map +1 -1
- package/dist/test/ascii/fix-repo-dict.test.js +58 -55
- package/dist/test/ascii/fix-repo-dict.test.js.map +1 -1
- package/dist/test/ascii/includes.test.js +1 -1
- package/dist/test/ascii/includes.test.js.map +1 -1
- package/dist/test/ascii/logon.test.js +3 -3
- package/dist/test/ascii/logon.test.js.map +1 -1
- package/dist/test/ascii/memory-store.test.js +3 -3
- package/dist/test/ascii/memory-store.test.js.map +1 -1
- package/dist/test/ascii/qf-full-msg.test.js +19 -16
- package/dist/test/ascii/qf-full-msg.test.js.map +1 -1
- package/dist/test/ascii/repo-full-ascii-msg.test.js +11 -11
- package/dist/test/ascii/repo-full-ascii-msg.test.js.map +1 -1
- package/dist/test/ascii/session-state.test.js.map +1 -1
- package/dist/test/ascii/session.test.js +59 -42
- package/dist/test/ascii/session.test.js.map +1 -1
- package/dist/test/ascii/view-decode.test.js +30 -22
- package/dist/test/ascii/view-decode.test.js.map +1 -1
- package/dist/test/encode-proxy.test.js +29 -29
- package/dist/test/encode-proxy.test.js.map +1 -1
- package/dist/test/env/experiment.js +5 -5
- package/dist/test/env/experiment.js.map +1 -1
- package/dist/test/env/parsing-result.d.ts +3 -3
- package/dist/test/env/parsing-result.js.map +1 -1
- package/dist/test/env/setup.d.ts +2 -2
- package/dist/test/env/setup.js +13 -11
- package/dist/test/env/setup.js.map +1 -1
- package/dist/test/env/skeleton-runner.d.ts +1 -1
- package/dist/test/env/skeleton-runner.js +16 -16
- package/dist/test/env/skeleton-runner.js.map +1 -1
- package/dist/test/env/test-recovery.d.ts +3 -3
- package/dist/test/env/test-recovery.js +1 -1
- package/dist/test/env/test-recovery.js.map +1 -1
- package/dist/test/env/to-views.d.ts +1 -1
- package/dist/test/env/to-views.js +2 -2
- package/dist/test/env/to-views.js.map +1 -1
- package/dist/test/fixml/fixml-alloc-parse.test.js +32 -15
- package/dist/test/fixml/fixml-alloc-parse.test.js.map +1 -1
- package/dist/test/fixml/fixml-mkt-data-fut-parse.test.js +2 -2
- package/dist/test/fixml/fixml-mkt-data-fut-parse.test.js.map +1 -1
- package/dist/test/fixml/fixml-mkt-data-settle-parse.test.js +2 -1
- package/dist/test/fixml/fixml-mkt-data-settle-parse.test.js.map +1 -1
- package/dist/test/fixml/fixml-tc-bi-lateral-parse.test.js +19 -12
- package/dist/test/fixml/fixml-tc-bi-lateral-parse.test.js.map +1 -1
- package/dist/test/fixml/repo-full-fixml-msg.test.js +2 -2
- package/dist/test/fixml/repo-full-fixml-msg.test.js.map +1 -1
- package/dist/transport/ascii/ascii-msg-transmitter.d.ts +1 -1
- package/dist/transport/ascii/ascii-msg-transmitter.js +18 -8
- package/dist/transport/ascii/ascii-msg-transmitter.js.map +1 -1
- package/dist/transport/ascii/ascii-session-msg-factory.d.ts +3 -3
- package/dist/transport/ascii/ascii-session-msg-factory.js +4 -2
- package/dist/transport/ascii/ascii-session-msg-factory.js.map +1 -1
- package/dist/transport/ascii/ascii-session.d.ts +1 -1
- package/dist/transport/ascii/ascii-session.js +34 -16
- package/dist/transport/ascii/ascii-session.js.map +1 -1
- package/dist/transport/duplex/http-duplex.js +10 -8
- package/dist/transport/duplex/http-duplex.js.map +1 -1
- package/dist/transport/duplex/string-duplex.js +2 -2
- package/dist/transport/duplex/string-duplex.js.map +1 -1
- package/dist/transport/factory/msg-transport.js +21 -10
- package/dist/transport/factory/msg-transport.js.map +1 -1
- package/dist/transport/fix-acceptor.d.ts +3 -3
- package/dist/transport/fix-acceptor.js.map +1 -1
- package/dist/transport/fix-entity.d.ts +1 -1
- package/dist/transport/fix-entity.js.map +1 -1
- package/dist/transport/fix-initiator.d.ts +2 -2
- package/dist/transport/fix-initiator.js.map +1 -1
- package/dist/transport/fixml/fixml-msg-transmitter.d.ts +1 -1
- package/dist/transport/fixml/fixml-msg-transmitter.js +4 -2
- package/dist/transport/fixml/fixml-msg-transmitter.js.map +1 -1
- package/dist/transport/fixml/fixml-session-msg-factory.d.ts +1 -1
- package/dist/transport/fixml/fixml-session-msg-factory.js.map +1 -1
- package/dist/transport/fixml/fixml-session.js +7 -3
- package/dist/transport/fixml/fixml-session.js.map +1 -1
- package/dist/transport/http/html-options.d.ts +2 -2
- package/dist/transport/http/html-options.js.map +1 -1
- package/dist/transport/http/html-route.js.map +1 -1
- package/dist/transport/http/http-acceptor-listener.js +27 -23
- package/dist/transport/http/http-acceptor-listener.js.map +1 -1
- package/dist/transport/http/http-acceptor.d.ts +2 -2
- package/dist/transport/http/http-acceptor.js +52 -41
- package/dist/transport/http/http-acceptor.js.map +1 -1
- package/dist/transport/http/http-adapter.d.ts +3 -3
- package/dist/transport/http/http-adapter.js.map +1 -1
- package/dist/transport/http/http-initiator.js +35 -23
- package/dist/transport/http/http-initiator.js.map +1 -1
- package/dist/transport/http/http-json-sample-adapter.d.ts +4 -4
- package/dist/transport/http/http-json-sample-adapter.js +16 -11
- package/dist/transport/http/http-json-sample-adapter.js.map +1 -1
- package/dist/transport/http/http-transaction.js.map +1 -1
- package/dist/transport/http/http-transport-description.js.map +1 -1
- package/dist/transport/msg-application.js.map +1 -1
- package/dist/transport/msg-transmitter.d.ts +1 -1
- package/dist/transport/msg-transmitter.js +2 -2
- package/dist/transport/msg-transmitter.js.map +1 -1
- package/dist/transport/session/a-session-msg-factory.d.ts +3 -5
- package/dist/transport/session/a-session-msg-factory.js.map +1 -1
- package/dist/transport/session/fix-session-state.d.ts +8 -5
- package/dist/transport/session/fix-session-state.js +21 -16
- package/dist/transport/session/fix-session-state.js.map +1 -1
- package/dist/transport/session/fix-session.d.ts +19 -6
- package/dist/transport/session/fix-session.js +197 -110
- package/dist/transport/session/fix-session.js.map +1 -1
- package/dist/transport/session/make-fix-session.d.ts +1 -3
- package/dist/transport/session/make-fix-session.js.map +1 -1
- package/dist/transport/session/session-description.d.ts +1 -1
- package/dist/transport/session/session-description.js.map +1 -1
- package/dist/transport/session/session-msg-factory.d.ts +9 -9
- package/dist/transport/session/session-msg-factory.js.map +1 -1
- package/dist/transport/tcp/recovering-tcp-initiator.d.ts +4 -2
- package/dist/transport/tcp/recovering-tcp-initiator.js +62 -30
- package/dist/transport/tcp/recovering-tcp-initiator.js.map +1 -1
- package/dist/transport/tcp/tcp-acceptor-listener.js +28 -25
- package/dist/transport/tcp/tcp-acceptor-listener.js.map +1 -1
- package/dist/transport/tcp/tcp-acceptor.d.ts +2 -2
- package/dist/transport/tcp/tcp-acceptor.js +23 -15
- package/dist/transport/tcp/tcp-acceptor.js.map +1 -1
- package/dist/transport/tcp/tcp-initiator-connector.js +39 -30
- package/dist/transport/tcp/tcp-initiator-connector.js.map +1 -1
- package/dist/transport/tcp/tcp-initiator.d.ts +1 -1
- package/dist/transport/tcp/tcp-initiator.js +130 -104
- package/dist/transport/tcp/tcp-initiator.js.map +1 -1
- package/dist/transport/tcp/tcp-transport-description.js.map +1 -1
- package/dist/transport/tcp/tls-options-factory.d.ts +3 -3
- package/dist/transport/tcp/tls-options-factory.js +10 -3
- package/dist/transport/tcp/tls-options-factory.js.map +1 -1
- package/dist/transport/tcp/tls-options.d.ts +6 -2
- package/dist/transport/tcp/tls-options.js.map +1 -1
- package/dist/util/json-helper.js +2 -1
- package/dist/util/json-helper.js.map +1 -1
- package/dist/util/message-generator.d.ts +1 -1
- package/dist/util/message-generator.js +1 -1
- package/dist/util/message-generator.js.map +1 -1
- package/package.json +53 -48
- package/src/buffer/ascii/ascii-chars.ts +0 -1
- package/src/buffer/ascii/ascii-encoder.ts +18 -16
- package/src/buffer/ascii/ascii-parser-state.ts +4 -4
- package/src/buffer/ascii/ascii-parser.ts +16 -13
- package/src/buffer/ascii/ascii-segment-parser.ts +16 -15
- package/src/buffer/ascii/ascii-view.ts +22 -14
- package/src/buffer/ascii/itime-formatter.ts +12 -12
- package/src/buffer/ascii/time-formatter.ts +11 -12
- package/src/buffer/elastic-buffer.ts +5 -6
- package/src/buffer/encode-proxy.ts +6 -5
- package/src/buffer/encoder-state.ts +7 -3
- package/src/buffer/fixml/fixml-encoder.ts +10 -10
- package/src/buffer/fixml/fixml-parser.ts +80 -60
- package/src/buffer/fixml/fixml-view.ts +6 -7
- package/src/buffer/fixml/populated-attributes.ts +1 -1
- package/src/buffer/msg-encoder.ts +2 -1
- package/src/buffer/msg-view.ts +73 -53
- package/src/buffer/segment/segment-description.ts +13 -13
- package/src/buffer/segment/segment-summary.ts +3 -2
- package/src/buffer/structure.ts +6 -6
- package/src/buffer/time-format-template.ts +1 -1
- package/src/collections/collection.ts +2 -6
- package/src/collections/dictionary.ts +4 -5
- package/src/config/empty-log-factory.ts +1 -0
- package/src/config/get-js-fx-logger.ts +1 -2
- package/src/config/js-fix-config.ts +6 -6
- package/src/config/js-fix-logger.ts +14 -9
- package/src/config/js-fix-winston-log-factory.ts +2 -1
- package/src/config/winston-logger.ts +9 -7
- package/src/dictionary/compiler/compiler-settings.ts +5 -5
- package/src/dictionary/compiler/compiler-type.ts +1 -1
- package/src/dictionary/compiler/enum-compiler.ts +14 -16
- package/src/dictionary/compiler/msg-compiler.ts +15 -17
- package/src/dictionary/compiler/standard-snippet.ts +28 -27
- package/src/dictionary/contained/contained-component-field.ts +5 -4
- package/src/dictionary/contained/contained-field-dispatcher.ts +3 -3
- package/src/dictionary/contained/contained-field-set.ts +21 -21
- package/src/dictionary/contained/contained-field.ts +4 -1
- package/src/dictionary/contained/contained-group-field.ts +4 -4
- package/src/dictionary/contained/contained-simple-field.ts +5 -5
- package/src/dictionary/contained/field-dispatcher.ts +3 -3
- package/src/dictionary/contained/fields-dispatch.ts +0 -1
- package/src/dictionary/definition/component-field-definition.ts +4 -4
- package/src/dictionary/definition/fix-definitions.ts +8 -8
- package/src/dictionary/definition/group-field-definition.ts +5 -5
- package/src/dictionary/definition/message-definition.ts +4 -4
- package/src/dictionary/definition/simple-field-definition.ts +9 -9
- package/src/dictionary/dict-primitive.ts +2 -2
- package/src/dictionary/field-enum.ts +3 -2
- package/src/dictionary/fix-versions.ts +10 -10
- package/src/dictionary/parser/fix-repository/repository-xml-parser.ts +7 -8
- package/src/dictionary/parser/fix-repository/repository.ts +38 -30
- package/src/dictionary/parser/fixml/components-parser.ts +57 -51
- package/src/dictionary/parser/fixml/fields-parser.ts +9 -10
- package/src/dictionary/parser/fixml/fix-xsd-parser.ts +2 -3
- package/src/dictionary/parser/fixml/include-graph.ts +26 -21
- package/src/dictionary/parser/fixml/xsd-parser.ts +5 -5
- package/src/dictionary/parser/quickfix/field-definition-parser.ts +3 -5
- package/src/dictionary/parser/quickfix/field-set-parser.ts +2 -2
- package/src/dictionary/parser/quickfix/message-parser.ts +9 -6
- package/src/dictionary/parser/quickfix/node-parser.ts +20 -18
- package/src/dictionary/parser/quickfix/parse-context.ts +4 -4
- package/src/dictionary/parser/quickfix/quick-fix-xml-file-parser.ts +13 -15
- package/src/dictionary/set-reduce.ts +4 -3
- package/src/dictionary/type-dispatcher.ts +3 -3
- package/src/dictionary/version-util.ts +8 -8
- package/src/jsfix-cmd.ts +82 -58
- package/src/runtime/make-config.ts +15 -10
- package/src/runtime/session-container.ts +26 -18
- package/src/runtime/session-launcher.ts +58 -30
- package/src/sample/http/oms/app.ts +24 -7
- package/src/sample/http/oms/http-client.ts +3 -3
- package/src/sample/http/oms/http-server.ts +7 -1
- package/src/sample/http/oms/oms-factory.ts +3 -3
- package/src/sample/tcp/qf-md/app.ts +3 -3
- package/src/sample/tcp/qf-md/md-client.ts +1 -1
- package/src/sample/tcp/qf-md/md-factory.ts +3 -2
- package/src/sample/tcp/qf-md/md-server.ts +2 -2
- package/src/sample/tcp/recovering-skeleton/app.ts +37 -20
- package/src/sample/tcp/recovering-skeleton/respawn-acceptor.ts +66 -4
- package/src/sample/tcp/recovering-skeleton/skeleton-client.ts +2 -2
- package/src/sample/tcp/recovering-skeleton/skeleton-server.ts +4 -4
- package/src/sample/tcp/skeleton/app.ts +1 -1
- package/src/sample/tcp/skeleton/skeleton-session.ts +7 -7
- package/src/sample/tcp/tls-trade-capture/app.ts +1 -1
- package/src/sample/tcp/trade-capture/app-launcher.ts +4 -4
- package/src/sample/tcp/trade-capture/trade-capture-client.ts +7 -5
- package/src/sample/tcp/trade-capture/trade-capture-server.ts +10 -5
- package/src/sample/tcp/trade-capture/trade-factory.ts +1 -1
- package/src/store/fix-msg-ascii-store-resend.ts +5 -6
- package/src/store/fix-msg-memory-store.ts +22 -21
- package/src/store/fix-msg-store-record.ts +8 -8
- package/src/store/fix-msg-store-state.ts +2 -2
- package/src/store/fix-msg-store.ts +7 -7
- package/src/transport/ascii/ascii-msg-transmitter.ts +20 -14
- package/src/transport/ascii/ascii-session-msg-factory.ts +5 -6
- package/src/transport/ascii/ascii-session.ts +40 -29
- package/src/transport/duplex/http-duplex.ts +11 -9
- package/src/transport/duplex/string-duplex.ts +4 -5
- package/src/transport/factory/msg-transport.ts +5 -6
- package/src/transport/fix-acceptor.ts +2 -2
- package/src/transport/fix-entity.ts +1 -1
- package/src/transport/fix-initiator.ts +1 -1
- package/src/transport/fixml/fixml-msg-transmitter.ts +4 -3
- package/src/transport/fixml/fixml-session-msg-factory.ts +1 -2
- package/src/transport/fixml/fixml-session.ts +7 -6
- package/src/transport/http/html-options.ts +5 -5
- package/src/transport/http/html-route.ts +1 -1
- package/src/transport/http/http-acceptor-listener.ts +6 -4
- package/src/transport/http/http-acceptor.ts +36 -34
- package/src/transport/http/http-adapter.ts +3 -3
- package/src/transport/http/http-initiator.ts +22 -16
- package/src/transport/http/http-json-sample-adapter.ts +17 -16
- package/src/transport/http/http-transaction.ts +1 -1
- package/src/transport/http/http-transport-description.ts +1 -1
- package/src/transport/msg-application.ts +4 -4
- package/src/transport/msg-transmitter.ts +5 -5
- package/src/transport/session/a-session-msg-factory.ts +2 -3
- package/src/transport/session/fix-session-state.ts +24 -18
- package/src/transport/session/fix-session.ts +169 -96
- package/src/transport/session/make-fix-session.ts +1 -2
- package/src/transport/session/session-description.ts +2 -2
- package/src/transport/session/session-msg-factory.ts +9 -9
- package/src/transport/tcp/recovering-tcp-initiator.ts +39 -21
- package/src/transport/tcp/tcp-acceptor-listener.ts +4 -3
- package/src/transport/tcp/tcp-acceptor.ts +23 -22
- package/src/transport/tcp/tcp-initiator-connector.ts +16 -10
- package/src/transport/tcp/tcp-initiator.ts +57 -46
- package/src/transport/tcp/tcp-transport-description.ts +1 -1
- package/src/transport/tcp/tls-options-factory.ts +21 -8
- package/src/transport/tcp/tls-options.ts +11 -7
- package/src/util/json-helper.ts +6 -5
- package/src/util/message-generator.ts +6 -7
- package/tsconfig.json +2 -0
- package/.eslintrc.js +0 -6
- package/dist/buffer/ascii-chars.d.ts +0 -22
- package/dist/buffer/ascii-chars.js +0 -29
- package/dist/buffer/ascii-chars.js.map +0 -1
- package/dist/buffer/segment-description.d.ts +0 -33
- package/dist/buffer/segment-description.js +0 -80
- package/dist/buffer/segment-description.js.map +0 -1
- package/dist/buffer/segment-summary.d.ts +0 -13
- package/dist/buffer/segment-summary.js +0 -20
- package/dist/buffer/segment-summary.js.map +0 -1
- package/dist/buffer/tag-pos.d.ts +0 -12
- package/dist/buffer/tag-pos.js +0 -55
- package/dist/buffer/tag-pos.js.map +0 -1
- package/dist/buffer/tags.d.ts +0 -32
- package/dist/buffer/tags.js +0 -135
- package/dist/buffer/tags.js.map +0 -1
- package/dist/dictionary/fields-dispatch.d.ts +0 -13
- package/dist/dictionary/fields-dispatch.js +0 -40
- package/dist/dictionary/fields-dispatch.js.map +0 -1
- package/dist/sample/launcher.d.ts +0 -12
- package/dist/sample/launcher.js +0 -63
- package/dist/sample/launcher.js.map +0 -1
- package/dist/test/ascii-encoder.test.d.ts +0 -1
- package/dist/test/ascii-encoder.test.js +0 -529
- package/dist/test/ascii-encoder.test.js.map +0 -1
- package/dist/test/ascii-parser.test.d.ts +0 -1
- package/dist/test/ascii-parser.test.js +0 -142
- package/dist/test/ascii-parser.test.js.map +0 -1
- package/dist/test/ascii-segment.test.d.ts +0 -1
- package/dist/test/ascii-segment.test.js +0 -107
- package/dist/test/ascii-segment.test.js.map +0 -1
- package/dist/test/ascii-store-replay.test.d.ts +0 -1
- package/dist/test/ascii-store-replay.test.js +0 -121
- package/dist/test/ascii-store-replay.test.js.map +0 -1
- package/dist/test/ascii-tag-pos.test.d.ts +0 -1
- package/dist/test/ascii-tag-pos.test.js +0 -105
- package/dist/test/ascii-tag-pos.test.js.map +0 -1
- package/dist/test/execution-report.test.d.ts +0 -1
- package/dist/test/execution-report.test.js +0 -490
- package/dist/test/execution-report.test.js.map +0 -1
- package/dist/test/fix-log-replay.test.d.ts +0 -1
- package/dist/test/fix-log-replay.test.js +0 -45
- package/dist/test/fix-log-replay.test.js.map +0 -1
- package/dist/test/fix-repo-dict.test.d.ts +0 -1
- package/dist/test/fix-repo-dict.test.js +0 -127
- package/dist/test/fix-repo-dict.test.js.map +0 -1
- package/dist/test/fixml-alloc-parse.test.d.ts +0 -1
- package/dist/test/fixml-alloc-parse.test.js +0 -160
- package/dist/test/fixml-alloc-parse.test.js.map +0 -1
- package/dist/test/fixml-mkt-data-fut-parse.test.d.ts +0 -1
- package/dist/test/fixml-mkt-data-fut-parse.test.js +0 -60
- package/dist/test/fixml-mkt-data-fut-parse.test.js.map +0 -1
- package/dist/test/fixml-mkt-data-settle-parse.test.d.ts +0 -1
- package/dist/test/fixml-mkt-data-settle-parse.test.js +0 -33
- package/dist/test/fixml-mkt-data-settle-parse.test.js.map +0 -1
- package/dist/test/fixml-tc-bi-lateral-parse.test.d.ts +0 -1
- package/dist/test/fixml-tc-bi-lateral-parse.test.js +0 -96
- package/dist/test/fixml-tc-bi-lateral-parse.test.js.map +0 -1
- package/dist/test/includes.test.d.ts +0 -1
- package/dist/test/includes.test.js +0 -42
- package/dist/test/includes.test.js.map +0 -1
- package/dist/test/logon.test.d.ts +0 -1
- package/dist/test/logon.test.js +0 -93
- package/dist/test/logon.test.js.map +0 -1
- package/dist/test/memory-store.test.d.ts +0 -1
- package/dist/test/memory-store.test.js +0 -75
- package/dist/test/memory-store.test.js.map +0 -1
- package/dist/test/qf-full-msg.test.d.ts +0 -1
- package/dist/test/qf-full-msg.test.js +0 -76
- package/dist/test/qf-full-msg.test.js.map +0 -1
- package/dist/test/repo-full-ascii-msg.test.d.ts +0 -1
- package/dist/test/repo-full-ascii-msg.test.js +0 -82
- package/dist/test/repo-full-ascii-msg.test.js.map +0 -1
- package/dist/test/repo-full-fixml-msg.test.d.ts +0 -1
- package/dist/test/repo-full-fixml-msg.test.js +0 -136
- package/dist/test/repo-full-fixml-msg.test.js.map +0 -1
- package/dist/test/session-state.test.d.ts +0 -1
- package/dist/test/session-state.test.js +0 -74
- package/dist/test/session-state.test.js.map +0 -1
- package/dist/test/session.test.d.ts +0 -1
- package/dist/test/session.test.js +0 -412
- package/dist/test/session.test.js.map +0 -1
- package/dist/test/time-formatter.test.d.ts +0 -1
- package/dist/test/time-formatter.test.js +0 -78
- package/dist/test/time-formatter.test.js.map +0 -1
- package/dist/test/to-views.d.ts +0 -11
- package/dist/test/to-views.js +0 -55
- package/dist/test/to-views.js.map +0 -1
- package/dist/test/view-decode.test.d.ts +0 -1
- package/dist/test/view-decode.test.js +0 -208
- package/dist/test/view-decode.test.js.map +0 -1
- package/dist/transport/a-session-msg-factory.d.ts +0 -23
- package/dist/transport/a-session-msg-factory.js +0 -58
- package/dist/transport/a-session-msg-factory.js.map +0 -1
- package/dist/transport/ascii-session-msg-factory.d.ts +0 -16
- package/dist/transport/ascii-session-msg-factory.js +0 -47
- package/dist/transport/ascii-session-msg-factory.js.map +0 -1
- package/dist/transport/fix-msg-factory.d.ts +0 -15
- package/dist/transport/fix-msg-factory.js +0 -3
- package/dist/transport/fix-msg-factory.js.map +0 -1
- package/dist/transport/fix-session-state-args.d.ts +0 -8
- package/dist/transport/fix-session-state-args.js +0 -3
- package/dist/transport/fix-session-state-args.js.map +0 -1
- package/dist/transport/fix-session-state.d.ts +0 -32
- package/dist/transport/fix-session-state.js +0 -133
- package/dist/transport/fix-session-state.js.map +0 -1
- package/dist/transport/fix-session.d.ts +0 -50
- package/dist/transport/fix-session.js +0 -290
- package/dist/transport/fix-session.js.map +0 -1
- package/dist/transport/fixml/acceptor.d.ts +0 -3
- package/dist/transport/fixml/acceptor.js +0 -38
- package/dist/transport/fixml/acceptor.js.map +0 -1
- package/dist/transport/fixml-session-msg-factory.d.ts +0 -13
- package/dist/transport/fixml-session-msg-factory.js +0 -68
- package/dist/transport/fixml-session-msg-factory.js.map +0 -1
- package/dist/transport/make-config.d.ts +0 -4
- package/dist/transport/make-config.js +0 -31
- package/dist/transport/make-config.js.map +0 -1
- package/dist/transport/make-fix-session.d.ts +0 -5
- package/dist/transport/make-fix-session.js +0 -3
- package/dist/transport/make-fix-session.js.map +0 -1
- package/dist/transport/make-fixl-session.d.ts +0 -5
- package/dist/transport/make-fixl-session.js +0 -3
- package/dist/transport/make-fixl-session.js.map +0 -1
- package/dist/transport/msg-transport.d.ts +0 -14
- package/dist/transport/msg-transport.js +0 -57
- package/dist/transport/msg-transport.js.map +0 -1
- package/dist/transport/session-description.d.ts +0 -64
- package/dist/transport/session-description.js +0 -3
- package/dist/transport/session-description.js.map +0 -1
- package/dist/transport/session-msg-factory.d.ts +0 -6
- package/dist/transport/session-msg-factory.js +0 -13
- package/dist/transport/session-msg-factory.js.map +0 -1
- package/dist/transport/session-state.d.ts +0 -25
- package/dist/transport/session-state.js +0 -30
- package/dist/transport/session-state.js.map +0 -1
- package/dist/transport/tcp/acceptor.d.ts +0 -3
- package/dist/transport/tcp/acceptor.js +0 -40
- package/dist/transport/tcp/acceptor.js.map +0 -1
- package/dist/transport/tcp/initiator.d.ts +0 -3
- package/dist/transport/tcp/initiator.js +0 -67
- package/dist/transport/tcp/initiator.js.map +0 -1
- package/dist/util/dictionary-definitions.d.ts +0 -8
- package/dist/util/dictionary-definitions.js +0 -51
- package/dist/util/dictionary-definitions.js.map +0 -1
- package/tslint.json +0 -3
|
@@ -11,8 +11,8 @@ import { SegmentType } from '../../buffer/segment/segment-type'
|
|
|
11
11
|
|
|
12
12
|
export abstract class FixSession extends events.EventEmitter {
|
|
13
13
|
public logReceivedMsgs: boolean = false
|
|
14
|
-
protected timer: NodeJS.Timer = null
|
|
15
|
-
protected transport: MsgTransport = null
|
|
14
|
+
protected timer: NodeJS.Timer | null = null
|
|
15
|
+
protected transport: MsgTransport | null = null
|
|
16
16
|
public manageSession: boolean = true
|
|
17
17
|
public checkMsgIntegrity: boolean = false
|
|
18
18
|
protected readonly me: string
|
|
@@ -27,37 +27,75 @@ export abstract class FixSession extends events.EventEmitter {
|
|
|
27
27
|
protected constructor (public readonly config: IJsFixConfig) {
|
|
28
28
|
super()
|
|
29
29
|
const description = config.description
|
|
30
|
-
this.me = description
|
|
30
|
+
this.me = description?.application?.name ?? 'me'
|
|
31
31
|
this.sessionState = new FixSessionState(
|
|
32
|
-
{
|
|
33
|
-
|
|
32
|
+
{
|
|
33
|
+
heartBeat: config.description.HeartBtInt,
|
|
34
|
+
lastPeerMsgSeqNum: config.description.LastReceivedSeqNum
|
|
35
|
+
})
|
|
34
36
|
this.sessionLogger = config.logFactory.logger(`${this.me}:FixSession`)
|
|
35
|
-
this.initiator = description
|
|
37
|
+
this.initiator = description?.application?.type === 'initiator'
|
|
36
38
|
this.acceptor = !this.initiator
|
|
37
39
|
this.checkMsgIntegrity = this.acceptor
|
|
38
40
|
this.sessionState.compId = description.SenderCompId
|
|
39
41
|
}
|
|
40
42
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
+
stateStr (theState: SessionState): string {
|
|
44
|
+
return SessionState[theState]
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
assignState (newState: SessionState): void {
|
|
48
|
+
const currentState = this.sessionState.state
|
|
49
|
+
const currentStateStr = this.stateStr(currentState)
|
|
43
50
|
const logger = this.sessionLogger
|
|
44
|
-
const
|
|
45
|
-
const msg = `current state ${SessionState[prevState]} (${prevState}) moves to ${SessionState[state]} (${state})`
|
|
51
|
+
const msg = `current state ${currentStateStr} (${currentState}) moves to ${SessionState[newState]} (${newState})`
|
|
46
52
|
logger.info(msg)
|
|
47
|
-
this.sessionState.state =
|
|
53
|
+
this.sessionState.state = newState
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
public setState (state: SessionState): void {
|
|
57
|
+
const logger = this.sessionLogger
|
|
58
|
+
const currentState = this.sessionState.state
|
|
59
|
+
const currentStateStr = this.stateStr(currentState)
|
|
60
|
+
if (state === currentState) return
|
|
61
|
+
switch (currentState) {
|
|
62
|
+
case SessionState.ConfirmingLogout:
|
|
63
|
+
case SessionState.Stopped:
|
|
64
|
+
if (state !== SessionState.NetworkConnectionEstablished) {
|
|
65
|
+
logger.info(`ignoring request to change state as now already in ${currentStateStr}`)
|
|
66
|
+
} else {
|
|
67
|
+
this.assignState(state)
|
|
68
|
+
}
|
|
69
|
+
break
|
|
70
|
+
|
|
71
|
+
default: {
|
|
72
|
+
this.assignState(state)
|
|
73
|
+
}
|
|
74
|
+
}
|
|
48
75
|
}
|
|
49
76
|
|
|
50
77
|
public getState (): SessionState {
|
|
51
78
|
return this.sessionState.state
|
|
52
79
|
}
|
|
53
80
|
|
|
54
|
-
public
|
|
55
|
-
|
|
81
|
+
public lastSentSeqNum (): number {
|
|
82
|
+
return this.sessionState.lastSentSeqNum()
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
public lastPeerSeqNum (): number {
|
|
86
|
+
return this.sessionState.lastPeerMsgSeqNum
|
|
56
87
|
}
|
|
57
88
|
|
|
58
|
-
|
|
89
|
+
public sendLogon (): void {
|
|
90
|
+
const lo = this.config.factory?.logon()
|
|
91
|
+
if (lo) {
|
|
92
|
+
this.send(this.requestLogonType, lo)
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
private async waitPromise (): Promise<number> {
|
|
59
97
|
const logger = this.sessionLogger
|
|
60
|
-
return new Promise<any>((
|
|
98
|
+
return await new Promise<any>((resolve, reject) => {
|
|
61
99
|
if (this.initiator) {
|
|
62
100
|
logger.debug(`initiator sending logon state = ${this.stateString()}`)
|
|
63
101
|
this.sendLogon()
|
|
@@ -73,12 +111,12 @@ export abstract class FixSession extends events.EventEmitter {
|
|
|
73
111
|
})
|
|
74
112
|
|
|
75
113
|
this.on('done', () => {
|
|
76
|
-
|
|
114
|
+
resolve(this.transport?.id)
|
|
77
115
|
})
|
|
78
116
|
})
|
|
79
117
|
}
|
|
80
118
|
|
|
81
|
-
public run (transport: MsgTransport): Promise<number> {
|
|
119
|
+
public async run (transport: MsgTransport): Promise<number> {
|
|
82
120
|
const logger = this.sessionLogger
|
|
83
121
|
if (this.transport) {
|
|
84
122
|
logger.info(`reset from previous transport. state ${this.stateString()}`)
|
|
@@ -86,18 +124,13 @@ export abstract class FixSession extends events.EventEmitter {
|
|
|
86
124
|
}
|
|
87
125
|
this.transport = transport
|
|
88
126
|
this.subscribe()
|
|
89
|
-
return this.waitPromise()
|
|
127
|
+
return await this.waitPromise()
|
|
90
128
|
}
|
|
91
129
|
|
|
92
|
-
protected
|
|
130
|
+
protected expectedEndState (): boolean {
|
|
93
131
|
switch (this.sessionState.state) {
|
|
94
|
-
case SessionState.ActiveNormalSession:
|
|
95
|
-
case SessionState.ReceiveLogout:
|
|
96
132
|
case SessionState.Stopped:
|
|
97
133
|
case SessionState.ConfirmingLogout:
|
|
98
|
-
case SessionState.HandleResendRequest:
|
|
99
|
-
case SessionState.AwaitingProcessingResponseToTestRequest:
|
|
100
|
-
case SessionState.AwaitingProcessingResponseToResendRequest:
|
|
101
134
|
return true
|
|
102
135
|
|
|
103
136
|
default:
|
|
@@ -105,65 +138,97 @@ export abstract class FixSession extends events.EventEmitter {
|
|
|
105
138
|
}
|
|
106
139
|
}
|
|
107
140
|
|
|
108
|
-
protected
|
|
141
|
+
protected rxOnEnd (): void {
|
|
142
|
+
const logger = this.sessionLogger
|
|
143
|
+
logger.info(`rx end received sessionState = [${this.sessionState.toString()}]`)
|
|
144
|
+
const expectedState = this.expectedEndState()
|
|
145
|
+
if (expectedState) {
|
|
146
|
+
logger.info(`rx receives end state = ${this.stateString()} - stop session`)
|
|
147
|
+
this.stop()
|
|
148
|
+
} else {
|
|
149
|
+
this.setState(SessionState.DetectBrokenNetworkConnection)
|
|
150
|
+
const e = new Error(`unexpected state - transport failed? = ${this.stateString()}`)
|
|
151
|
+
logger.info(`rx error ${e.message}`)
|
|
152
|
+
this.terminate(e)
|
|
153
|
+
}
|
|
154
|
+
}
|
|
109
155
|
|
|
110
|
-
|
|
156
|
+
protected rxOnMsg (msgType: string, view: MsgView): void {
|
|
111
157
|
const logger = this.sessionLogger
|
|
112
158
|
|
|
113
|
-
|
|
114
|
-
|
|
159
|
+
if (this.logReceivedMsgs) {
|
|
160
|
+
const name = view.segment.type !== SegmentType.Unknown ? view?.segment?.set?.name : 'unknown'
|
|
161
|
+
logger.info(`${msgType}: ${name}`)
|
|
162
|
+
logger.info(`${view.toString()}`)
|
|
163
|
+
}
|
|
164
|
+
this.sessionState.lastReceivedAt = new Date()
|
|
165
|
+
if (this.manageSession) {
|
|
166
|
+
this.onMsg(msgType, view)
|
|
167
|
+
} else {
|
|
168
|
+
this.checkForwardMsg(msgType, view)
|
|
169
|
+
}
|
|
170
|
+
}
|
|
115
171
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
}
|
|
122
|
-
this.sessionState.lastReceivedAt = new Date()
|
|
123
|
-
if (this.manageSession) {
|
|
124
|
-
this.onMsg(msgType, view)
|
|
125
|
-
} else {
|
|
126
|
-
this.checkForwardMsg(msgType, view)
|
|
127
|
-
}
|
|
128
|
-
})
|
|
172
|
+
protected rxOnDone (): void {
|
|
173
|
+
const logger = this.sessionLogger
|
|
174
|
+
logger.info('rx done received')
|
|
175
|
+
this.done()
|
|
176
|
+
}
|
|
129
177
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
178
|
+
protected rxOnError (e: Error): void {
|
|
179
|
+
const logger = this.sessionLogger
|
|
180
|
+
logger.warning(`rx error event: ${e.message} ${e.stack ?? ''}`)
|
|
181
|
+
this.terminate(e)
|
|
182
|
+
}
|
|
134
183
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
184
|
+
protected rxOnDecoded (msgType: string, data: ElasticBuffer, ptr: number): void {
|
|
185
|
+
const logger = this.sessionLogger
|
|
186
|
+
logger.debug(`rx: [${msgType}] ${ptr} bytes`)
|
|
187
|
+
this.onDecoded(msgType, data.toString(ptr))
|
|
188
|
+
}
|
|
139
189
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
this.done()
|
|
146
|
-
} else {
|
|
147
|
-
const e = new Error(`unexpected state - transport failed? = ${this.stateString()}`)
|
|
148
|
-
logger.info(`rx error ${e.message}`)
|
|
149
|
-
this.terminate(e)
|
|
150
|
-
}
|
|
151
|
-
})
|
|
190
|
+
protected txOnError (e: Error): void {
|
|
191
|
+
const logger = this.sessionLogger
|
|
192
|
+
logger.warning(`tx error event: ${e.message} ${e.stack ?? ''}`)
|
|
193
|
+
this.terminate(e)
|
|
194
|
+
}
|
|
152
195
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
})
|
|
196
|
+
protected txOnEncoded (msgType: string, data: string, hdr: ILooseObject): void {
|
|
197
|
+
const logger = this.sessionLogger
|
|
198
|
+
this.sessionState.lastHeader = hdr
|
|
199
|
+
logger.debug(`tx: [${msgType}] ${data.length} bytes seqNo = ${this.lastSentSeqNum()}`)
|
|
200
|
+
this.onEncoded(msgType, data)
|
|
201
|
+
}
|
|
157
202
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
203
|
+
protected unsubscribe (): void {
|
|
204
|
+
const logger = this.sessionLogger
|
|
205
|
+
logger.info(`unsubscribe sessionState = [${this.sessionState.toString()}]`)
|
|
206
|
+
const transport = this.transport
|
|
207
|
+
const rx = transport?.receiver
|
|
208
|
+
const tx = transport?.transmitter
|
|
209
|
+
|
|
210
|
+
rx?.removeListener('msg', this.rxOnMsg)
|
|
211
|
+
rx?.removeListener('error', this.rxOnError)
|
|
212
|
+
rx?.removeListener('done', this.rxOnDone)
|
|
213
|
+
rx?.removeListener('end', this.rxOnEnd)
|
|
214
|
+
rx?.removeListener('decoded', this.rxOnDecoded)
|
|
215
|
+
tx?.removeListener('error', this.txOnError)
|
|
216
|
+
tx?.removeListener('encoded', this.txOnEncoded)
|
|
217
|
+
}
|
|
162
218
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
219
|
+
protected subscribe (): void {
|
|
220
|
+
const transport = this.transport
|
|
221
|
+
|
|
222
|
+
const rx = transport?.receiver
|
|
223
|
+
const tx = transport?.transmitter
|
|
224
|
+
const inst = this
|
|
225
|
+
rx?.on('msg', (msgType: string, view: MsgView) => inst.rxOnMsg(msgType, view))
|
|
226
|
+
rx?.on('error', (e: Error) => inst.rxOnError(e))
|
|
227
|
+
rx?.on('done', () => inst.rxOnDone())
|
|
228
|
+
rx?.on('end', () => inst.rxOnEnd())
|
|
229
|
+
rx?.on('decoded', (msgType: string, data: ElasticBuffer, ptr: number) => inst.rxOnDecoded(msgType, data, ptr))
|
|
230
|
+
tx?.on('error', (e: Error) => inst.txOnError(e))
|
|
231
|
+
tx?.on('encoded', (msgType: string, data: string, hdr: ILooseObject) => inst.txOnEncoded(msgType, data, hdr))
|
|
167
232
|
}
|
|
168
233
|
|
|
169
234
|
protected validStateApplicationMsg (): boolean {
|
|
@@ -191,12 +256,18 @@ export abstract class FixSession extends events.EventEmitter {
|
|
|
191
256
|
this.onApplicationMsg(msgType, view)
|
|
192
257
|
}
|
|
193
258
|
|
|
194
|
-
|
|
195
|
-
if (this.sessionState.state === SessionState.Stopped) return
|
|
196
|
-
this.sessionLogger.error(error)
|
|
259
|
+
private stopTimer (): void {
|
|
197
260
|
if (this.timer) {
|
|
261
|
+
this.sessionLogger.info('stopTimer')
|
|
198
262
|
clearInterval(this.timer)
|
|
263
|
+
this.timer = null
|
|
199
264
|
}
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
protected terminate (error: Error): void {
|
|
268
|
+
if (this.sessionState.state === SessionState.Stopped) return
|
|
269
|
+
this.sessionLogger.error(error)
|
|
270
|
+
this.stopTimer()
|
|
200
271
|
if (this.transport) {
|
|
201
272
|
this.transport.end()
|
|
202
273
|
}
|
|
@@ -205,7 +276,7 @@ export abstract class FixSession extends events.EventEmitter {
|
|
|
205
276
|
this.emit('error', error)
|
|
206
277
|
}
|
|
207
278
|
|
|
208
|
-
protected peerLogout (view: MsgView) {
|
|
279
|
+
protected peerLogout (view: MsgView): void {
|
|
209
280
|
const msg = view.getString(MsgTag.Text)
|
|
210
281
|
const state = this.sessionState.state
|
|
211
282
|
switch (state) {
|
|
@@ -225,7 +296,7 @@ export abstract class FixSession extends events.EventEmitter {
|
|
|
225
296
|
}
|
|
226
297
|
}
|
|
227
298
|
|
|
228
|
-
protected send (msgType: string, obj: ILooseObject) {
|
|
299
|
+
protected send (msgType: string, obj: ILooseObject): void {
|
|
229
300
|
const state = this.sessionState.state
|
|
230
301
|
switch (state) {
|
|
231
302
|
case SessionState.Stopped: {
|
|
@@ -235,16 +306,19 @@ export abstract class FixSession extends events.EventEmitter {
|
|
|
235
306
|
|
|
236
307
|
default: {
|
|
237
308
|
this.sessionState.LastSentAt = new Date()
|
|
238
|
-
this.transport
|
|
309
|
+
this.transport?.transmitter.send(msgType, obj)
|
|
239
310
|
break
|
|
240
311
|
}
|
|
241
312
|
}
|
|
242
313
|
}
|
|
243
314
|
|
|
244
|
-
protected sendLogout (msg: string) {
|
|
315
|
+
protected sendLogout (msg: string): void {
|
|
245
316
|
const factory = this.config.factory
|
|
246
317
|
this.sessionLogger.info(`sending logout with ${msg}`)
|
|
247
|
-
|
|
318
|
+
const lo = factory?.logout(this.requestLogoutType, msg)
|
|
319
|
+
if (lo) {
|
|
320
|
+
this.send(this.requestLogoutType, lo)
|
|
321
|
+
}
|
|
248
322
|
}
|
|
249
323
|
|
|
250
324
|
protected sessionLogout (): void {
|
|
@@ -267,7 +341,8 @@ export abstract class FixSession extends events.EventEmitter {
|
|
|
267
341
|
}
|
|
268
342
|
|
|
269
343
|
case SessionState.ConfirmingLogout: {
|
|
270
|
-
// this instance responds to
|
|
344
|
+
// this instance responds to log out
|
|
345
|
+
this.setState(SessionState.ConfirmingLogout)
|
|
271
346
|
sessionState.logoutSentAt = new Date()
|
|
272
347
|
const msg = `${this.me} confirming logout`
|
|
273
348
|
this.sessionLogger.info(msg)
|
|
@@ -291,7 +366,7 @@ export abstract class FixSession extends events.EventEmitter {
|
|
|
291
366
|
}
|
|
292
367
|
|
|
293
368
|
case SessionState.Stopped:
|
|
294
|
-
this.sessionLogger.info(
|
|
369
|
+
this.sessionLogger.info('done. session is now stopped')
|
|
295
370
|
break
|
|
296
371
|
|
|
297
372
|
default: {
|
|
@@ -302,25 +377,23 @@ export abstract class FixSession extends events.EventEmitter {
|
|
|
302
377
|
this.sessionLogger.info(`done. check logout sequence state ${this.stateString()}`)
|
|
303
378
|
}
|
|
304
379
|
|
|
305
|
-
public reset (): void {
|
|
306
|
-
|
|
307
|
-
clearInterval(this.timer)
|
|
308
|
-
}
|
|
380
|
+
public reset (resetSeqNum?: number | null): void {
|
|
381
|
+
this.stopTimer()
|
|
309
382
|
this.transport = null
|
|
310
|
-
const
|
|
311
|
-
|
|
383
|
+
const resetFlag = this.config.description.ResetSeqNumFlag
|
|
384
|
+
const seqNum = resetFlag ? 0 : resetSeqNum ?? this.sessionState.lastPeerMsgSeqNum
|
|
385
|
+
this.sessionState.reset(seqNum) // from header def ... eventually
|
|
312
386
|
this.setState(SessionState.NetworkConnectionEstablished)
|
|
313
387
|
}
|
|
314
388
|
|
|
315
|
-
protected stop (error: Error = null): void {
|
|
389
|
+
protected stop (error: Error | null = null): void {
|
|
316
390
|
if (this.sessionState.state === SessionState.Stopped) {
|
|
317
391
|
return
|
|
318
392
|
}
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
this.
|
|
323
|
-
this.transport.end()
|
|
393
|
+
this.stopTimer()
|
|
394
|
+
this.unsubscribe()
|
|
395
|
+
this.sessionLogger.info('stop: kill transport')
|
|
396
|
+
this.transport?.end()
|
|
324
397
|
if (error) {
|
|
325
398
|
this.sessionLogger.info(`stop: emit error ${error.message}`)
|
|
326
399
|
this.emit('error', error)
|
|
@@ -329,7 +402,7 @@ export abstract class FixSession extends events.EventEmitter {
|
|
|
329
402
|
}
|
|
330
403
|
|
|
331
404
|
this.setState(SessionState.Stopped)
|
|
332
|
-
this.onStopped(error)
|
|
405
|
+
this.onStopped(error ?? undefined)
|
|
333
406
|
this.transport = null
|
|
334
407
|
}
|
|
335
408
|
|
|
@@ -9,10 +9,10 @@ export interface ISessionDescription {
|
|
|
9
9
|
readonly SenderCompId: string
|
|
10
10
|
readonly TargetCompID: string
|
|
11
11
|
readonly ResetSeqNumFlag: boolean
|
|
12
|
-
|
|
12
|
+
LastSentSeqNum?: number
|
|
13
13
|
readonly LastReceivedSeqNum?: number
|
|
14
14
|
readonly SenderSubID: string
|
|
15
15
|
readonly TargetSubID: string
|
|
16
16
|
readonly BeginString: string
|
|
17
|
-
readonly BodyLengthChars?: number
|
|
17
|
+
readonly BodyLengthChars?: number
|
|
18
18
|
}
|
|
@@ -4,13 +4,13 @@ import { ISessionDescription } from './session-description'
|
|
|
4
4
|
|
|
5
5
|
export interface ISessionMsgFactory {
|
|
6
6
|
description: ISessionDescription
|
|
7
|
-
reject (msgType: string, seqNo: number, msg: string, reason: number)
|
|
8
|
-
logout (msgType: string, text: string)
|
|
9
|
-
logon (userRequestId?: string, isResponse?: boolean)
|
|
10
|
-
testRequest (reqId?: string)
|
|
11
|
-
resendRequest (from: number, to: number)
|
|
12
|
-
sequenceReset (newSeq: number, gapFill?: boolean)
|
|
13
|
-
heartbeat (testReqId: string)
|
|
14
|
-
header (msgType?: string, seqNum?: number, time?: Date, overrideData?: Partial<IStandardHeader>)
|
|
15
|
-
trailer (checksum: number)
|
|
7
|
+
reject: (msgType: string, seqNo: number, msg: string, reason: number) => ILooseObject
|
|
8
|
+
logout: (msgType: string, text: string) => ILooseObject
|
|
9
|
+
logon: (userRequestId?: string, isResponse?: boolean) => ILooseObject
|
|
10
|
+
testRequest: (reqId?: string) => ILooseObject
|
|
11
|
+
resendRequest: (from: number, to: number) => ILooseObject
|
|
12
|
+
sequenceReset: (newSeq: number, gapFill?: boolean) => ILooseObject
|
|
13
|
+
heartbeat: (testReqId: string) => ILooseObject
|
|
14
|
+
header: (msgType?: string, seqNum?: number, time?: Date, overrideData?: Partial<IStandardHeader>) => ILooseObject
|
|
15
|
+
trailer: (checksum: number) => ILooseObject
|
|
16
16
|
}
|
|
@@ -11,38 +11,39 @@ import { IMsgApplication } from '../msg-application'
|
|
|
11
11
|
import { FixEntity } from '../fix-entity'
|
|
12
12
|
|
|
13
13
|
/*
|
|
14
|
-
create one application session instance - and recover a lost transport. Hence the application
|
|
14
|
+
create one application session instance - and recover a lost transport. Hence, the application
|
|
15
15
|
will automatically re-connected and the "message recovery" policy enacted i.e. replay from
|
|
16
16
|
last known sequence number or sequence reset.
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
19
|
@injectable()
|
|
20
20
|
export class RecoveringTcpInitiator extends FixEntity {
|
|
21
|
-
public tcp: ITcpTransportDescription
|
|
21
|
+
public tcp: ITcpTransportDescription | null
|
|
22
22
|
public session: FixSession
|
|
23
23
|
private readonly logger: IJsFixLogger
|
|
24
|
-
private application: IMsgApplication
|
|
24
|
+
private readonly application: IMsgApplication | null
|
|
25
25
|
private initiator: TcpInitiator
|
|
26
26
|
private transport: MsgTransport
|
|
27
|
-
private th: Timeout = null
|
|
27
|
+
private th: Timeout | null = null
|
|
28
28
|
public recoveryAttemptSecs: number = 5
|
|
29
29
|
public backoffFailConnectSecs: number = 30
|
|
30
30
|
|
|
31
31
|
constructor (@inject(DITokens.IJsFixConfig) public readonly jsFixConfig: IJsFixConfig) {
|
|
32
32
|
super(jsFixConfig)
|
|
33
|
-
this.application = this.jsFixConfig.description.application
|
|
34
|
-
|
|
33
|
+
this.application = this.jsFixConfig.description.application ?? null
|
|
34
|
+
const name = this.application?.name ?? 'na'
|
|
35
|
+
this.logger = jsFixConfig.logFactory.logger(`${name}:RecoveringTcpInitiator`)
|
|
35
36
|
if (!this.application) {
|
|
36
|
-
throw new Error(
|
|
37
|
+
throw new Error('no application in session description.')
|
|
37
38
|
}
|
|
38
|
-
this.tcp = this.application.tcp
|
|
39
|
+
this.tcp = this.application.tcp ?? null
|
|
39
40
|
if (!this.tcp) {
|
|
40
|
-
throw new Error(
|
|
41
|
+
throw new Error('no tcp in session description need tcp { host: hostname, port: port }')
|
|
41
42
|
}
|
|
42
43
|
this.createSession(jsFixConfig)
|
|
43
44
|
}
|
|
44
45
|
|
|
45
|
-
private createSession (jsFixConfig: IJsFixConfig) {
|
|
46
|
+
private createSession (jsFixConfig: IJsFixConfig): void {
|
|
46
47
|
this.logger.info(`creating an application session with DI token ${DITokens.FixSession}.`)
|
|
47
48
|
this.session = jsFixConfig.sessionContainer.resolve<FixSession>(DITokens.FixSession)
|
|
48
49
|
this.session.on('done', () => {
|
|
@@ -60,12 +61,20 @@ export class RecoveringTcpInitiator extends FixEntity {
|
|
|
60
61
|
return this.session.getState()
|
|
61
62
|
}
|
|
62
63
|
|
|
63
|
-
|
|
64
|
+
public lastSentSeqNum (): number {
|
|
65
|
+
return this.session.lastSentSeqNum()
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
private resetSeq (): boolean {
|
|
69
|
+
return this.jsFixConfig.description.ResetSeqNumFlag
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
private newTransport (transport: MsgTransport): void {
|
|
64
73
|
this.transport = transport
|
|
65
74
|
this.emit('transport', transport)
|
|
66
75
|
this.logger.info(`initiator connects id ${(transport.id)}`)
|
|
67
76
|
const session = this.session
|
|
68
|
-
if (this.
|
|
77
|
+
if (this.resetSeq()) {
|
|
69
78
|
this.logger.info('reset sequence numbers')
|
|
70
79
|
session.reset()
|
|
71
80
|
}
|
|
@@ -84,7 +93,7 @@ export class RecoveringTcpInitiator extends FixEntity {
|
|
|
84
93
|
this.logger.info(`running session with transport ${transport.id} state = ${session.getState()}`)
|
|
85
94
|
}
|
|
86
95
|
|
|
87
|
-
private clearTimer () {
|
|
96
|
+
private clearTimer (): void {
|
|
88
97
|
if (this.th) {
|
|
89
98
|
clearTimeout(this.th)
|
|
90
99
|
this.th = null
|
|
@@ -98,6 +107,13 @@ export class RecoveringTcpInitiator extends FixEntity {
|
|
|
98
107
|
private recover (): void {
|
|
99
108
|
this.session.setState(SessionState.DetectBrokenNetworkConnection)
|
|
100
109
|
this.logger.info(`recover session transport - attempt in ${this.recoveryAttemptSecs} secs`)
|
|
110
|
+
if (!this.resetSeq()) {
|
|
111
|
+
const lastSentSeqNum = this.lastSentSeqNum()
|
|
112
|
+
if (lastSentSeqNum > 0) {
|
|
113
|
+
this.logger.info(`recover session set LastSentSeqNum ${lastSentSeqNum} for new transport`)
|
|
114
|
+
this.config.description.LastSentSeqNum = lastSentSeqNum
|
|
115
|
+
}
|
|
116
|
+
}
|
|
101
117
|
this.th = setTimeout(() => {
|
|
102
118
|
this.connect(60).then(t => {
|
|
103
119
|
this.logger.info(`new transport ${t.id}`)
|
|
@@ -105,22 +121,24 @@ export class RecoveringTcpInitiator extends FixEntity {
|
|
|
105
121
|
this.logger.info(`failed to re-connect ${e.message} - backoff for ${this.backoffFailConnectSecs}`)
|
|
106
122
|
this.th = setTimeout(() => {
|
|
107
123
|
this.logger.info('returning to recover()')
|
|
108
|
-
|
|
124
|
+
setImmediate(() => {
|
|
125
|
+
this.recover()
|
|
126
|
+
})
|
|
109
127
|
}, this.backoffFailConnectSecs * 1000)
|
|
110
128
|
})
|
|
111
|
-
},this.recoveryAttemptSecs * 1000)
|
|
129
|
+
}, this.recoveryAttemptSecs * 1000)
|
|
112
130
|
}
|
|
113
131
|
|
|
114
|
-
public start (): Promise<any> {
|
|
115
|
-
return this.run()
|
|
132
|
+
public async start (): Promise<any> {
|
|
133
|
+
return await this.run()
|
|
116
134
|
}
|
|
117
135
|
|
|
118
136
|
// for first connection - reject if no initial connection established within timeout
|
|
119
137
|
// once connection established, will not resolve until session is ended - i.e. lost
|
|
120
138
|
// connections are re-established using the same session instance.
|
|
121
139
|
|
|
122
|
-
public run (initialTimeout: number = 60): Promise<any> {
|
|
123
|
-
return new Promise<any>((resolve, reject) => {
|
|
140
|
+
public async run (initialTimeout: number = 60): Promise<any> {
|
|
141
|
+
return await new Promise<any>((resolve, reject) => {
|
|
124
142
|
this.connect(initialTimeout).then(() => {
|
|
125
143
|
this.on('end', () => {
|
|
126
144
|
this.clearTimer()
|
|
@@ -137,8 +155,8 @@ export class RecoveringTcpInitiator extends FixEntity {
|
|
|
137
155
|
|
|
138
156
|
// return a promise for new transport - or reject if no connection within timeout
|
|
139
157
|
|
|
140
|
-
private connect (timeout: number): Promise<MsgTransport> {
|
|
141
|
-
return new Promise<MsgTransport>((resolve, reject) => {
|
|
158
|
+
private async connect (timeout: number): Promise<MsgTransport> {
|
|
159
|
+
return await new Promise<MsgTransport>((resolve, reject) => {
|
|
142
160
|
this.logger.info(`connect: start initiator timeout ${timeout}`)
|
|
143
161
|
this.session.setState(SessionState.InitiateConnection)
|
|
144
162
|
this.initiator = new TcpInitiator(this.jsFixConfig)
|
|
@@ -13,8 +13,8 @@ export class TcpAcceptorListener extends FixEntity {
|
|
|
13
13
|
super(config)
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
start (): Promise<any> {
|
|
17
|
-
return new Promise<any>(async (
|
|
16
|
+
async start (): Promise<any> {
|
|
17
|
+
return await new Promise<any>(async (resolve, reject) => {
|
|
18
18
|
const logger = this.config.logFactory.logger('acceptor')
|
|
19
19
|
const sessionContainer = this.config.sessionContainer
|
|
20
20
|
if (!sessionContainer.isRegistered(DITokens.FixSession)) {
|
|
@@ -25,11 +25,12 @@ export class TcpAcceptorListener extends FixEntity {
|
|
|
25
25
|
acceptor.on('transport', (t: MsgTransport) => {
|
|
26
26
|
logger.info(`creates new transport using DI token ${DITokens.FixSession}.`)
|
|
27
27
|
const acceptorSession = sessionContainer.resolve<FixSession>(DITokens.FixSession)
|
|
28
|
+
this.emit('session', acceptorSession, t)
|
|
28
29
|
acceptorSession.run(t).then(() => {
|
|
29
30
|
logger.info('ends')
|
|
30
31
|
acceptor.close(() => {
|
|
31
32
|
logger.info('acceptor closed.')
|
|
32
|
-
|
|
33
|
+
resolve(true)
|
|
33
34
|
})
|
|
34
35
|
}).catch((e: Error) => {
|
|
35
36
|
logger.info(`error in session - close listener ${e.message}`)
|