@adapt-toolkit/sdk 0.1.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/dist/common/index.d.ts +7 -0
- package/dist/common/index.d.ts.map +1 -0
- package/dist/common/index.js +7 -0
- package/dist/common/index.js.map +1 -0
- package/dist/common/interfaces/adapt_environment.d.ts +21 -0
- package/dist/common/interfaces/adapt_environment.d.ts.map +1 -0
- package/dist/common/interfaces/adapt_environment.js +2 -0
- package/dist/common/interfaces/adapt_environment.js.map +1 -0
- package/dist/common/interfaces/adapt_evaluation_unit.d.ts +12 -0
- package/dist/common/interfaces/adapt_evaluation_unit.d.ts.map +1 -0
- package/dist/common/interfaces/adapt_evaluation_unit.js +2 -0
- package/dist/common/interfaces/adapt_evaluation_unit.js.map +1 -0
- package/dist/common/interfaces/adapt_packet_context.d.ts +29 -0
- package/dist/common/interfaces/adapt_packet_context.d.ts.map +1 -0
- package/dist/common/interfaces/adapt_packet_context.js +2 -0
- package/dist/common/interfaces/adapt_packet_context.js.map +1 -0
- package/dist/common/interfaces/adapt_value.d.ts +23 -0
- package/dist/common/interfaces/adapt_value.d.ts.map +1 -0
- package/dist/common/interfaces/adapt_value.js +2 -0
- package/dist/common/interfaces/adapt_value.js.map +1 -0
- package/dist/common/interfaces/common.d.ts +18 -0
- package/dist/common/interfaces/common.d.ts.map +1 -0
- package/dist/common/interfaces/common.js +4 -0
- package/dist/common/interfaces/common.js.map +1 -0
- package/dist/common/memory_management/adapt_object_lifetime.d.ts +114 -0
- package/dist/common/memory_management/adapt_object_lifetime.d.ts.map +1 -0
- package/dist/common/memory_management/adapt_object_lifetime.js +159 -0
- package/dist/common/memory_management/adapt_object_lifetime.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/loaders/browser.d.ts +5 -0
- package/dist/loaders/browser.d.ts.map +1 -0
- package/dist/loaders/browser.js +6 -0
- package/dist/loaders/browser.js.map +1 -0
- package/dist/loaders/node.d.ts +13 -0
- package/dist/loaders/node.d.ts.map +1 -0
- package/dist/loaders/node.js +29 -0
- package/dist/loaders/node.js.map +1 -0
- package/dist/loaders/react-native.d.ts +11 -0
- package/dist/loaders/react-native.d.ts.map +1 -0
- package/dist/loaders/react-native.js +19 -0
- package/dist/loaders/react-native.js.map +1 -0
- package/dist/loaders/shared.d.ts +17 -0
- package/dist/loaders/shared.d.ts.map +1 -0
- package/dist/loaders/shared.js +2 -0
- package/dist/loaders/shared.js.map +1 -0
- package/dist/utilities/broker/broker.d.ts +21 -0
- package/dist/utilities/broker/broker.d.ts.map +1 -0
- package/dist/utilities/broker/broker.js +267 -0
- package/dist/utilities/broker/broker.js.map +1 -0
- package/dist/utilities/broker/broker_client.d.ts +40 -0
- package/dist/utilities/broker/broker_client.d.ts.map +1 -0
- package/dist/utilities/broker/broker_client.js +111 -0
- package/dist/utilities/broker/broker_client.js.map +1 -0
- package/dist/utilities/broker/broker_configurator.d.ts +6 -0
- package/dist/utilities/broker/broker_configurator.d.ts.map +1 -0
- package/dist/utilities/broker/broker_configurator.js +8 -0
- package/dist/utilities/broker/broker_configurator.js.map +1 -0
- package/dist/utilities/broker/index.d.ts +4 -0
- package/dist/utilities/broker/index.d.ts.map +1 -0
- package/dist/utilities/broker/index.js +4 -0
- package/dist/utilities/broker/index.js.map +1 -0
- package/dist/utilities/common/adapt_waitlist.d.ts +5 -0
- package/dist/utilities/common/adapt_waitlist.d.ts.map +1 -0
- package/dist/utilities/common/adapt_waitlist.js +4 -0
- package/dist/utilities/common/adapt_waitlist.js.map +1 -0
- package/dist/utilities/common/async_queue_adapter.d.ts +40 -0
- package/dist/utilities/common/async_queue_adapter.d.ts.map +1 -0
- package/dist/utilities/common/async_queue_adapter.js +88 -0
- package/dist/utilities/common/async_queue_adapter.js.map +1 -0
- package/dist/utilities/common/command_line_configurator.d.ts +88 -0
- package/dist/utilities/common/command_line_configurator.d.ts.map +1 -0
- package/dist/utilities/common/command_line_configurator.js +217 -0
- package/dist/utilities/common/command_line_configurator.js.map +1 -0
- package/dist/utilities/common/decorators.d.ts +17 -0
- package/dist/utilities/common/decorators.d.ts.map +1 -0
- package/dist/utilities/common/decorators.js +84 -0
- package/dist/utilities/common/decorators.js.map +1 -0
- package/dist/utilities/common/errors/adapt_initialization_error.d.ts +4 -0
- package/dist/utilities/common/errors/adapt_initialization_error.d.ts.map +1 -0
- package/dist/utilities/common/errors/adapt_initialization_error.js +6 -0
- package/dist/utilities/common/errors/adapt_initialization_error.js.map +1 -0
- package/dist/utilities/common/errors/adapt_network_error.d.ts +8 -0
- package/dist/utilities/common/errors/adapt_network_error.d.ts.map +1 -0
- package/dist/utilities/common/errors/adapt_network_error.js +12 -0
- package/dist/utilities/common/errors/adapt_network_error.js.map +1 -0
- package/dist/utilities/common/errors/adapt_protocol_error.d.ts +12 -0
- package/dist/utilities/common/errors/adapt_protocol_error.d.ts.map +1 -0
- package/dist/utilities/common/errors/adapt_protocol_error.js +16 -0
- package/dist/utilities/common/errors/adapt_protocol_error.js.map +1 -0
- package/dist/utilities/common/errors/adapt_test_mode_error.d.ts +11 -0
- package/dist/utilities/common/errors/adapt_test_mode_error.d.ts.map +1 -0
- package/dist/utilities/common/errors/adapt_test_mode_error.js +22 -0
- package/dist/utilities/common/errors/adapt_test_mode_error.js.map +1 -0
- package/dist/utilities/common/http_server.d.ts +18 -0
- package/dist/utilities/common/http_server.d.ts.map +1 -0
- package/dist/utilities/common/http_server.js +41 -0
- package/dist/utilities/common/http_server.js.map +1 -0
- package/dist/utilities/common/index.d.ts +25 -0
- package/dist/utilities/common/index.d.ts.map +1 -0
- package/dist/utilities/common/index.js +36 -0
- package/dist/utilities/common/index.js.map +1 -0
- package/dist/utilities/common/logger/logger.d.ts +83 -0
- package/dist/utilities/common/logger/logger.d.ts.map +1 -0
- package/dist/utilities/common/logger/logger.js +272 -0
- package/dist/utilities/common/logger/logger.js.map +1 -0
- package/dist/utilities/common/logger/logging_level.d.ts +13 -0
- package/dist/utilities/common/logger/logging_level.d.ts.map +1 -0
- package/dist/utilities/common/logger/logging_level.js +36 -0
- package/dist/utilities/common/logger/logging_level.js.map +1 -0
- package/dist/utilities/common/logger/message.d.ts +65 -0
- package/dist/utilities/common/logger/message.d.ts.map +1 -0
- package/dist/utilities/common/logger/message.js +169 -0
- package/dist/utilities/common/logger/message.js.map +1 -0
- package/dist/utilities/common/logger/network_component.d.ts +3 -0
- package/dist/utilities/common/logger/network_component.d.ts.map +1 -0
- package/dist/utilities/common/logger/network_component.js +4 -0
- package/dist/utilities/common/logger/network_component.js.map +1 -0
- package/dist/utilities/common/totp_qr_code_generator.d.ts +12 -0
- package/dist/utilities/common/totp_qr_code_generator.d.ts.map +1 -0
- package/dist/utilities/common/totp_qr_code_generator.js +19 -0
- package/dist/utilities/common/totp_qr_code_generator.js.map +1 -0
- package/dist/utilities/common/waitlist/waitlist.d.ts +36 -0
- package/dist/utilities/common/waitlist/waitlist.d.ts.map +1 -0
- package/dist/utilities/common/waitlist/waitlist.js +116 -0
- package/dist/utilities/common/waitlist/waitlist.js.map +1 -0
- package/dist/utilities/common/web_socket_client.d.ts +50 -0
- package/dist/utilities/common/web_socket_client.d.ts.map +1 -0
- package/dist/utilities/common/web_socket_client.js +80 -0
- package/dist/utilities/common/web_socket_client.js.map +1 -0
- package/dist/utilities/common/web_socket_connection.d.ts +29 -0
- package/dist/utilities/common/web_socket_connection.d.ts.map +1 -0
- package/dist/utilities/common/web_socket_connection.js +94 -0
- package/dist/utilities/common/web_socket_connection.js.map +1 -0
- package/dist/utilities/evaluator/common.d.ts +10 -0
- package/dist/utilities/evaluator/common.d.ts.map +1 -0
- package/dist/utilities/evaluator/common.js +128 -0
- package/dist/utilities/evaluator/common.js.map +1 -0
- package/dist/utilities/evaluator/evaluator.d.ts +35 -0
- package/dist/utilities/evaluator/evaluator.d.ts.map +1 -0
- package/dist/utilities/evaluator/evaluator.js +141 -0
- package/dist/utilities/evaluator/evaluator.js.map +1 -0
- package/dist/utilities/evaluator/index.d.ts +3 -0
- package/dist/utilities/evaluator/index.d.ts.map +1 -0
- package/dist/utilities/evaluator/index.js +3 -0
- package/dist/utilities/evaluator/index.js.map +1 -0
- package/dist/utilities/executables/adapt_wrapper.d.ts +3 -0
- package/dist/utilities/executables/adapt_wrapper.d.ts.map +1 -0
- package/dist/utilities/executables/adapt_wrapper.js +25 -0
- package/dist/utilities/executables/adapt_wrapper.js.map +1 -0
- package/dist/utilities/executables/adapt_wrapper_mobile.d.ts +3 -0
- package/dist/utilities/executables/adapt_wrapper_mobile.d.ts.map +1 -0
- package/dist/utilities/executables/adapt_wrapper_mobile.js +20 -0
- package/dist/utilities/executables/adapt_wrapper_mobile.js.map +1 -0
- package/dist/utilities/executables/adapt_wrapper_script.d.ts +2 -0
- package/dist/utilities/executables/adapt_wrapper_script.d.ts.map +1 -0
- package/dist/utilities/executables/adapt_wrapper_script.js +6 -0
- package/dist/utilities/executables/adapt_wrapper_script.js.map +1 -0
- package/dist/utilities/executables/broker.d.ts +2 -0
- package/dist/utilities/executables/broker.d.ts.map +1 -0
- package/dist/utilities/executables/broker.js +23 -0
- package/dist/utilities/executables/broker.js.map +1 -0
- package/dist/utilities/executables/index.d.ts +2 -0
- package/dist/utilities/executables/index.d.ts.map +1 -0
- package/dist/utilities/executables/index.js +2 -0
- package/dist/utilities/executables/index.js.map +1 -0
- package/dist/utilities/executables/local_data_storage.d.ts +2 -0
- package/dist/utilities/executables/local_data_storage.d.ts.map +1 -0
- package/dist/utilities/executables/local_data_storage.js +20 -0
- package/dist/utilities/executables/local_data_storage.js.map +1 -0
- package/dist/utilities/executables/local_data_storage_cmd_helper.d.ts +2 -0
- package/dist/utilities/executables/local_data_storage_cmd_helper.d.ts.map +1 -0
- package/dist/utilities/executables/local_data_storage_cmd_helper.js +52 -0
- package/dist/utilities/executables/local_data_storage_cmd_helper.js.map +1 -0
- package/dist/utilities/storage/data_storage.d.ts +97 -0
- package/dist/utilities/storage/data_storage.d.ts.map +1 -0
- package/dist/utilities/storage/data_storage.js +440 -0
- package/dist/utilities/storage/data_storage.js.map +1 -0
- package/dist/utilities/storage/index.d.ts +6 -0
- package/dist/utilities/storage/index.d.ts.map +1 -0
- package/dist/utilities/storage/index.js +6 -0
- package/dist/utilities/storage/index.js.map +1 -0
- package/dist/utilities/storage/local_data_storage.d.ts +7 -0
- package/dist/utilities/storage/local_data_storage.d.ts.map +1 -0
- package/dist/utilities/storage/local_data_storage.js +18 -0
- package/dist/utilities/storage/local_data_storage.js.map +1 -0
- package/dist/utilities/storage/local_data_storage_base.d.ts +74 -0
- package/dist/utilities/storage/local_data_storage_base.d.ts.map +1 -0
- package/dist/utilities/storage/local_data_storage_base.js +163 -0
- package/dist/utilities/storage/local_data_storage_base.js.map +1 -0
- package/dist/utilities/storage/local_data_storage_configurator.d.ts +7 -0
- package/dist/utilities/storage/local_data_storage_configurator.d.ts.map +1 -0
- package/dist/utilities/storage/local_data_storage_configurator.js +13 -0
- package/dist/utilities/storage/local_data_storage_configurator.js.map +1 -0
- package/dist/utilities/storage/storage_client.d.ts +28 -0
- package/dist/utilities/storage/storage_client.d.ts.map +1 -0
- package/dist/utilities/storage/storage_client.js +79 -0
- package/dist/utilities/storage/storage_client.js.map +1 -0
- package/dist/utilities/wrappers/configurators/adapt_wrapper_configurator.d.ts +14 -0
- package/dist/utilities/wrappers/configurators/adapt_wrapper_configurator.d.ts.map +1 -0
- package/dist/utilities/wrappers/configurators/adapt_wrapper_configurator.js +57 -0
- package/dist/utilities/wrappers/configurators/adapt_wrapper_configurator.js.map +1 -0
- package/dist/utilities/wrappers/configurators/control_packet_configurator.d.ts +12 -0
- package/dist/utilities/wrappers/configurators/control_packet_configurator.d.ts.map +1 -0
- package/dist/utilities/wrappers/configurators/control_packet_configurator.js +52 -0
- package/dist/utilities/wrappers/configurators/control_packet_configurator.js.map +1 -0
- package/dist/utilities/wrappers/configurators/packet_wrapper_configurator.d.ts +32 -0
- package/dist/utilities/wrappers/configurators/packet_wrapper_configurator.d.ts.map +1 -0
- package/dist/utilities/wrappers/configurators/packet_wrapper_configurator.js +123 -0
- package/dist/utilities/wrappers/configurators/packet_wrapper_configurator.js.map +1 -0
- package/dist/utilities/wrappers/enclave/control_packet.d.ts +18 -0
- package/dist/utilities/wrappers/enclave/control_packet.d.ts.map +1 -0
- package/dist/utilities/wrappers/enclave/control_packet.js +213 -0
- package/dist/utilities/wrappers/enclave/control_packet.js.map +1 -0
- package/dist/utilities/wrappers/index.d.ts +5 -0
- package/dist/utilities/wrappers/index.d.ts.map +1 -0
- package/dist/utilities/wrappers/index.js +5 -0
- package/dist/utilities/wrappers/index.js.map +1 -0
- package/dist/utilities/wrappers/wrappers/adapt_packet_wrapper.d.ts +19 -0
- package/dist/utilities/wrappers/wrappers/adapt_packet_wrapper.d.ts.map +1 -0
- package/dist/utilities/wrappers/wrappers/adapt_packet_wrapper.js +55 -0
- package/dist/utilities/wrappers/wrappers/adapt_packet_wrapper.js.map +1 -0
- package/dist/utilities/wrappers/wrappers/adapt_wrapper.d.ts +131 -0
- package/dist/utilities/wrappers/wrappers/adapt_wrapper.d.ts.map +1 -0
- package/dist/utilities/wrappers/wrappers/adapt_wrapper.js +716 -0
- package/dist/utilities/wrappers/wrappers/adapt_wrapper.js.map +1 -0
- package/dist/utilities/wrappers/wrappers/impl/adapt_packet_wrapper_impl.d.ts +75 -0
- package/dist/utilities/wrappers/wrappers/impl/adapt_packet_wrapper_impl.d.ts.map +1 -0
- package/dist/utilities/wrappers/wrappers/impl/adapt_packet_wrapper_impl.js +550 -0
- package/dist/utilities/wrappers/wrappers/impl/adapt_packet_wrapper_impl.js.map +1 -0
- package/dist/wasm/adapt.d.ts +79 -0
- package/dist/wasm/adapt.d.ts.map +1 -0
- package/dist/wasm/adapt.js +430 -0
- package/dist/wasm/adapt.js.map +1 -0
- package/dist/wasm/backend-node.d.ts +1 -0
- package/dist/wasm/backend-node.d.ts.map +1 -0
- package/dist/wasm/backend-node.js +1 -0
- package/dist/wasm/backend-node.js.map +1 -0
- package/dist/wasm/index.d.ts +12 -0
- package/dist/wasm/index.d.ts.map +1 -0
- package/dist/wasm/index.js +15 -0
- package/dist/wasm/index.js.map +1 -0
- package/dist/wasm/mufl-bindings.d.ts +3 -0
- package/dist/wasm/mufl-bindings.d.ts.map +1 -0
- package/dist/wasm/mufl-bindings.js +3833 -0
- package/dist/wasm/mufl-bindings.js.map +1 -0
- package/dist/wasm/mufl-bindings.wasm +0 -0
- package/dist/wasm/wasm_types.d.ts +96 -0
- package/dist/wasm/wasm_types.d.ts.map +1 -0
- package/dist/wasm/wasm_types.js +2 -0
- package/dist/wasm/wasm_types.js.map +1 -0
- package/dist/wrapper/conversion.d.ts +9 -0
- package/dist/wrapper/conversion.d.ts.map +1 -0
- package/dist/wrapper/conversion.js +30 -0
- package/dist/wrapper/conversion.js.map +1 -0
- package/dist/wrapper/index.d.ts +11 -0
- package/dist/wrapper/index.d.ts.map +1 -0
- package/dist/wrapper/index.js +25 -0
- package/dist/wrapper/index.js.map +1 -0
- package/dist/wrapper/memory_management/adapt_builder.d.ts +36 -0
- package/dist/wrapper/memory_management/adapt_builder.d.ts.map +1 -0
- package/dist/wrapper/memory_management/adapt_builder.js +98 -0
- package/dist/wrapper/memory_management/adapt_builder.js.map +1 -0
- package/dist/wrapper/memory_management/exit_handler_registrar.d.ts +10 -0
- package/dist/wrapper/memory_management/exit_handler_registrar.d.ts.map +1 -0
- package/dist/wrapper/memory_management/exit_handler_registrar.js +38 -0
- package/dist/wrapper/memory_management/exit_handler_registrar.js.map +1 -0
- package/dist/wrapper/protocol/message_handler_interfaces.d.ts +32 -0
- package/dist/wrapper/protocol/message_handler_interfaces.d.ts.map +1 -0
- package/dist/wrapper/protocol/message_handler_interfaces.js +2 -0
- package/dist/wrapper/protocol/message_handler_interfaces.js.map +1 -0
- package/dist/wrapper/protocol/protocol.d.ts +171 -0
- package/dist/wrapper/protocol/protocol.d.ts.map +1 -0
- package/dist/wrapper/protocol/protocol.js +387 -0
- package/dist/wrapper/protocol/protocol.js.map +1 -0
- package/package.json +127 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local_data_storage.d.ts","sourceRoot":"","sources":["../../../src/utilities/executables/local_data_storage.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { LocalDataStorageConfigurator, LocalDataStorage } from '../storage/index.js';
|
|
2
|
+
import { AdaptEnvironment } from '@adapt-toolkit/sdk/backend';
|
|
3
|
+
import { Protocol } from '../../wrapper/index.js';
|
|
4
|
+
import { AdaptNetworkComponentConfigurator, logging } from '../common/index.js';
|
|
5
|
+
const local_data_storage_config = new LocalDataStorageConfigurator();
|
|
6
|
+
try {
|
|
7
|
+
local_data_storage_config.process_arguments(process.argv.slice(2));
|
|
8
|
+
}
|
|
9
|
+
catch (e) {
|
|
10
|
+
console.error(e instanceof Error ? e.message : e);
|
|
11
|
+
local_data_storage_config.display_help();
|
|
12
|
+
process.exit(1); // how to pass args and exit the process in web
|
|
13
|
+
}
|
|
14
|
+
logging.create_logger(local_data_storage_config.logger_config);
|
|
15
|
+
AdaptEnvironment.InitializeAsync(AdaptNetworkComponentConfigurator.test_mode).then(async () => {
|
|
16
|
+
await Protocol.Initialize();
|
|
17
|
+
let local_data_storage = new LocalDataStorage(local_data_storage_config);
|
|
18
|
+
local_data_storage.start();
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=local_data_storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local_data_storage.js","sourceRoot":"","sources":["../../../src/utilities/executables/local_data_storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,4BAA4B,EAAE,gBAAgB,EAAC,MAAM,qBAAqB,CAAA;AAClF,OAAO,EAAC,gBAAgB,EAAC,MAAM,UAAU,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,iCAAiC,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAIhF,MAAM,yBAAyB,GAAG,IAAI,4BAA4B,EAAE,CAAC;AACrE,IAAI,CAAC;IACD,yBAAyB,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC;IACT,OAAO,CAAC,KAAK,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,yBAAyB,CAAC,YAAY,EAAE,CAAC;IACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,+CAA+C;AACpE,CAAC;AAED,OAAO,CAAC,aAAa,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC;AAE/D,gBAAgB,CAAC,eAAe,CAAC,iCAAiC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAE,KAAK,IAAI,EAAE;IAC3F,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;IAC5B,IAAI,kBAAkB,GAAG,IAAI,gBAAgB,CAAC,yBAAyB,CAAC,CAAC;IACzE,kBAAkB,CAAC,KAAK,EAAE,CAAC;AAC/B,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local_data_storage_cmd_helper.d.ts","sourceRoot":"","sources":["../../../src/utilities/executables/local_data_storage_cmd_helper.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { AdaptNetworkComponentConfigurator, Argument } from '../common/index.js';
|
|
2
|
+
import { LocalDataStorageBase, LocalDataStorageConfigurator } from '../storage/index.js';
|
|
3
|
+
import * as fs from 'fs';
|
|
4
|
+
class Configurator extends AdaptNetworkComponentConfigurator {
|
|
5
|
+
configurator_name = "local data storage command line updater configurator";
|
|
6
|
+
#code_objects_to_copy = [];
|
|
7
|
+
constructor() {
|
|
8
|
+
super([
|
|
9
|
+
new Argument("--root_dir_path").set_description("Path to a directory containing the storage files.").set_supply_argument(true, 1).set_required(true),
|
|
10
|
+
new Argument("--copy_code_object").set_description("Copy code object data to the data storage").set_supply_argument(true, 1).set_callback_single_argument((arg, value) => { this.#code_objects_to_copy.push(value); })
|
|
11
|
+
]);
|
|
12
|
+
}
|
|
13
|
+
get root_dir_path() {
|
|
14
|
+
return this.get_argument("--root_dir_path").value;
|
|
15
|
+
}
|
|
16
|
+
get code_objects_to_copy() {
|
|
17
|
+
return this.#code_objects_to_copy;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
class LocalDataStorageCMDHelper {
|
|
21
|
+
data_storage_base;
|
|
22
|
+
constructor(__config) {
|
|
23
|
+
let config = new LocalDataStorageConfigurator();
|
|
24
|
+
config.process_arguments(["--root_dir_path", __config.root_dir_path, "--host", "localhost", "--port", "1111"]);
|
|
25
|
+
this.data_storage_base = new LocalDataStorageBase(config);
|
|
26
|
+
this.data_storage_base.init();
|
|
27
|
+
__config.code_objects_to_copy.forEach(object => {
|
|
28
|
+
const basename = object.split('/').reverse()[0];
|
|
29
|
+
const hash = basename.substring(0, 64);
|
|
30
|
+
console.log("Trying to save the code object to the data storage: ", hash);
|
|
31
|
+
let file_data;
|
|
32
|
+
try {
|
|
33
|
+
file_data = fs.readFileSync(object);
|
|
34
|
+
}
|
|
35
|
+
catch (e) {
|
|
36
|
+
if (e.code === 'ENOENT') {
|
|
37
|
+
console.error(`File ${object} doesn't exist.`);
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
console.error("Error occurred while reading the file", object, e);
|
|
42
|
+
process.exit(2);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
this.data_storage_base.set_code_object(hash, file_data);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const configurator = new Configurator();
|
|
50
|
+
configurator.process_arguments(process.argv.slice(2));
|
|
51
|
+
new LocalDataStorageCMDHelper(configurator);
|
|
52
|
+
//# sourceMappingURL=local_data_storage_cmd_helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local_data_storage_cmd_helper.js","sourceRoot":"","sources":["../../../src/utilities/executables/local_data_storage_cmd_helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { AdaptValue } from '@adapt-toolkit/sdk/backend';
|
|
2
|
+
import { AsyncQueueAdapter, HttpServer, LoggerConfigurator } from '../common/index.js';
|
|
3
|
+
export type Binary = Uint8Array;
|
|
4
|
+
export declare class AdaptStateChange {
|
|
5
|
+
transaction: Uint8Array;
|
|
6
|
+
final_state_id: string;
|
|
7
|
+
constructor(transaction: Uint8Array, final_state_id: string);
|
|
8
|
+
Serialize(): string;
|
|
9
|
+
static Deserialize(s: string): AdaptStateChange;
|
|
10
|
+
}
|
|
11
|
+
export interface IDataStorageBase {
|
|
12
|
+
init(): void;
|
|
13
|
+
/**
|
|
14
|
+
* Get code object data by its hash.
|
|
15
|
+
* Throws a DataStorageErro, if there is no code object with given hash available.
|
|
16
|
+
* @param hash hash of the code object
|
|
17
|
+
*/
|
|
18
|
+
get_code_object(hash: string): Binary;
|
|
19
|
+
set_code_object(hash: string, content: Binary): void;
|
|
20
|
+
/**
|
|
21
|
+
* Get packet data by the hash ot state.
|
|
22
|
+
* Throws a DataStorageError, if there is no packet with given state id.
|
|
23
|
+
* @param hash hash of the packet state.
|
|
24
|
+
*/
|
|
25
|
+
get_packet(hash: string): Binary;
|
|
26
|
+
set_packet(hash: string, content: Binary): void;
|
|
27
|
+
/**
|
|
28
|
+
* Returns id of the last packet state registered in the data storage.
|
|
29
|
+
* Throws a DataStorageError, if there is no registered states yet.
|
|
30
|
+
* @param packet_id id of the packet
|
|
31
|
+
*/
|
|
32
|
+
get_last_state_id(packet_id: string): string;
|
|
33
|
+
set_last_state_id(packet_id: string, state_id: string): void;
|
|
34
|
+
/**
|
|
35
|
+
* Returns id of the last snapshot state registered in the data storage.
|
|
36
|
+
* Throws a DataStorageError, if there is no registered snapshots yet.
|
|
37
|
+
* @param packet_id id of the packet
|
|
38
|
+
*/
|
|
39
|
+
get_last_snapshot_state_id(state_id: string): string;
|
|
40
|
+
set_last_snapshot_state_id(state_id: string, snapshot_id: string): void;
|
|
41
|
+
/**
|
|
42
|
+
* Returns change of the state after transaction and transaction itself.(Final state id, request data, transient data).
|
|
43
|
+
* Throws a DataStorageError, if there is no transaction with given initial state id.
|
|
44
|
+
* @param state_id initial state of transaction.
|
|
45
|
+
*/
|
|
46
|
+
get_state_change(state_id: string): string;
|
|
47
|
+
set_state_change(previous_state_id: string, stateChange: string): void;
|
|
48
|
+
/**
|
|
49
|
+
* Returns 0 based index of the state in chain of all states available for given packet.
|
|
50
|
+
* Throws a DataStorageError, if there is no state with given id.
|
|
51
|
+
* @param packet_id id of the packet
|
|
52
|
+
* @param state_id id of the state
|
|
53
|
+
*/
|
|
54
|
+
get_state(packet_id: string, state_id: string): number;
|
|
55
|
+
set_state(packet_id: string, state_id: string): void;
|
|
56
|
+
}
|
|
57
|
+
export declare class DataStorageError extends Error {
|
|
58
|
+
name: string;
|
|
59
|
+
exit_code: number;
|
|
60
|
+
type?: "NO_FILE";
|
|
61
|
+
constructor(message: string, exit_code?: number, type?: "NO_FILE");
|
|
62
|
+
}
|
|
63
|
+
export declare class DataStorage {
|
|
64
|
+
data_storage_base: IDataStorageBase;
|
|
65
|
+
constructor(data_storage_base: IDataStorageBase);
|
|
66
|
+
start(): void;
|
|
67
|
+
create_new_packet(packet_id: string, state_id: string): void;
|
|
68
|
+
write_snapshot(packet_id: string, state_id: string, data: Uint8Array): void;
|
|
69
|
+
write_transaction(packet_id: string, previous_state_id: string, new_state_id: string, trn: Uint8Array): void;
|
|
70
|
+
read_snapshot(state_id: string): Uint8Array;
|
|
71
|
+
get_last_state_id(packet_id: string): string;
|
|
72
|
+
get_last_snapshot_state_id(state_id: string): string;
|
|
73
|
+
get_transactions_chain(initial_state: string, final_state: string): Uint8Array[];
|
|
74
|
+
read_code_object(hash: string): Buffer;
|
|
75
|
+
}
|
|
76
|
+
declare namespace DataStorageAdapter {
|
|
77
|
+
type EventKind = 'incoming_message' | 'outgoing_message';
|
|
78
|
+
type DataStorageAdapterEventType = {
|
|
79
|
+
kind: EventKind;
|
|
80
|
+
connection_id: number;
|
|
81
|
+
data: AdaptValue;
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Manages protocol messages sent to the data storage via web socket
|
|
86
|
+
*
|
|
87
|
+
*/
|
|
88
|
+
export declare class DataStorageAdapter extends HttpServer {
|
|
89
|
+
#private;
|
|
90
|
+
queue: AsyncQueueAdapter<DataStorageAdapter.DataStorageAdapterEventType>;
|
|
91
|
+
send_to_adapt_wrapper?: ((_: AdaptValue) => {});
|
|
92
|
+
constructor(storage: DataStorage, server_host: string, server_port: number, logger_config: LoggerConfigurator);
|
|
93
|
+
start(): void;
|
|
94
|
+
connection_closed(connection_id: number): void;
|
|
95
|
+
}
|
|
96
|
+
export {};
|
|
97
|
+
//# sourceMappingURL=data_storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data_storage.d.ts","sourceRoot":"","sources":["../../../src/utilities/storage/data_storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,440 @@
|
|
|
1
|
+
import { AsyncQueueAdapter, HttpServer, AdaptProtocolWSConnection, AdaptNetworkError, AdaptNetworkErrorType, logging, LazyMessage } from '../common/index.js';
|
|
2
|
+
import * as addon_wrapper from '../../wrapper/index.js';
|
|
3
|
+
import { AdaptObjectBuilder } from '../../wrapper/index.js';
|
|
4
|
+
/*
|
|
5
|
+
|
|
6
|
+
*/
|
|
7
|
+
export class AdaptStateChange {
|
|
8
|
+
transaction;
|
|
9
|
+
final_state_id;
|
|
10
|
+
constructor(transaction, final_state_id) {
|
|
11
|
+
this.transaction = transaction;
|
|
12
|
+
this.final_state_id = final_state_id;
|
|
13
|
+
}
|
|
14
|
+
Serialize() {
|
|
15
|
+
return JSON.stringify(this);
|
|
16
|
+
}
|
|
17
|
+
static Deserialize(s) {
|
|
18
|
+
return Object.assign(new AdaptStateChange(new Uint8Array(), ""), JSON.parse(s));
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export class DataStorageError extends Error {
|
|
22
|
+
name = "Data storage error";
|
|
23
|
+
exit_code;
|
|
24
|
+
type;
|
|
25
|
+
constructor(message, exit_code = 1, type) {
|
|
26
|
+
super(message);
|
|
27
|
+
this.exit_code = exit_code;
|
|
28
|
+
this.type = type;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/*
|
|
32
|
+
DataStorage API. This class doesn't know anything about web socket connection with wrapper, it just manages requests to storage. All the network logic is in DataStorageAdapter class
|
|
33
|
+
|
|
34
|
+
API throws Errors!!! Should be handled outside of the class
|
|
35
|
+
*/
|
|
36
|
+
export class DataStorage {
|
|
37
|
+
data_storage_base;
|
|
38
|
+
constructor(data_storage_base) {
|
|
39
|
+
this.data_storage_base = data_storage_base;
|
|
40
|
+
}
|
|
41
|
+
start() {
|
|
42
|
+
this.data_storage_base.init();
|
|
43
|
+
}
|
|
44
|
+
create_new_packet(packet_id, state_id) {
|
|
45
|
+
this.data_storage_base.set_last_state_id(packet_id, state_id);
|
|
46
|
+
this.data_storage_base.set_state(packet_id, state_id);
|
|
47
|
+
}
|
|
48
|
+
write_snapshot(packet_id, state_id, data) {
|
|
49
|
+
// update last state and last snapshot state of the packet, save snapshot
|
|
50
|
+
let last_snapshot_state_id;
|
|
51
|
+
try {
|
|
52
|
+
last_snapshot_state_id = this.data_storage_base.get_last_snapshot_state_id(packet_id);
|
|
53
|
+
}
|
|
54
|
+
catch (e) { }
|
|
55
|
+
// first chech if state is valid
|
|
56
|
+
let state_idx;
|
|
57
|
+
try {
|
|
58
|
+
state_idx = this.data_storage_base.get_state(packet_id, state_id);
|
|
59
|
+
}
|
|
60
|
+
catch (e) { }
|
|
61
|
+
// if last_snapshot_state_id is undefined, than there is no previous snapshots, new snapshot could be created.
|
|
62
|
+
if (last_snapshot_state_id && state_idx) {
|
|
63
|
+
let last_snapshot_state_id_idx = this.data_storage_base.get_state(packet_id, last_snapshot_state_id);
|
|
64
|
+
if (last_snapshot_state_id_idx >= state_idx) { // if last snapshot is newer than current
|
|
65
|
+
throw new Error(`There is newer snapshot '${last_snapshot_state_id}' for packet '${packet_id}' available.`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
this.data_storage_base.set_last_snapshot_state_id(state_id, state_id);
|
|
69
|
+
this.data_storage_base.set_packet(state_id, data);
|
|
70
|
+
}
|
|
71
|
+
write_transaction(packet_id, previous_state_id, new_state_id, trn) {
|
|
72
|
+
let idx = 0;
|
|
73
|
+
const last_state_id = this.get_last_state_id(packet_id);
|
|
74
|
+
if (!last_state_id || previous_state_id !== last_state_id) {
|
|
75
|
+
throw new Error("Last state stored in the data storage is invalid. Expected state: " + last_state_id + ", actual state: " + previous_state_id);
|
|
76
|
+
}
|
|
77
|
+
// should fail if there is snapshot does not exist for given packet id
|
|
78
|
+
const snapshot_id = this.get_last_snapshot_state_id(previous_state_id);
|
|
79
|
+
if (!snapshot_id) {
|
|
80
|
+
throw new Error("Failed to write transaction. There is no available snapshot for given packet.");
|
|
81
|
+
}
|
|
82
|
+
let stateChange = new AdaptStateChange(trn, new_state_id);
|
|
83
|
+
// write the transaction
|
|
84
|
+
this.data_storage_base.set_last_snapshot_state_id(new_state_id, snapshot_id); // set the snapshot id for the new state
|
|
85
|
+
this.data_storage_base.set_last_state_id(packet_id, new_state_id); // update last state id for this container
|
|
86
|
+
this.data_storage_base.set_state_change(previous_state_id, stateChange.Serialize()); // add the transaction to transaction log
|
|
87
|
+
this.data_storage_base.set_state(packet_id, new_state_id); // add new state to state log
|
|
88
|
+
}
|
|
89
|
+
read_snapshot(state_id) {
|
|
90
|
+
return this.data_storage_base.get_packet(state_id);
|
|
91
|
+
}
|
|
92
|
+
get_last_state_id(packet_id) {
|
|
93
|
+
return this.data_storage_base.get_last_state_id(packet_id);
|
|
94
|
+
}
|
|
95
|
+
get_last_snapshot_state_id(state_id) {
|
|
96
|
+
return this.data_storage_base.get_last_snapshot_state_id(state_id);
|
|
97
|
+
}
|
|
98
|
+
get_transactions_chain(initial_state, final_state) {
|
|
99
|
+
if (initial_state === final_state)
|
|
100
|
+
return [];
|
|
101
|
+
let transactions = [];
|
|
102
|
+
let state_change = AdaptStateChange.Deserialize(this.data_storage_base.get_state_change(initial_state));
|
|
103
|
+
while (state_change.final_state_id !== final_state) {
|
|
104
|
+
transactions.push(state_change.transaction);
|
|
105
|
+
state_change = AdaptStateChange.Deserialize(this.data_storage_base.get_state_change(state_change.final_state_id));
|
|
106
|
+
}
|
|
107
|
+
transactions.push(state_change.transaction);
|
|
108
|
+
return transactions;
|
|
109
|
+
}
|
|
110
|
+
read_code_object(hash) {
|
|
111
|
+
return Buffer.from(this.data_storage_base.get_code_object(hash));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
class Connection extends AdaptProtocolWSConnection {
|
|
115
|
+
connection_id;
|
|
116
|
+
data_storage_adapter;
|
|
117
|
+
static last_connection_id = 0;
|
|
118
|
+
constructor(data_storage_adapter, socket) {
|
|
119
|
+
super(socket);
|
|
120
|
+
this.data_storage_adapter = data_storage_adapter;
|
|
121
|
+
this.connection_id = Connection.last_connection_id++;
|
|
122
|
+
this.on('message', this.on_message_impl.bind(this));
|
|
123
|
+
this.on('close', this.on_close_impl.bind(this));
|
|
124
|
+
}
|
|
125
|
+
on_message_impl(data) {
|
|
126
|
+
logging.message_received('storage_client', 'data_storage', data);
|
|
127
|
+
this.data_storage_adapter.queue.push({
|
|
128
|
+
kind: 'incoming_message',
|
|
129
|
+
connection_id: this.connection_id,
|
|
130
|
+
data: data
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
on_close_impl(code, reason) {
|
|
134
|
+
logging.info("Socket connections closed with code:", code);
|
|
135
|
+
this.data_storage_adapter.connection_closed(this.connection_id);
|
|
136
|
+
}
|
|
137
|
+
send(data) {
|
|
138
|
+
logging.message_sent('data_storage', 'storage_client', data);
|
|
139
|
+
super.send(data);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Manages protocol messages sent to the data storage via web socket
|
|
144
|
+
*
|
|
145
|
+
*/
|
|
146
|
+
export class DataStorageAdapter extends HttpServer {
|
|
147
|
+
#protocol_container;
|
|
148
|
+
queue;
|
|
149
|
+
#data_storage;
|
|
150
|
+
#connections = {};
|
|
151
|
+
#worker_functions;
|
|
152
|
+
send_to_adapt_wrapper; // callback to send data back to adapt wrapper
|
|
153
|
+
constructor(storage, server_host, server_port, logger_config) {
|
|
154
|
+
super(server_host, server_port);
|
|
155
|
+
this.#data_storage = storage;
|
|
156
|
+
this.queue = new AsyncQueueAdapter(this.#worker.bind(this));
|
|
157
|
+
this.#protocol_container = addon_wrapper.Protocol.GetProtocolContainer();
|
|
158
|
+
this.#worker_functions = new Map([
|
|
159
|
+
[addon_wrapper.Protocol.MessageName.w2d_create_packet, this.#w2d_create_packet_v1_handler.bind(this)],
|
|
160
|
+
[addon_wrapper.Protocol.MessageName.w2d_get_code_object, this.#w2d_get_code_object_v1_handler.bind(this)],
|
|
161
|
+
[addon_wrapper.Protocol.MessageName.w2d_get_last_snapshot_state, this.#w2d_get_last_snapshot_state_v1_handler.bind(this)],
|
|
162
|
+
[addon_wrapper.Protocol.MessageName.w2d_get_last_state, this.#w2d_get_last_state_v1_handler.bind(this)],
|
|
163
|
+
[addon_wrapper.Protocol.MessageName.w2d_get_transaction_chain, this.#w2d_get_transaction_chain_v1_handler.bind(this)],
|
|
164
|
+
[addon_wrapper.Protocol.MessageName.w2d_read_snapshot, this.#w2d_read_snapshot_v1_handler.bind(this)],
|
|
165
|
+
[addon_wrapper.Protocol.MessageName.w2d_write_snapshot, this.#w2d_write_snapshot_v1_handler.bind(this)],
|
|
166
|
+
[addon_wrapper.Protocol.MessageName.w2d_write_transaction, this.#w2d_write_transaction_v1_handler.bind(this)],
|
|
167
|
+
[addon_wrapper.Protocol.MessageName.w2d_request_backup_data, this.#w2d_request_backup_data_v1_handler.bind(this)]
|
|
168
|
+
]);
|
|
169
|
+
}
|
|
170
|
+
start() {
|
|
171
|
+
this.listen(() => {
|
|
172
|
+
logging.info(`Server started on port ${this.server.address().port} :)`);
|
|
173
|
+
});
|
|
174
|
+
this.add_event_listener('connection', (socket) => {
|
|
175
|
+
logging.info("New connection to data storage");
|
|
176
|
+
const connection = new Connection(this, socket);
|
|
177
|
+
this.#connections[connection.connection_id] = connection;
|
|
178
|
+
const message = addon_wrapper.Protocol.CreateProtocolMessage(addon_wrapper.Protocol.MessageName.d2w_init).Detach();
|
|
179
|
+
this.queue.push({
|
|
180
|
+
kind: 'outgoing_message',
|
|
181
|
+
connection_id: connection.connection_id,
|
|
182
|
+
data: message
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
connection_closed(connection_id) {
|
|
187
|
+
if (connection_id in this.#connections) {
|
|
188
|
+
delete this.#connections[connection_id];
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
logging.warning("Task 'socket_close' with connection_id ", connection_id, " that is not known to us, ignoring");
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
// =================================== worker and related methods ==============================================
|
|
195
|
+
#worker(task, cb) {
|
|
196
|
+
switch (task.kind) {
|
|
197
|
+
case 'outgoing_message': {
|
|
198
|
+
const connection_id = task.connection_id;
|
|
199
|
+
if (connection_id in this.#connections) {
|
|
200
|
+
this.#connections[connection_id].send(task.data);
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
logging.error("Invalid connection_id", connection_id, "in queue outgoing message task");
|
|
204
|
+
}
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
207
|
+
case 'incoming_message': {
|
|
208
|
+
try {
|
|
209
|
+
this.#incoming_message_handler(task);
|
|
210
|
+
}
|
|
211
|
+
catch (e) {
|
|
212
|
+
const message = e instanceof Error ? e.message : e;
|
|
213
|
+
logging.error("Error while processing incoming message:", message);
|
|
214
|
+
}
|
|
215
|
+
break;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
cb();
|
|
219
|
+
}
|
|
220
|
+
#incoming_message_handler(task) {
|
|
221
|
+
const connection_id = task.connection_id;
|
|
222
|
+
const message_type_id = addon_wrapper.Protocol.GetTypeId(task.data);
|
|
223
|
+
if (connection_id in this.#connections) {
|
|
224
|
+
const func = this.#worker_functions.get(message_type_id);
|
|
225
|
+
if (!func)
|
|
226
|
+
throw new Error("Unrecognized message type id:" + message_type_id.toString());
|
|
227
|
+
func(task);
|
|
228
|
+
}
|
|
229
|
+
else
|
|
230
|
+
throw new AdaptNetworkError(AdaptNetworkErrorType.INTERNAL_ERROR, `Invalid connection id ${connection_id}`);
|
|
231
|
+
}
|
|
232
|
+
#w2d_create_packet_v1_handler(task) {
|
|
233
|
+
const builder = new addon_wrapper.AdaptObjectBuilder();
|
|
234
|
+
try {
|
|
235
|
+
const message = builder.Attach(task.data);
|
|
236
|
+
const body = builder.Attach(addon_wrapper.Protocol.GetBody(message));
|
|
237
|
+
const from = builder.Attach(addon_wrapper.Protocol.GetFrom(message));
|
|
238
|
+
const packet_info = body.Reduce(addon_wrapper.Protocol.FieldName.packet_info);
|
|
239
|
+
const packet_id = packet_info.Reduce(addon_wrapper.Protocol.FieldName.packet_id);
|
|
240
|
+
const state_id = packet_info.Reduce(addon_wrapper.Protocol.FieldName.state);
|
|
241
|
+
this.#data_storage.create_new_packet(packet_id.Visualize(), state_id.Visualize().substring(2));
|
|
242
|
+
const message_to_send = addon_wrapper.Protocol.CreateProtocolMessage(addon_wrapper.Protocol.MessageName.d2w_create_packet_confirm, { message_hash: message.GetHash(), to: from }).Detach();
|
|
243
|
+
this.queue.push({
|
|
244
|
+
kind: "outgoing_message",
|
|
245
|
+
data: message_to_send,
|
|
246
|
+
connection_id: task.connection_id
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
finally {
|
|
250
|
+
builder.Destroy();
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
#w2d_get_code_object_v1_handler(task) {
|
|
254
|
+
const builder = new addon_wrapper.AdaptObjectBuilder();
|
|
255
|
+
try {
|
|
256
|
+
const message = builder.Attach(task.data);
|
|
257
|
+
const body = builder.Attach(addon_wrapper.Protocol.GetBody(message));
|
|
258
|
+
const from = builder.Attach(addon_wrapper.Protocol.GetFrom(message));
|
|
259
|
+
const code_object_hash = body.Reduce(addon_wrapper.Protocol.FieldName.code_object_hash);
|
|
260
|
+
const res = this.#data_storage.read_code_object(code_object_hash.Visualize().substring(2));
|
|
261
|
+
const code_object = builder.Attach(this.#protocol_container.CreateDictionary().Mutate(addon_wrapper.Protocol.FieldName.code_object_hash, code_object_hash).Mutate(addon_wrapper.Protocol.FieldName.code_object_data, addon_wrapper.Protocol.GetProtocolContainer().NewBinaryFromHex(res.toString('hex'))));
|
|
262
|
+
const args = builder.Attach(this.#protocol_container.CreateDictionary().Mutate(addon_wrapper.Protocol.FieldName.code_object, code_object));
|
|
263
|
+
const message_to_send = addon_wrapper.Protocol.CreateProtocolMessage(addon_wrapper.Protocol.MessageName.d2w_code_object, { message_hash: message.GetHash(), to: from, body: args }).Detach();
|
|
264
|
+
this.queue.push({
|
|
265
|
+
kind: "outgoing_message",
|
|
266
|
+
data: message_to_send,
|
|
267
|
+
connection_id: task.connection_id
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
finally {
|
|
271
|
+
builder.Destroy();
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
#w2d_get_last_snapshot_state_v1_handler(task) {
|
|
275
|
+
const builder = new addon_wrapper.AdaptObjectBuilder();
|
|
276
|
+
try {
|
|
277
|
+
const message = builder.Attach(task.data);
|
|
278
|
+
const body = builder.Attach(addon_wrapper.Protocol.GetBody(message));
|
|
279
|
+
const from = builder.Attach(addon_wrapper.Protocol.GetFrom(message));
|
|
280
|
+
const cid = body.Reduce(addon_wrapper.Protocol.FieldName.packet_id);
|
|
281
|
+
const res = this.#data_storage.get_last_snapshot_state_id(cid.Visualize());
|
|
282
|
+
const packet_info = builder.Attach(this.#protocol_container.CreateDictionary().Mutate(addon_wrapper.Protocol.FieldName.packet_id, cid).Mutate(addon_wrapper.Protocol.FieldName.state, res));
|
|
283
|
+
const args = builder.Attach(this.#protocol_container.CreateDictionary().Mutate(addon_wrapper.Protocol.FieldName.packet_info, packet_info));
|
|
284
|
+
const message_to_send = addon_wrapper.Protocol.CreateProtocolMessage(addon_wrapper.Protocol.MessageName.d2w_last_snapshot_state, { message_hash: message.GetHash(), to: from, body: args }).Detach();
|
|
285
|
+
this.queue.push({
|
|
286
|
+
kind: "outgoing_message",
|
|
287
|
+
data: message_to_send,
|
|
288
|
+
connection_id: task.connection_id
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
finally {
|
|
292
|
+
builder.Destroy();
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
#w2d_get_last_state_v1_handler(task) {
|
|
296
|
+
const builder = new addon_wrapper.AdaptObjectBuilder();
|
|
297
|
+
try {
|
|
298
|
+
const message = builder.Attach(task.data);
|
|
299
|
+
const body = builder.Attach(addon_wrapper.Protocol.GetBody(message));
|
|
300
|
+
const from = builder.Attach(addon_wrapper.Protocol.GetFrom(message));
|
|
301
|
+
const cid = body.Reduce(addon_wrapper.Protocol.FieldName.packet_id);
|
|
302
|
+
const res = this.#data_storage.get_last_state_id(cid.Visualize());
|
|
303
|
+
const packet_info = builder.Attach(this.#protocol_container.CreateDictionary().Mutate(addon_wrapper.Protocol.FieldName.packet_id, cid).Mutate(addon_wrapper.Protocol.FieldName.state, res));
|
|
304
|
+
const args = builder.Attach(this.#protocol_container.CreateDictionary().Mutate(addon_wrapper.Protocol.FieldName.packet_info, packet_info));
|
|
305
|
+
const message_to_send = addon_wrapper.Protocol.CreateProtocolMessage(addon_wrapper.Protocol.MessageName.d2w_last_snapshot_state, { message_hash: message.GetHash(), to: from, body: args }).Detach();
|
|
306
|
+
this.queue.push({
|
|
307
|
+
kind: "outgoing_message",
|
|
308
|
+
data: message_to_send,
|
|
309
|
+
connection_id: task.connection_id
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
finally {
|
|
313
|
+
builder.Destroy();
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
#w2d_get_transaction_chain_v1_handler(task) {
|
|
317
|
+
const builder = new addon_wrapper.AdaptObjectBuilder();
|
|
318
|
+
try {
|
|
319
|
+
const message = builder.Attach(task.data);
|
|
320
|
+
const body = builder.Attach(addon_wrapper.Protocol.GetBody(message));
|
|
321
|
+
const init_state = body.Reduce(addon_wrapper.Protocol.FieldName.init_state);
|
|
322
|
+
const final_state = body.Reduce(addon_wrapper.Protocol.FieldName.final_state_id);
|
|
323
|
+
const res = this.#data_storage.get_transactions_chain(init_state.Visualize().substring(2), final_state.Visualize().substring(2));
|
|
324
|
+
let trns = this.#protocol_container.CreateDictionary();
|
|
325
|
+
// TODO
|
|
326
|
+
}
|
|
327
|
+
finally {
|
|
328
|
+
builder.Destroy();
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
#w2d_read_snapshot_v1_handler(task) {
|
|
332
|
+
const builder = new addon_wrapper.AdaptObjectBuilder();
|
|
333
|
+
try {
|
|
334
|
+
const message = builder.Attach(task.data);
|
|
335
|
+
const body = builder.Attach(addon_wrapper.Protocol.GetBody(message));
|
|
336
|
+
const from = builder.Attach(addon_wrapper.Protocol.GetFrom(message));
|
|
337
|
+
const state = body.Reduce(addon_wrapper.Protocol.FieldName.state);
|
|
338
|
+
const res = this.#data_storage.read_snapshot(state.Visualize().substring(2));
|
|
339
|
+
const args = builder.Attach(this.#protocol_container.CreateDictionary().Mutate(addon_wrapper.Protocol.FieldName.packet_data, this.#protocol_container.ParseValue(Buffer.from(res))));
|
|
340
|
+
const message_to_send = addon_wrapper.Protocol.CreateProtocolMessage(addon_wrapper.Protocol.MessageName.d2w_snapshot, { message_hash: message.GetHash(), to: from, body: args }).Detach();
|
|
341
|
+
this.queue.push({
|
|
342
|
+
kind: "outgoing_message",
|
|
343
|
+
data: message_to_send,
|
|
344
|
+
connection_id: task.connection_id
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
finally {
|
|
348
|
+
builder.Destroy();
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
#w2d_write_snapshot_v1_handler(task) {
|
|
352
|
+
logging.debug("Write snapshot v1 handler");
|
|
353
|
+
const builder = new addon_wrapper.AdaptObjectBuilder();
|
|
354
|
+
try {
|
|
355
|
+
const message = builder.Attach(task.data);
|
|
356
|
+
const body = builder.Attach(addon_wrapper.Protocol.GetBody(message));
|
|
357
|
+
const from = builder.Attach(addon_wrapper.Protocol.GetFrom(message));
|
|
358
|
+
const packet = body.Reduce(addon_wrapper.Protocol.FieldName.packet);
|
|
359
|
+
const packet_data = packet.Reduce(addon_wrapper.Protocol.FieldName.packet_data);
|
|
360
|
+
const packet_info = packet.Reduce(addon_wrapper.Protocol.FieldName.packet_info);
|
|
361
|
+
const cid = packet_info.Reduce(addon_wrapper.Protocol.FieldName.packet_id);
|
|
362
|
+
const state = packet_info.Reduce(addon_wrapper.Protocol.FieldName.state);
|
|
363
|
+
this.#data_storage.write_snapshot(cid.Visualize(), state.Visualize().substring(2), packet_data.GetBinary());
|
|
364
|
+
const message_to_send = addon_wrapper.Protocol.CreateProtocolMessage(addon_wrapper.Protocol.MessageName.d2w_write_snapshot_confirm, { message_hash: message.GetHash(), to: from }).Detach();
|
|
365
|
+
this.queue.push({
|
|
366
|
+
kind: "outgoing_message",
|
|
367
|
+
data: message_to_send,
|
|
368
|
+
connection_id: task.connection_id
|
|
369
|
+
});
|
|
370
|
+
}
|
|
371
|
+
catch (e) {
|
|
372
|
+
logging.error(e instanceof Error ? e.message : e, "while writing snapshot to the data storage");
|
|
373
|
+
}
|
|
374
|
+
finally {
|
|
375
|
+
builder.Destroy();
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
#w2d_write_transaction_v1_handler(task) {
|
|
379
|
+
const builder = new addon_wrapper.AdaptObjectBuilder();
|
|
380
|
+
try {
|
|
381
|
+
const message = builder.Attach(task.data);
|
|
382
|
+
const body = builder.Attach(addon_wrapper.Protocol.GetBody(message));
|
|
383
|
+
const from = builder.Attach(addon_wrapper.Protocol.GetFrom(message));
|
|
384
|
+
const packet_info = body.Reduce(addon_wrapper.Protocol.FieldName.packet_info);
|
|
385
|
+
const state_change = body.Reduce(addon_wrapper.Protocol.FieldName.state_change);
|
|
386
|
+
const final_state_id = state_change.Reduce(addon_wrapper.Protocol.FieldName.final_state_id);
|
|
387
|
+
const trn = state_change.Reduce(addon_wrapper.Protocol.FieldName.transaction).Serialize();
|
|
388
|
+
const cid = packet_info.Reduce(addon_wrapper.Protocol.FieldName.packet_id);
|
|
389
|
+
const state = packet_info.Reduce(addon_wrapper.Protocol.FieldName.state);
|
|
390
|
+
this.#data_storage.write_transaction(cid.Visualize(), state.Visualize().substring(2), final_state_id.Visualize().substring(2), trn);
|
|
391
|
+
const message_to_send = addon_wrapper.Protocol.CreateProtocolMessage(addon_wrapper.Protocol.MessageName.d2w_write_transaction_confirm, { message_hash: message.GetHash(), to: from }).Detach();
|
|
392
|
+
this.queue.push({
|
|
393
|
+
kind: "outgoing_message",
|
|
394
|
+
data: message_to_send,
|
|
395
|
+
connection_id: task.connection_id
|
|
396
|
+
});
|
|
397
|
+
}
|
|
398
|
+
finally {
|
|
399
|
+
builder.Destroy();
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
#w2d_request_backup_data_v1_handler(task) {
|
|
403
|
+
AdaptObjectBuilder.execute_and_collect_garbage(builder => {
|
|
404
|
+
const message = builder.Attach(task.data);
|
|
405
|
+
let message_to_send_body;
|
|
406
|
+
try {
|
|
407
|
+
const body = builder.Attach(addon_wrapper.Protocol.GetBody(message));
|
|
408
|
+
const state_mufl = body.Reduce(addon_wrapper.Protocol.FieldName.state);
|
|
409
|
+
const cid = body.Reduce(addon_wrapper.Protocol.FieldName.packet_id);
|
|
410
|
+
const state = state_mufl.IsNil() ? this.#data_storage.get_last_state_id(cid.Visualize()) : state_mufl.Visualize().substring(2);
|
|
411
|
+
logging.debug("Attempting to solve request data request: ", new LazyMessage(() => { cid: cid.Visualize(), state; }));
|
|
412
|
+
const last_snapshot_state_id = this.#data_storage.get_last_snapshot_state_id(state);
|
|
413
|
+
logging.debug("Found id of the last snapshot state: ", last_snapshot_state_id);
|
|
414
|
+
const snapshot = this.#data_storage.read_snapshot(last_snapshot_state_id);
|
|
415
|
+
const transaction_chain = this.#data_storage.get_transactions_chain(last_snapshot_state_id, state); // array of encoded transactions
|
|
416
|
+
logging.debug("Found transaction chain leading from the last snapshot state to the current state. Number of transactions is ", transaction_chain.length);
|
|
417
|
+
const transaction_chain_mufl = transaction_chain.reduce((adapt_value, cur, idx) => { return adapt_value.Mutate(idx, builder.Attach(this.#protocol_container.ParseValue(Buffer.from(cur)))); }, builder.Attach(this.#protocol_container.CreateDictionary()));
|
|
418
|
+
logging.debug("Transaction chain MUFL: ", new LazyMessage(() => transaction_chain_mufl.Visualize()));
|
|
419
|
+
message_to_send_body = addon_wrapper.Protocol.GetProtocolContainer().CreateDictionary().
|
|
420
|
+
Mutate(addon_wrapper.Protocol.FieldName.packet_data, builder.Attach(addon_wrapper.Protocol.GetProtocolContainer().NewBinaryFromBuffer(Buffer.from(snapshot)))).
|
|
421
|
+
Mutate(addon_wrapper.Protocol.FieldName.transaction_chain, transaction_chain_mufl).Detach();
|
|
422
|
+
}
|
|
423
|
+
catch (_) {
|
|
424
|
+
message_to_send_body = addon_wrapper.Protocol.GetProtocolContainer().CreateDictionary().
|
|
425
|
+
Mutate(addon_wrapper.Protocol.FieldName.packet_data, builder.Attach(addon_wrapper.Protocol.GetProtocolContainer().NewBinaryFromBuffer(Buffer.from("")))).
|
|
426
|
+
Mutate(addon_wrapper.Protocol.FieldName.transaction_chain, addon_wrapper.Protocol.GetProtocolContainer().CreateDictionary()).Detach();
|
|
427
|
+
}
|
|
428
|
+
const message_to_send = addon_wrapper.Protocol.CreateProtocolMessage(addon_wrapper.Protocol.MessageName.d2w_backup_data, {
|
|
429
|
+
message_hash: message.GetHash(),
|
|
430
|
+
body: message_to_send_body
|
|
431
|
+
});
|
|
432
|
+
this.queue.push({
|
|
433
|
+
kind: 'outgoing_message',
|
|
434
|
+
data: message_to_send,
|
|
435
|
+
connection_id: task.connection_id
|
|
436
|
+
});
|
|
437
|
+
});
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
//# sourceMappingURL=data_storage.js.map
|