neo4j-ruby-driver 1.7.5 → 4.4.0.alpha.2
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.
- checksums.yaml +4 -4
- data/README.md +26 -42
- data/lib/loader.rb +5 -3
- data/lib/neo4j/driver/auto_closable.rb +2 -2
- data/lib/neo4j/driver/exceptions/authentication_exception.rb +6 -1
- data/lib/neo4j/driver/exceptions/authorization_expired_exception.rb +14 -0
- data/lib/neo4j/driver/{types/bytes.rb → exceptions/certificate_exception.rb} +2 -2
- data/lib/neo4j/driver/exceptions/client_exception.rb +3 -0
- data/lib/neo4j/driver/exceptions/connection_read_timeout_exception.rb +14 -0
- data/lib/neo4j/driver/exceptions/database_exception.rb +3 -0
- data/lib/neo4j/driver/exceptions/discovery_exception.rb +16 -0
- data/lib/neo4j/driver/exceptions/fatal_discovery_exception.rb +13 -0
- data/lib/neo4j/driver/exceptions/protocol_exception.rb +7 -0
- data/lib/neo4j/driver/exceptions/result_consumed_exception.rb +13 -0
- data/lib/neo4j/driver/exceptions/security_exception.rb +5 -1
- data/lib/neo4j/driver/exceptions/service_unavailable_exception.rb +2 -0
- data/lib/neo4j/driver/exceptions/session_expired_exception.rb +4 -0
- data/lib/neo4j/driver/exceptions/token_expired_exception.rb +15 -0
- data/lib/neo4j/driver/exceptions/transaction_nesting_exception.rb +11 -0
- data/lib/neo4j/driver/exceptions/transient_exception.rb +3 -0
- data/lib/neo4j/driver/exceptions/untrusted_server_exception.rb +1 -0
- data/lib/neo4j/driver/exceptions/value/lossy_coercion.rb +15 -0
- data/lib/neo4j/driver/exceptions/value/not_multi_valued.rb +13 -0
- data/lib/neo4j/driver/exceptions/value/uncoercible.rb +15 -0
- data/lib/neo4j/driver/exceptions/value/unsizable.rb +12 -0
- data/lib/neo4j/driver/exceptions/value/value_exception.rb +12 -0
- data/lib/neo4j/driver/internal/bolt_server_address.rb +97 -0
- data/lib/neo4j/driver/internal/duration_normalizer.rb +1 -1
- data/lib/neo4j/driver/internal/validator.rb +5 -4
- data/{ffi/neo4j/driver/summary/statement_type.rb → lib/neo4j/driver/summary/query_type.rb} +1 -3
- data/lib/neo4j/driver/synchronizable.rb +23 -0
- data/lib/neo4j_ruby_driver.rb +5 -10
- data/{ffi → ruby}/neo4j/driver/access_mode.rb +2 -2
- data/ruby/neo4j/driver/auth_tokens.rb +34 -0
- data/ruby/neo4j/driver/bookmark.rb +21 -0
- data/ruby/neo4j/driver/config.rb +91 -0
- data/ruby/neo4j/driver/graph_database.rb +140 -0
- data/ruby/neo4j/driver/internal/async/connection/bolt_protocol_util.rb +51 -0
- data/ruby/neo4j/driver/internal/async/connection/bootstrap_factory.rb +22 -0
- data/ruby/neo4j/driver/internal/async/connection/channel_attributes.rb +31 -0
- data/ruby/neo4j/driver/internal/async/connection/channel_connected_listener.rb +32 -0
- data/ruby/neo4j/driver/internal/async/connection/channel_connector_impl.rb +77 -0
- data/ruby/neo4j/driver/internal/async/connection/channel_pipeline_builder_impl.rb +22 -0
- data/ruby/neo4j/driver/internal/async/connection/direct_connection.rb +30 -0
- data/ruby/neo4j/driver/internal/async/connection/event_loop_group_factory.rb +83 -0
- data/ruby/neo4j/driver/internal/async/connection/handshake_completed_listener.rb +27 -0
- data/ruby/neo4j/driver/internal/async/connection/handshake_handler.rb +113 -0
- data/ruby/neo4j/driver/internal/async/connection/netty_channel_initializer.rb +57 -0
- data/ruby/neo4j/driver/internal/async/connection/netty_domain_name_resolver.rb +26 -0
- data/ruby/neo4j/driver/internal/async/connection/netty_domain_name_resolver_group.rb +19 -0
- data/ruby/neo4j/driver/internal/async/connection/routing_connection.rb +36 -0
- data/ruby/neo4j/driver/internal/async/connection/stream.rb +12 -0
- data/ruby/neo4j/driver/internal/async/connection/stream_reader.rb +16 -0
- data/ruby/neo4j/driver/internal/async/connection_context.rb +10 -0
- data/ruby/neo4j/driver/internal/async/immutable_connection_context.rb +24 -0
- data/ruby/neo4j/driver/internal/async/inbound/byte_buf_input.rb +30 -0
- data/ruby/neo4j/driver/internal/async/inbound/channel_error_handler.rb +77 -0
- data/ruby/neo4j/driver/internal/async/inbound/chunk_decoder.rb +41 -0
- data/ruby/neo4j/driver/internal/async/inbound/connect_timeout_handler.rb +32 -0
- data/ruby/neo4j/driver/internal/async/inbound/connection_read_timeout_handler.rb +17 -0
- data/ruby/neo4j/driver/internal/async/inbound/inbound_message_dispatcher.rb +172 -0
- data/ruby/neo4j/driver/internal/async/inbound/inbound_message_handler.rb +42 -0
- data/ruby/neo4j/driver/internal/async/inbound/message_decoder.rb +51 -0
- data/ruby/neo4j/driver/internal/async/internal_async_session.rb +98 -0
- data/ruby/neo4j/driver/internal/async/internal_async_transaction.rb +13 -0
- data/ruby/neo4j/driver/internal/async/leak_logging_network_session.rb +34 -0
- data/ruby/neo4j/driver/internal/async/network_connection.rb +196 -0
- data/ruby/neo4j/driver/internal/async/network_session.rb +152 -0
- data/ruby/neo4j/driver/internal/async/outbound/chunk_aware_byte_buf_output.rb +110 -0
- data/ruby/neo4j/driver/internal/async/outbound/outbound_message_handler.rb +39 -0
- data/ruby/neo4j/driver/internal/async/pool/channel.rb +63 -0
- data/ruby/neo4j/driver/internal/async/pool/connection_pool_impl.rb +149 -0
- data/ruby/neo4j/driver/internal/async/pool/controller.rb +25 -0
- data/ruby/neo4j/driver/internal/async/pool/netty_channel_health_checker.rb +87 -0
- data/ruby/neo4j/driver/internal/async/pool/netty_channel_pool.rb +52 -0
- data/ruby/neo4j/driver/internal/async/pool/netty_channel_tracker.rb +137 -0
- data/ruby/neo4j/driver/internal/async/pool/network_connection_factory.rb +21 -0
- data/ruby/neo4j/driver/internal/async/pool/pool_settings.rb +34 -0
- data/ruby/neo4j/driver/internal/async/result_cursors_holder.rb +17 -0
- data/ruby/neo4j/driver/internal/async/unmanaged_transaction.rb +214 -0
- data/ruby/neo4j/driver/internal/bookmark_holder.rb +9 -0
- data/ruby/neo4j/driver/internal/cluster/cluster_composition.rb +58 -0
- data/ruby/neo4j/driver/internal/cluster/cluster_composition_lookup_result.rb +14 -0
- data/ruby/neo4j/driver/internal/cluster/cluster_routing_table.rb +139 -0
- data/ruby/neo4j/driver/internal/cluster/identity_resolver.rb +13 -0
- data/ruby/neo4j/driver/internal/cluster/loadbalancing/least_connected_load_balancing_strategy.rb +68 -0
- data/ruby/neo4j/driver/internal/cluster/loadbalancing/load_balancer.rb +159 -0
- data/ruby/neo4j/driver/internal/cluster/loadbalancing/round_robin_array_index.rb +13 -0
- data/ruby/neo4j/driver/internal/cluster/multi_databases_routing_procedure_runner.rb +34 -0
- data/ruby/neo4j/driver/internal/cluster/rediscovery_impl.rb +238 -0
- data/ruby/neo4j/driver/internal/cluster/route_message_routing_procedure_runner.rb +43 -0
- data/ruby/neo4j/driver/internal/cluster/routing_context.rb +77 -0
- data/ruby/neo4j/driver/internal/cluster/routing_procedure_cluster_composition_provider.rb +64 -0
- data/ruby/neo4j/driver/internal/cluster/routing_procedure_response.rb +19 -0
- data/ruby/neo4j/driver/internal/cluster/routing_settings.rb +24 -0
- data/ruby/neo4j/driver/internal/cluster/routing_table_handler_impl.rb +116 -0
- data/ruby/neo4j/driver/internal/cluster/routing_table_registry_impl.rb +140 -0
- data/ruby/neo4j/driver/internal/cluster/single_database_routing_procedure_runner.rb +76 -0
- data/ruby/neo4j/driver/internal/connection_settings.rb +16 -0
- data/ruby/neo4j/driver/internal/cursor/async_result_cursor_impl.rb +76 -0
- data/ruby/neo4j/driver/internal/cursor/async_result_cursor_only_factory.rb +29 -0
- data/ruby/neo4j/driver/internal/cursor/disposable_async_result_cursor.rb +59 -0
- data/ruby/neo4j/driver/internal/cursor/result_cursor_factory_impl.rb +29 -0
- data/ruby/neo4j/driver/internal/cursor/rx_result_cursor_impl.rb +110 -0
- data/ruby/neo4j/driver/internal/database_name.rb +12 -0
- data/ruby/neo4j/driver/internal/database_name_util.rb +37 -0
- data/ruby/neo4j/driver/internal/default_bookmark_holder.rb +15 -0
- data/ruby/neo4j/driver/internal/default_domain_name_resolver.rb +11 -0
- data/ruby/neo4j/driver/internal/direct_connection_provider.rb +40 -0
- data/ruby/neo4j/driver/internal/driver_factory.rb +127 -0
- data/ruby/neo4j/driver/internal/handlers/begin_tx_response_handler.rb +20 -0
- data/ruby/neo4j/driver/internal/handlers/channel_releasing_reset_response_handler.rb +29 -0
- data/ruby/neo4j/driver/internal/handlers/commit_tx_response_handler.rb +25 -0
- data/ruby/neo4j/driver/internal/handlers/hello_response_handler.rb +65 -0
- data/ruby/neo4j/driver/internal/handlers/init_response_handler.rb +34 -0
- data/ruby/neo4j/driver/internal/handlers/legacy_pull_all_response_handler.rb +228 -0
- data/ruby/neo4j/driver/internal/handlers/no_op_response_handler.rb +16 -0
- data/ruby/neo4j/driver/internal/handlers/ping_response_handler.rb +29 -0
- data/ruby/neo4j/driver/internal/handlers/pull_handlers.rb +32 -0
- data/ruby/neo4j/driver/internal/handlers/pulln/auto_pull_response_handler.rb +174 -0
- data/ruby/neo4j/driver/internal/handlers/pulln/basic_pull_response_handler.rb +288 -0
- data/ruby/neo4j/driver/internal/handlers/pulln/fetch_size_util.rb +20 -0
- data/ruby/neo4j/driver/internal/handlers/reset_response_handler.rb +34 -0
- data/ruby/neo4j/driver/internal/handlers/rollback_tx_response_handler.rb +19 -0
- data/ruby/neo4j/driver/internal/handlers/route_message_response_handler.rb +21 -0
- data/ruby/neo4j/driver/internal/handlers/routing_response_handler.rb +70 -0
- data/ruby/neo4j/driver/internal/handlers/run_response_handler.rb +37 -0
- data/ruby/neo4j/driver/internal/handlers/session_pull_response_completion_listener.rb +34 -0
- data/ruby/neo4j/driver/internal/handlers/transaction_pull_response_completion_listener.rb +20 -0
- data/ruby/neo4j/driver/internal/impersonation_util.rb +22 -0
- data/ruby/neo4j/driver/internal/internal_bookmark.rb +38 -0
- data/ruby/neo4j/driver/internal/internal_database_name.rb +11 -0
- data/ruby/neo4j/driver/internal/internal_driver.rb +78 -0
- data/ruby/neo4j/driver/internal/internal_entity.rb +22 -0
- data/ruby/neo4j/driver/internal/internal_node.rb +21 -0
- data/ruby/neo4j/driver/internal/internal_pair.rb +9 -0
- data/ruby/neo4j/driver/internal/internal_path.rb +35 -0
- data/ruby/neo4j/driver/internal/internal_point2_d.rb +9 -0
- data/ruby/neo4j/driver/internal/internal_point3_d.rb +6 -0
- data/{ffi → ruby}/neo4j/driver/internal/internal_record.rb +2 -1
- data/ruby/neo4j/driver/internal/internal_relationship.rb +26 -0
- data/ruby/neo4j/driver/internal/internal_result.rb +60 -0
- data/ruby/neo4j/driver/internal/internal_session.rb +81 -0
- data/ruby/neo4j/driver/internal/internal_transaction.rb +48 -0
- data/ruby/neo4j/driver/internal/logging/channel_activity_logger.rb +29 -0
- data/ruby/neo4j/driver/internal/logging/channel_error_logger.rb +17 -0
- data/ruby/neo4j/driver/internal/logging/prefixed_logger.rb +19 -0
- data/ruby/neo4j/driver/internal/logging/reformatted_logger.rb +17 -0
- data/ruby/neo4j/driver/internal/messaging/abstract_message_writer.rb +23 -0
- data/ruby/neo4j/driver/internal/messaging/bolt_protocol.rb +30 -0
- data/ruby/neo4j/driver/internal/messaging/bolt_protocol_version.rb +46 -0
- data/ruby/neo4j/driver/internal/messaging/common/common_message_reader.rb +51 -0
- data/ruby/neo4j/driver/internal/messaging/common/common_value.rb +31 -0
- data/ruby/neo4j/driver/internal/messaging/common/common_value_packer.rb +101 -0
- data/ruby/neo4j/driver/internal/messaging/common/common_value_unpacker.rb +234 -0
- data/ruby/neo4j/driver/internal/messaging/encode/begin_message_encoder.rb +15 -0
- data/ruby/neo4j/driver/internal/messaging/encode/commit_message_encoder.rb +14 -0
- data/ruby/neo4j/driver/internal/messaging/encode/discard_all_message_encoder.rb +14 -0
- data/ruby/neo4j/driver/internal/messaging/encode/discard_message_encoder.rb +15 -0
- data/ruby/neo4j/driver/internal/messaging/encode/goodbye_message_encoder.rb +14 -0
- data/ruby/neo4j/driver/internal/messaging/encode/hello_message_encoder.rb +15 -0
- data/ruby/neo4j/driver/internal/messaging/encode/init_message_encoder.rb +16 -0
- data/ruby/neo4j/driver/internal/messaging/encode/pull_all_message_encoder.rb +14 -0
- data/ruby/neo4j/driver/internal/messaging/encode/pull_message_encoder.rb +15 -0
- data/ruby/neo4j/driver/internal/messaging/encode/reset_message_encoder.rb +14 -0
- data/ruby/neo4j/driver/internal/messaging/encode/rollback_message_encoder.rb +14 -0
- data/ruby/neo4j/driver/internal/messaging/encode/route_message_encoder.rb +18 -0
- data/ruby/neo4j/driver/internal/messaging/encode/route_v44_message_encoder.rb +27 -0
- data/ruby/neo4j/driver/internal/messaging/encode/run_message_encoder.rb +16 -0
- data/ruby/neo4j/driver/internal/messaging/encode/run_with_metadata_message_encoder.rb +17 -0
- data/ruby/neo4j/driver/internal/messaging/request/abstract_streaming_message.rb +22 -0
- data/ruby/neo4j/driver/internal/messaging/request/begin_message.rb +26 -0
- data/ruby/neo4j/driver/internal/messaging/request/commit_message.rb +20 -0
- data/ruby/neo4j/driver/internal/messaging/request/discard_all_message.rb +20 -0
- data/ruby/neo4j/driver/internal/messaging/request/discard_message.rb +23 -0
- data/ruby/neo4j/driver/internal/messaging/request/goodbye_message.rb +20 -0
- data/ruby/neo4j/driver/internal/messaging/request/hello_message.rb +31 -0
- data/ruby/neo4j/driver/internal/messaging/request/init_message.rb +19 -0
- data/ruby/neo4j/driver/internal/messaging/request/message_with_metadata.rb +10 -0
- data/ruby/neo4j/driver/internal/messaging/request/multi_database_util.rb +26 -0
- data/ruby/neo4j/driver/internal/messaging/request/pull_all_message.rb +23 -0
- data/ruby/neo4j/driver/internal/messaging/request/pull_message.rb +22 -0
- data/ruby/neo4j/driver/internal/messaging/request/reset_message.rb +32 -0
- data/ruby/neo4j/driver/internal/messaging/request/rollback_message.rb +20 -0
- data/ruby/neo4j/driver/internal/messaging/request/route_message.rb +33 -0
- data/ruby/neo4j/driver/internal/messaging/request/run_message.rb +23 -0
- data/ruby/neo4j/driver/internal/messaging/request/run_with_metadata_message.rb +47 -0
- data/ruby/neo4j/driver/internal/messaging/request/transaction_metadata_builder.rb +24 -0
- data/ruby/neo4j/driver/internal/messaging/response/failure_message.rb +40 -0
- data/ruby/neo4j/driver/internal/messaging/response/ignored_message.rb +29 -0
- data/ruby/neo4j/driver/internal/messaging/response/record_message.rb +33 -0
- data/ruby/neo4j/driver/internal/messaging/response/success_message.rb +34 -0
- data/ruby/neo4j/driver/internal/messaging/v3/bolt_protocol_v3.rb +79 -0
- data/ruby/neo4j/driver/internal/messaging/v3/message_format_v3.rb +17 -0
- data/ruby/neo4j/driver/internal/messaging/v3/message_writer_v3.rb +27 -0
- data/ruby/neo4j/driver/internal/messaging/v4/bolt_protocol_v4.rb +29 -0
- data/ruby/neo4j/driver/internal/messaging/v4/message_format_v4.rb +17 -0
- data/ruby/neo4j/driver/internal/messaging/v4/message_writer_v4.rb +28 -0
- data/ruby/neo4j/driver/internal/messaging/v41/bolt_protocol_v41.rb +25 -0
- data/ruby/neo4j/driver/internal/messaging/v42/bolt_protocol_v42.rb +13 -0
- data/ruby/neo4j/driver/internal/messaging/v43/bolt_protocol_v43.rb +19 -0
- data/ruby/neo4j/driver/internal/messaging/v43/message_format_v43.rb +18 -0
- data/ruby/neo4j/driver/internal/messaging/v43/message_writer_v43.rb +34 -0
- data/ruby/neo4j/driver/internal/messaging/v44/bolt_protocol_v44.rb +17 -0
- data/ruby/neo4j/driver/internal/messaging/v44/message_format_v44.rb +18 -0
- data/ruby/neo4j/driver/internal/messaging/v44/message_writer_v44.rb +26 -0
- data/ruby/neo4j/driver/internal/metrics/connection_pool_metrics_listener.rb +34 -0
- data/ruby/neo4j/driver/internal/metrics/internal_abstract_metrics.rb +46 -0
- data/ruby/neo4j/driver/internal/metrics/internal_connection_pool_metrics.rb +105 -0
- data/ruby/neo4j/driver/internal/metrics/internal_metrics.rb +82 -0
- data/ruby/neo4j/driver/internal/metrics/internal_metrics_provider.rb +18 -0
- data/ruby/neo4j/driver/internal/metrics/listener_event.rb +17 -0
- data/ruby/neo4j/driver/internal/metrics/metrics_provider.rb +24 -0
- data/ruby/neo4j/driver/internal/metrics/time_recorder_listener_event.rb +15 -0
- data/ruby/neo4j/driver/internal/packstream/byte_array_incompatible_packer.rb +12 -0
- data/ruby/neo4j/driver/internal/packstream/pack_input.rb +47 -0
- data/ruby/neo4j/driver/internal/packstream/pack_output.rb +39 -0
- data/ruby/neo4j/driver/internal/packstream/pack_stream.rb +326 -0
- data/ruby/neo4j/driver/internal/packstream/pack_type.rb +17 -0
- data/ruby/neo4j/driver/internal/retry/exponential_backoff_retry_logic.rb +151 -0
- data/ruby/neo4j/driver/internal/revocation_strategy.rb +19 -0
- data/ruby/neo4j/driver/internal/scheme.rb +32 -0
- data/ruby/neo4j/driver/internal/security/internal_auth_token.rb +15 -0
- data/ruby/neo4j/driver/internal/security/security_plan_impl.rb +92 -0
- data/ruby/neo4j/driver/internal/security_setting.rb +73 -0
- data/ruby/neo4j/driver/internal/session_factory_impl.rb +32 -0
- data/ruby/neo4j/driver/internal/spi/connection.rb +19 -0
- data/ruby/neo4j/driver/internal/spi/connection_pool.rb +9 -0
- data/ruby/neo4j/driver/internal/spi/response_handler.rb +23 -0
- data/ruby/neo4j/driver/internal/summary/internal_database_info.rb +7 -0
- data/ruby/neo4j/driver/internal/summary/internal_input_position.rb +11 -0
- data/ruby/neo4j/driver/internal/summary/internal_notification.rb +16 -0
- data/ruby/neo4j/driver/internal/summary/internal_plan.rb +41 -0
- data/ruby/neo4j/driver/internal/summary/internal_profiled_plan.rb +32 -0
- data/ruby/neo4j/driver/internal/summary/internal_result_summary.rb +33 -0
- data/ruby/neo4j/driver/internal/summary/internal_server_info.rb +6 -0
- data/ruby/neo4j/driver/internal/summary/internal_summary_counters.rb +18 -0
- data/ruby/neo4j/driver/internal/svm/netty_substitutions.rb +196 -0
- data/ruby/neo4j/driver/internal/svm/z_lib_substitutions.rb +21 -0
- data/ruby/neo4j/driver/internal/util/certificate_tool.rb +65 -0
- data/ruby/neo4j/driver/internal/util/clock.rb +29 -0
- data/ruby/neo4j/driver/internal/util/error_util.rb +104 -0
- data/ruby/neo4j/driver/internal/util/extract.rb +123 -0
- data/ruby/neo4j/driver/internal/util/format.rb +39 -0
- data/ruby/neo4j/driver/internal/util/futures.rb +99 -0
- data/ruby/neo4j/driver/internal/util/iterables.rb +35 -0
- data/ruby/neo4j/driver/internal/util/lock_util.rb +23 -0
- data/ruby/neo4j/driver/internal/util/metadata_extractor.rb +109 -0
- data/ruby/neo4j/driver/internal/util/mutex.rb +9 -0
- data/ruby/neo4j/driver/internal/util/preconditions.rb +16 -0
- data/ruby/neo4j/driver/internal/util/server_version.rb +60 -0
- data/ruby/neo4j/driver/logging1.rb +51 -0
- data/ruby/neo4j/driver/net/server_address1.rb +9 -0
- data/ruby/neo4j/driver/query.rb +48 -0
- data/ruby/neo4j/driver/records.rb +13 -0
- data/ruby/neo4j/driver/session_config.rb +15 -0
- data/ruby/neo4j/driver/transaction_config.rb +46 -0
- data/ruby/neo4j/driver/values.rb +26 -0
- data/{lib → ruby}/neo4j/driver/version.rb +1 -1
- data/ruby/neo4j/driver.rb +30 -0
- metadata +267 -92
- data/ffi/bolt/address.rb +0 -11
- data/ffi/bolt/address_resolver.rb +0 -12
- data/ffi/bolt/address_set.rb +0 -9
- data/ffi/bolt/auth.rb +0 -10
- data/ffi/bolt/auto_releasable.rb +0 -22
- data/ffi/bolt/boolean.rb +0 -9
- data/ffi/bolt/bytes.rb +0 -10
- data/ffi/bolt/config.rb +0 -45
- data/ffi/bolt/connection.rb +0 -44
- data/ffi/bolt/connector.rb +0 -17
- data/ffi/bolt/dictionary.rb +0 -15
- data/ffi/bolt/error.rb +0 -74
- data/ffi/bolt/float.rb +0 -9
- data/ffi/bolt/integer.rb +0 -9
- data/ffi/bolt/library.rb +0 -12
- data/ffi/bolt/lifecycle.rb +0 -9
- data/ffi/bolt/list.rb +0 -10
- data/ffi/bolt/log.rb +0 -16
- data/ffi/bolt/socket_options.rb +0 -14
- data/ffi/bolt/status.rb +0 -25
- data/ffi/bolt/string.rb +0 -9
- data/ffi/bolt/structure.rb +0 -10
- data/ffi/bolt/value.rb +0 -35
- data/ffi/neo4j/driver/auth_tokens.rb +0 -18
- data/ffi/neo4j/driver/config.rb +0 -40
- data/ffi/neo4j/driver/graph_database.rb +0 -52
- data/ffi/neo4j/driver/internal/async/access_mode_connection.rb +0 -19
- data/ffi/neo4j/driver/internal/async/direct_connection.rb +0 -106
- data/ffi/neo4j/driver/internal/bolt_server_address.rb +0 -18
- data/ffi/neo4j/driver/internal/bookmarks_holder.rb +0 -30
- data/ffi/neo4j/driver/internal/direct_connection_provider.rb +0 -28
- data/ffi/neo4j/driver/internal/driver_factory.rb +0 -126
- data/ffi/neo4j/driver/internal/error_handling.rb +0 -112
- data/ffi/neo4j/driver/internal/explicit_transaction.rb +0 -146
- data/ffi/neo4j/driver/internal/handlers/pull_all_response_handler.rb +0 -104
- data/ffi/neo4j/driver/internal/handlers/response_handler.rb +0 -49
- data/ffi/neo4j/driver/internal/handlers/run_response_handler.rb +0 -32
- data/ffi/neo4j/driver/internal/handlers/session_pull_all_response_handler.rb +0 -32
- data/ffi/neo4j/driver/internal/handlers/transaction_pull_all_response_handler.rb +0 -23
- data/ffi/neo4j/driver/internal/internal_driver.rb +0 -45
- data/ffi/neo4j/driver/internal/internal_logger.rb +0 -32
- data/ffi/neo4j/driver/internal/internal_resolver.rb +0 -31
- data/ffi/neo4j/driver/internal/internal_statement_result.rb +0 -52
- data/ffi/neo4j/driver/internal/messaging/bolt_protocol.rb +0 -24
- data/ffi/neo4j/driver/internal/messaging/v1/bolt_protocol_v1.rb +0 -59
- data/ffi/neo4j/driver/internal/messaging/v2/bolt_protocol_v2.rb +0 -16
- data/ffi/neo4j/driver/internal/messaging/v3/bolt_protocol_v3.rb +0 -63
- data/ffi/neo4j/driver/internal/network_session.rb +0 -129
- data/ffi/neo4j/driver/internal/retry/exponential_backoff_retry_logic.rb +0 -80
- data/ffi/neo4j/driver/internal/session_factory_impl.rb +0 -28
- data/ffi/neo4j/driver/internal/summary/internal_result_summary.rb +0 -67
- data/ffi/neo4j/driver/internal/summary/internal_server_info.rb +0 -19
- data/ffi/neo4j/driver/internal/summary/internal_summary_counters.rb +0 -23
- data/ffi/neo4j/driver/internal/util/metadata_extractor.rb +0 -15
- data/ffi/neo4j/driver/internal/value/base_time_value.rb +0 -22
- data/ffi/neo4j/driver/internal/value/date_value.rb +0 -25
- data/ffi/neo4j/driver/internal/value/duration_value.rb +0 -27
- data/ffi/neo4j/driver/internal/value/local_date_time_value.rb +0 -24
- data/ffi/neo4j/driver/internal/value/local_time_value.rb +0 -19
- data/ffi/neo4j/driver/internal/value/node_value.rb +0 -18
- data/ffi/neo4j/driver/internal/value/offset_time_value.rb +0 -25
- data/ffi/neo4j/driver/internal/value/path_value.rb +0 -41
- data/ffi/neo4j/driver/internal/value/point2_d_value.rb +0 -24
- data/ffi/neo4j/driver/internal/value/point3_d_value.rb +0 -24
- data/ffi/neo4j/driver/internal/value/relationship_value.rb +0 -18
- data/ffi/neo4j/driver/internal/value/structure_value.rb +0 -42
- data/ffi/neo4j/driver/internal/value/time_with_zone_id_value.rb +0 -25
- data/ffi/neo4j/driver/internal/value/time_with_zone_offset_value.rb +0 -28
- data/ffi/neo4j/driver/internal/value/unbound_relationship_value.rb +0 -18
- data/ffi/neo4j/driver/internal/value/value_adapter.rb +0 -101
- data/ffi/neo4j/driver/net/server_address.rb +0 -13
- data/ffi/neo4j/driver/statement.rb +0 -15
- data/ffi/neo4j/driver/types/entity.rb +0 -21
- data/ffi/neo4j/driver/types/node.rb +0 -16
- data/ffi/neo4j/driver/types/path.rb +0 -35
- data/ffi/neo4j/driver/types/relationship.rb +0 -19
- data/ffi/neo4j/driver.rb +0 -61
- data/lib/neo4j/driver/internal/ruby_signature.rb +0 -18
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module Neo4j::Driver
|
|
2
|
+
module Internal
|
|
3
|
+
module Messaging
|
|
4
|
+
module Request
|
|
5
|
+
class DiscardMessage < AbstractStreamingMessage
|
|
6
|
+
SIGNATURE = 0x2F
|
|
7
|
+
|
|
8
|
+
def self.new_discard_all_message(id)
|
|
9
|
+
new(STREAM_LIMIT_UNLIMITED, id)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def name
|
|
13
|
+
"DISCARD"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def signature
|
|
17
|
+
SIGNATURE
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module Neo4j::Driver
|
|
2
|
+
module Internal
|
|
3
|
+
module Messaging
|
|
4
|
+
module Request
|
|
5
|
+
class HelloMessage < MessageWithMetadata
|
|
6
|
+
SIGNATURE = 0x01
|
|
7
|
+
USER_AGENT_METADATA_KEY = :user_agent
|
|
8
|
+
ROUTING_CONTEXT_METADATA_KEY = :routing
|
|
9
|
+
|
|
10
|
+
def initialize(user_agent, auth_token, routing_context)
|
|
11
|
+
super(build_metadata(user_agent, auth_token, routing_context))
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def to_s
|
|
15
|
+
metadata_copy = metadata.merge(Security::InternalAuthToken::CREDENTIALS_KEY => '******')
|
|
16
|
+
"HELLO #{metadata_copy}"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
def build_metadata(user_agent, auth_token, routing_context)
|
|
22
|
+
auth_token.merge(
|
|
23
|
+
USER_AGENT_METADATA_KEY => user_agent,
|
|
24
|
+
ROUTING_CONTEXT_METADATA_KEY => routing_context
|
|
25
|
+
).compact
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module Neo4j::Driver
|
|
2
|
+
module Internal
|
|
3
|
+
module Messaging
|
|
4
|
+
module Request
|
|
5
|
+
class InitMessage < Struct.new(:user_agent, :auth_token)
|
|
6
|
+
SIGNATURE = 0x01
|
|
7
|
+
|
|
8
|
+
def signature
|
|
9
|
+
SIGNATURE
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def to_s
|
|
13
|
+
"INIT \"#{user_agent}\" {...}"
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Neo4j::Driver
|
|
2
|
+
module Internal
|
|
3
|
+
module Messaging
|
|
4
|
+
module Request
|
|
5
|
+
class MultiDatabaseUtil
|
|
6
|
+
class << self
|
|
7
|
+
def assert_empty_database_name(database_name, bolt_version)
|
|
8
|
+
if database_name.database_name.present?
|
|
9
|
+
raise Exceptions::ClientException, "Database name parameter for selecting database is not supported in Bolt Protocol Version #{bolt_version}. Database name: '#{database_name.description}'"
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def supports_multi_database(connection)
|
|
14
|
+
connection.server_version >= Util::ServerVersion::V4_0_0 &&
|
|
15
|
+
connection.protocol.version >= V4::BoltProtocolV4::VERSION
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def supports_route_message(connection)
|
|
19
|
+
connection.protocol.version >= V43::BoltProtocolV43::VERSION
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module Neo4j::Driver
|
|
2
|
+
module Internal
|
|
3
|
+
module Messaging
|
|
4
|
+
module Request
|
|
5
|
+
# PULL_ALL request message
|
|
6
|
+
# <p>
|
|
7
|
+
# Sent by clients to pull the entirety of the remaining stream down.
|
|
8
|
+
class PullAllMessage
|
|
9
|
+
SIGNATURE = 0x3F
|
|
10
|
+
PULL_ALL = new
|
|
11
|
+
|
|
12
|
+
def signature
|
|
13
|
+
SIGNATURE
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def to_s
|
|
17
|
+
'PULL_ALL'
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module Neo4j::Driver
|
|
2
|
+
module Internal
|
|
3
|
+
module Messaging
|
|
4
|
+
module Request
|
|
5
|
+
# PULL request message
|
|
6
|
+
# <p>
|
|
7
|
+
# Sent by clients to pull the entirety of the remaining stream down.
|
|
8
|
+
class PullMessage < AbstractStreamingMessage
|
|
9
|
+
SIGNATURE = 0x3F
|
|
10
|
+
|
|
11
|
+
def name
|
|
12
|
+
"PULL"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def signature
|
|
16
|
+
SIGNATURE
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module Neo4j::Driver
|
|
2
|
+
module Internal
|
|
3
|
+
module Messaging
|
|
4
|
+
module Request
|
|
5
|
+
# RESET request message
|
|
6
|
+
# <p>
|
|
7
|
+
# Sent by clients to reset a session to a clean state - closing any open transaction or result streams.
|
|
8
|
+
# This also acknowledges receipt of failures sent by the server. This is required to
|
|
9
|
+
# allow optimistic sending of multiple messages before responses have been received - pipelining.
|
|
10
|
+
# <p>
|
|
11
|
+
# When something goes wrong, we want the server to stop processing our already sent messages,
|
|
12
|
+
# but the server cannot tell the difference between what was sent before and after we saw the
|
|
13
|
+
# error.
|
|
14
|
+
# <p>
|
|
15
|
+
# This message acts as a barrier after an error, informing the server that we've seen the error
|
|
16
|
+
# message, and that messages that follow this one are safe to execute.
|
|
17
|
+
class ResetMessage
|
|
18
|
+
SIGNATURE = 0x0F
|
|
19
|
+
RESET = new
|
|
20
|
+
|
|
21
|
+
def to_s
|
|
22
|
+
'RESET'
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def signature
|
|
26
|
+
SIGNATURE
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module Neo4j::Driver
|
|
2
|
+
module Internal
|
|
3
|
+
module Messaging
|
|
4
|
+
module Request
|
|
5
|
+
class RollbackMessage
|
|
6
|
+
SIGNATURE = 0x13
|
|
7
|
+
ROLLBACK = new
|
|
8
|
+
|
|
9
|
+
def signature
|
|
10
|
+
SIGNATURE
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def to_s
|
|
14
|
+
'ROLLBACK'
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module Neo4j::Driver
|
|
2
|
+
module Internal
|
|
3
|
+
module Messaging
|
|
4
|
+
module Request
|
|
5
|
+
# From the application point of view it is not interesting to know about the role a member plays in the cluster. Instead, the application needs to know which
|
|
6
|
+
# instance can provide the wanted service.
|
|
7
|
+
# <p>
|
|
8
|
+
# This message is used to fetch this routing information.
|
|
9
|
+
class RouteMessage < Struct.new(:routing_context, :bookmark, :database_name, :impersonated_user)
|
|
10
|
+
SIGNATURE = 0x66
|
|
11
|
+
|
|
12
|
+
# Constructor
|
|
13
|
+
|
|
14
|
+
# @param routingContext The routing context used to define the routing table. Multi-datacenter deployments is one of its use cases.
|
|
15
|
+
# @param bookmark The bookmark used when getting the routing table.
|
|
16
|
+
# @param databaseName The name of the database to get the routing table for.
|
|
17
|
+
# @param impersonatedUser The name of the impersonated user to get the routing table for, should be {@code null} for non-impersonated requests
|
|
18
|
+
def initialize(routing_context, bookmark, database_name, impersonated_user)
|
|
19
|
+
super(routing_context.freeze, bookmark, database_name, impersonated_user)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def signature
|
|
23
|
+
SIGNATURE
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def to_s
|
|
27
|
+
"ROUTE #{values.join(' ')}"
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module Neo4j::Driver
|
|
2
|
+
module Internal
|
|
3
|
+
module Messaging
|
|
4
|
+
module Request
|
|
5
|
+
# RUN request message
|
|
6
|
+
# <p>
|
|
7
|
+
# Sent by clients to start a new Tank job for a given query and
|
|
8
|
+
# parameter set.
|
|
9
|
+
class RunMessage < Struct.new(:query, :parameters)
|
|
10
|
+
SIGNATURE = 0x10
|
|
11
|
+
|
|
12
|
+
def signature
|
|
13
|
+
SIGNATURE
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def to_s
|
|
17
|
+
"RUN \"#{query}\" #{parameters}"
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
module Neo4j::Driver
|
|
2
|
+
module Internal
|
|
3
|
+
module Messaging
|
|
4
|
+
module Request
|
|
5
|
+
class RunWithMetadataMessage < MessageWithMetadata
|
|
6
|
+
SIGNATURE = 0x10
|
|
7
|
+
attr_reader :query, :parameters
|
|
8
|
+
|
|
9
|
+
class << self
|
|
10
|
+
def auto_commit_tx_run_message(query, config, database_name, mode, bookmark, impersonated_user)
|
|
11
|
+
metadata = Request::TransactionMetadataBuilder.build_metadata(
|
|
12
|
+
tx_timeout: config[:timeout], tx_metadata: config[:metadata], database_name: database_name, mode: mode,
|
|
13
|
+
bookmark: bookmark, impersonated_user: impersonated_user)
|
|
14
|
+
new(query.text, query.parameters, metadata)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def unmanaged_tx_run_message(query)
|
|
18
|
+
new(query.text, query.parameters, {})
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def initialize(query, parameters, metadata)
|
|
23
|
+
super(metadata)
|
|
24
|
+
@query = query
|
|
25
|
+
@parameters = parameters
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def signature
|
|
29
|
+
SIGNATURE
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def eql?(other)
|
|
33
|
+
super && query.eql?(other.query) && parameters.eql?(other.parameters)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def hash
|
|
37
|
+
[query, parameters, metadata].hash
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def to_s
|
|
41
|
+
"RUN \"#{query}\" #{parameters} #{metadata}"
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
module Neo4j::Driver
|
|
2
|
+
module Internal
|
|
3
|
+
module Messaging
|
|
4
|
+
module Request
|
|
5
|
+
class TransactionMetadataBuilder
|
|
6
|
+
MODE_READ_VALUE = 'r'
|
|
7
|
+
|
|
8
|
+
class << self
|
|
9
|
+
def build_metadata(tx_timeout:, tx_metadata:, mode:, bookmark:, impersonated_user:,
|
|
10
|
+
database_name: DatabaseNameUtil.default_database)
|
|
11
|
+
{ bookmarks: bookmark.presence,
|
|
12
|
+
tx_timeout: tx_timeout,
|
|
13
|
+
tx_metadata: tx_metadata.presence,
|
|
14
|
+
mode: (MODE_READ_VALUE if mode == AccessMode::READ),
|
|
15
|
+
db: database_name&.database_name,
|
|
16
|
+
imp_user: impersonated_user
|
|
17
|
+
}.compact
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
module Neo4j::Driver
|
|
2
|
+
module Internal
|
|
3
|
+
module Messaging
|
|
4
|
+
module Response
|
|
5
|
+
# FAILURE response message
|
|
6
|
+
# <p>
|
|
7
|
+
# Sent by the server to signal a failed operation.
|
|
8
|
+
# Terminates response sequence.
|
|
9
|
+
class FailureMessage
|
|
10
|
+
SIGNATURE = 0x7F
|
|
11
|
+
|
|
12
|
+
attr_reader :code, :message
|
|
13
|
+
|
|
14
|
+
def initialize(code, message)
|
|
15
|
+
@code = code
|
|
16
|
+
@message = message
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def to_s
|
|
20
|
+
"FAILURE #{code} \"#{message}\""
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def equals(object)
|
|
24
|
+
return true if self == object
|
|
25
|
+
|
|
26
|
+
return false if object.nil? || self.class != object.class
|
|
27
|
+
|
|
28
|
+
!(!code.nil? ? !code.equals(object.code) : !object.code.nil?) && !(!message.nil? ? !message.equals(object.message) : !object.message.nil?)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def hash_code
|
|
32
|
+
result = !code.nil? ? code.hash_code : 0
|
|
33
|
+
result = 31 * result + (!message.nil? ? message.hash_code : 0)
|
|
34
|
+
result
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module Neo4j::Driver
|
|
2
|
+
module Internal
|
|
3
|
+
module Messaging
|
|
4
|
+
module Response
|
|
5
|
+
# IGNORED response message
|
|
6
|
+
|
|
7
|
+
# <p>
|
|
8
|
+
# Sent by the server to signal that an operation has been ignored.
|
|
9
|
+
# Terminates response sequence.
|
|
10
|
+
class IgnoredMessage
|
|
11
|
+
SIGNATURE = 0x7E
|
|
12
|
+
IGNORED = new
|
|
13
|
+
|
|
14
|
+
def to_s
|
|
15
|
+
"IGNORED {}"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def equals(obj)
|
|
19
|
+
!obj.nil? && obj.class == self.class
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def hash_code
|
|
23
|
+
1
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module Neo4j::Driver
|
|
2
|
+
module Internal
|
|
3
|
+
module Messaging
|
|
4
|
+
module Response
|
|
5
|
+
class RecordMessage
|
|
6
|
+
SIGNATURE = 0x71
|
|
7
|
+
|
|
8
|
+
attr_reader :fields
|
|
9
|
+
|
|
10
|
+
def initialize(fields)
|
|
11
|
+
@fields = fields
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def to_s
|
|
15
|
+
"RECORD #{fields}"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def equals(object)
|
|
19
|
+
return true if self == object
|
|
20
|
+
|
|
21
|
+
return false if object.nil? || self.class != object.class
|
|
22
|
+
|
|
23
|
+
fields == object.fields
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def hash_code
|
|
27
|
+
java.util.Arrays.hash_code(fields)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module Neo4j::Driver
|
|
2
|
+
module Internal
|
|
3
|
+
module Messaging
|
|
4
|
+
module Response
|
|
5
|
+
# SUCCESS response message
|
|
6
|
+
|
|
7
|
+
# <p>
|
|
8
|
+
# Sent by the server to signal a successful operation.
|
|
9
|
+
# Terminates response sequence.
|
|
10
|
+
class SuccessMessage
|
|
11
|
+
SIGNATURE = 0x70
|
|
12
|
+
|
|
13
|
+
attr_reader :metadata
|
|
14
|
+
|
|
15
|
+
def initialize(metadata)
|
|
16
|
+
@metadata = metadata
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def to_s
|
|
20
|
+
"SUCCESS #{metadata}"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def equals(obj)
|
|
24
|
+
!obj.nil? && obj.class == self.class
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def hash_code
|
|
28
|
+
1
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
module Neo4j::Driver
|
|
2
|
+
module Internal
|
|
3
|
+
module Messaging
|
|
4
|
+
module V3
|
|
5
|
+
class BoltProtocolV3
|
|
6
|
+
VERSION = BoltProtocolVersion.new(3, 0)
|
|
7
|
+
INSTANCE = new
|
|
8
|
+
METADATA_EXTRACTOR = Util::MetadataExtractor.new(:t_first, :t_last)
|
|
9
|
+
|
|
10
|
+
def create_message_format
|
|
11
|
+
MessageFormatV3.new
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def initialize_channel(channel, user_agent, auth_token, routing_context)
|
|
15
|
+
message = Request::HelloMessage.new(user_agent, auth_token,
|
|
16
|
+
(routing_context.to_map if routing_context.server_routing_enabled?))
|
|
17
|
+
handler = Handlers::HelloResponseHandler.new(channel, VERSION)
|
|
18
|
+
|
|
19
|
+
channel.message_dispatcher.enqueue(handler)
|
|
20
|
+
channel.write_and_flush(message)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def prepare_to_close_channel(channel)
|
|
24
|
+
message_dispatcher = Connection::ChannelAttributes.message_dispatcher(channel)
|
|
25
|
+
|
|
26
|
+
message = Request::GoodbyeMessage::GOODBYE
|
|
27
|
+
message_dispatcher.enqueue(Handlers::NoOpResponseHandler::INSTANCE)
|
|
28
|
+
channel.write_and_flush(message, channel.void_promise)
|
|
29
|
+
|
|
30
|
+
message_dispatcher.prepare_to_close_channel
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def begin_transaction(connection, bookmark, config)
|
|
34
|
+
verify_database_name_before_transaction(connection.database_name)
|
|
35
|
+
begin_message = Request::BeginMessage.new(bookmark, config, connection.database_name, connection.mode, connection.impersonated_user)
|
|
36
|
+
connection.write_and_flush(begin_message, Handlers::BeginTxResponseHandler.new)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def commit_transaction(connection, bookmark_holder)
|
|
40
|
+
connection.write_and_flush(Request::CommitMessage::COMMIT, Handlers::CommitTxResponseHandler.new(bookmark_holder))
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def rollback_transaction(connection)
|
|
44
|
+
connection.write_and_flush(Request::RollbackMessage::ROLLBACK, Handlers::RollbackTxResponseHandler.new)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def run_in_auto_commit_transaction(connection, query, bookmark_holder, config, fetch_size)
|
|
48
|
+
verify_database_name_before_transaction(connection.database_name)
|
|
49
|
+
|
|
50
|
+
run_message = Request::RunWithMetadataMessage.auto_commit_tx_run_message(query, config, connection.database_name, connection.mode, bookmark_holder.bookmark, connection.impersonated_user)
|
|
51
|
+
|
|
52
|
+
build_result_cursor_factory(connection, query, bookmark_holder, nil, run_message, fetch_size)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def run_in_unmanaged_transaction(connection, query, tx, fetch_size)
|
|
56
|
+
run_message = Request::RunWithMetadataMessage.unmanaged_tx_run_message(query)
|
|
57
|
+
build_result_cursor_factory(connection, query, BookmarkHolder::NO_OP, tx, run_message, fetch_size)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def build_result_cursor_factory(connection, query, bookmark_holder, tx, run_message, ignored)
|
|
61
|
+
run_future = java.util.concurrent.CompletableFuture.new
|
|
62
|
+
run_handler = Handlers::RunResponseHandler.new(run_future, METADATA_EXTRACTOR, connection, tx)
|
|
63
|
+
pull_handler = Handlers::PullHandlers.new_bolt_v3_pull_all_handler(query, run_handler, connection, bookmark_holder, tx)
|
|
64
|
+
|
|
65
|
+
Cursor::AsyncResultCursorOnlyFactory.new(connection, run_message, run_handler, run_future, pull_handler)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def verify_database_name_before_transaction(database_name)
|
|
69
|
+
Request::MultiDatabaseUtil.assert_empty_database_name(database_name, VERSION)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def version
|
|
73
|
+
self.class::VERSION
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module Neo4j::Driver
|
|
2
|
+
module Internal
|
|
3
|
+
module Messaging
|
|
4
|
+
module V3
|
|
5
|
+
class MessageFormatV3
|
|
6
|
+
def new_writer(output)
|
|
7
|
+
MessageWriterV3.new(output)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def new_reader(input)
|
|
11
|
+
Common::CommonMessageReader.new(input)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module Neo4j::Driver
|
|
2
|
+
module Internal
|
|
3
|
+
module Messaging
|
|
4
|
+
module V3
|
|
5
|
+
class MessageWriterV3 < AbstractMessageWriter
|
|
6
|
+
private
|
|
7
|
+
|
|
8
|
+
def build_encoders
|
|
9
|
+
{
|
|
10
|
+
Request::HelloMessage::SIGNATURE => Encode::HelloMessageEncoder.new,
|
|
11
|
+
Request::GoodbyeMessage::SIGNATURE => Encode::GoodbyeMessageEncoder.new,
|
|
12
|
+
|
|
13
|
+
Request::RunWithMetadataMessage::SIGNATURE => Encode::RunWithMetadataMessageEncoder.new,
|
|
14
|
+
Request::DiscardAllMessage::SIGNATURE => Encode::DiscardAllMessageEncoder.new,
|
|
15
|
+
Request::PullAllMessage::SIGNATURE => Encode::PullAllMessageEncoder.new,
|
|
16
|
+
|
|
17
|
+
Request::BeginMessage::SIGNATURE => Encode::BeginMessageEncoder.new,
|
|
18
|
+
Request::CommitMessage::SIGNATURE => Encode::CommitMessageEncoder.new,
|
|
19
|
+
Request::RollbackMessage::SIGNATURE => Encode::RollbackMessageEncoder.new,
|
|
20
|
+
Request::ResetMessage::SIGNATURE => Encode::ResetMessageEncoder.new,
|
|
21
|
+
}
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module Neo4j::Driver
|
|
2
|
+
module Internal
|
|
3
|
+
module Messaging
|
|
4
|
+
module V4
|
|
5
|
+
class BoltProtocolV4 < V3::BoltProtocolV3
|
|
6
|
+
VERSION = BoltProtocolVersion.new(4,0)
|
|
7
|
+
INSTANCE = new
|
|
8
|
+
|
|
9
|
+
def create_message_format
|
|
10
|
+
MessageFormatV4.new
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def build_result_cursor_factory(connection, query, bookmark_holder, tx, run_message, fetch_size)
|
|
14
|
+
run_handler = Handlers::RunResponseHandler.new(V3::BoltProtocolV3::METADATA_EXTRACTOR, connection, tx)
|
|
15
|
+
|
|
16
|
+
pull_all_handler = Handlers::PullHandlers.new_bolt_v4_auto_pull_handler(query, run_handler, connection, bookmark_holder, tx, fetch_size)
|
|
17
|
+
pull_handler = Handlers::PullHandlers.new_bolt_v4_basic_pull_handler(query, run_handler, connection, bookmark_holder, tx)
|
|
18
|
+
|
|
19
|
+
Cursor::ResultCursorFactoryImpl.new(connection, run_message, run_handler, pull_handler, pull_all_handler)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def verify_database_name_before_transaction(_database_name)
|
|
23
|
+
# Bolt V4.1 accepts database name
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module Neo4j::Driver
|
|
2
|
+
module Internal
|
|
3
|
+
module Messaging
|
|
4
|
+
module V4
|
|
5
|
+
class MessageFormatV4
|
|
6
|
+
def new_writer(output)
|
|
7
|
+
MessageWriterV4.new(output)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def new_reader(input)
|
|
11
|
+
Common::CommonMessageReader.new(input)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|