neo4j-ruby-driver 6.0.3.alpha.0 → 6.2.1.beta.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.
Files changed (348) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +113 -411
  3. data/{ruby → lib}/neo4j/driver/access_mode.rb +2 -1
  4. data/lib/neo4j/driver/auth_token_managers.rb +31 -0
  5. data/lib/neo4j/driver/auth_tokens.rb +41 -0
  6. data/lib/neo4j/driver/auto_commit_retries_mode.rb +18 -0
  7. data/lib/neo4j/driver/bolt/bolt_version.rb +67 -0
  8. data/lib/neo4j/driver/bolt/connection.rb +1091 -0
  9. data/lib/neo4j/driver/bolt/handshake.rb +236 -0
  10. data/lib/neo4j/driver/bolt/message/failure.rb +139 -0
  11. data/lib/neo4j/driver/bolt/message/ignored.rb +27 -0
  12. data/lib/neo4j/driver/bolt/message/record.rb +30 -0
  13. data/lib/neo4j/driver/bolt/message/success.rb +34 -0
  14. data/lib/neo4j/driver/bolt/message.rb +112 -0
  15. data/lib/neo4j/driver/bolt/pool.rb +255 -0
  16. data/lib/neo4j/driver/bolt/protocol/base.rb +146 -0
  17. data/lib/neo4j/driver/bolt/protocol/v3.rb +43 -0
  18. data/lib/neo4j/driver/bolt/protocol/v4.rb +24 -0
  19. data/lib/neo4j/driver/bolt/protocol/v43.rb +28 -0
  20. data/lib/neo4j/driver/bolt/protocol/v44.rb +23 -0
  21. data/lib/neo4j/driver/bolt/protocol/v5.rb +27 -0
  22. data/lib/neo4j/driver/bolt/protocol/v51.rb +24 -0
  23. data/lib/neo4j/driver/bolt/protocol/v52.rb +28 -0
  24. data/lib/neo4j/driver/bolt/protocol/v53.rb +27 -0
  25. data/lib/neo4j/driver/bolt/protocol/v54.rb +14 -0
  26. data/lib/neo4j/driver/bolt/protocol/v55.rb +17 -0
  27. data/lib/neo4j/driver/bolt/protocol/v56.rb +14 -0
  28. data/lib/neo4j/driver/bolt/protocol/v57.rb +31 -0
  29. data/lib/neo4j/driver/bolt/protocol/v58.rb +15 -0
  30. data/lib/neo4j/driver/bolt/protocol/v6.rb +43 -0
  31. data/lib/neo4j/driver/bolt/protocol/v61.rb +21 -0
  32. data/lib/neo4j/driver/bolt/protocol_version_handler.rb +39 -0
  33. data/lib/neo4j/driver/bolt/record_buffer.rb +143 -0
  34. data/lib/neo4j/driver/bolt/stream_handler.rb +53 -0
  35. data/lib/neo4j/driver/bolt/tls_config.rb +129 -0
  36. data/lib/neo4j/driver/bolt/wire.rb +321 -0
  37. data/lib/neo4j/driver/bookmark.rb +15 -0
  38. data/lib/neo4j/driver/bookmark_managers.rb +39 -0
  39. data/lib/neo4j/driver/client_certificate.rb +19 -0
  40. data/lib/neo4j/driver/client_certificate_manager.rb +37 -0
  41. data/lib/neo4j/driver/client_certificate_managers.rb +15 -0
  42. data/lib/neo4j/driver/client_certificates.rb +14 -0
  43. data/lib/neo4j/driver/direct/connection_provider.rb +262 -0
  44. data/lib/neo4j/driver/driver.rb +268 -0
  45. data/lib/neo4j/driver/eager_result.rb +10 -0
  46. data/lib/neo4j/driver/exceptions/neo4j_exception.rb +16 -7
  47. data/lib/neo4j/driver/exceptions/no_such_record_exception.rb +1 -1
  48. data/lib/neo4j/driver/exceptions/protocol_exception.rb +0 -5
  49. data/lib/neo4j/driver/exceptions/security_retryable_exception.rb +14 -0
  50. data/lib/neo4j/driver/exceptions/transaction_terminated_exception.rb +13 -0
  51. data/lib/neo4j/driver/graph_database.rb +29 -0
  52. data/lib/neo4j/driver/internal/clock.rb +20 -0
  53. data/lib/neo4j/driver/internal/clock_adapter.rb +21 -0
  54. data/lib/neo4j/driver/internal/default_bookmark_manager.rb +54 -0
  55. data/lib/neo4j/driver/internal/deprecator.rb +9 -5
  56. data/lib/neo4j/driver/internal/driver_factory.rb +128 -0
  57. data/lib/neo4j/driver/internal/duration_normalizer.rb +14 -39
  58. data/lib/neo4j/driver/internal/extras.rb +23 -0
  59. data/lib/neo4j/driver/internal/home_db_cache.rb +57 -0
  60. data/lib/neo4j/driver/internal/internal_auth_token_manager.rb +37 -0
  61. data/lib/neo4j/driver/internal/metrics.rb +31 -0
  62. data/lib/neo4j/driver/internal/security/static_auth_token_manager.rb +25 -0
  63. data/lib/neo4j/driver/internal/validator.rb +16 -2
  64. data/lib/neo4j/driver/net.rb +29 -0
  65. data/lib/neo4j/driver/packstream/markers.rb +49 -0
  66. data/lib/neo4j/driver/packstream/packer.rb +335 -0
  67. data/lib/neo4j/driver/packstream/structure.rb +27 -0
  68. data/lib/neo4j/driver/packstream/unpacker.rb +170 -0
  69. data/lib/neo4j/driver/record.rb +43 -0
  70. data/lib/neo4j/driver/result.rb +282 -0
  71. data/lib/neo4j/driver/routing/load_balancer.rb +706 -0
  72. data/lib/neo4j/driver/routing/routed_connection.rb +132 -0
  73. data/lib/neo4j/driver/routing/routing_table.rb +127 -0
  74. data/lib/neo4j/driver/routing/server_address.rb +25 -0
  75. data/lib/neo4j/driver/routing_control.rb +13 -0
  76. data/lib/neo4j/driver/session.rb +577 -0
  77. data/lib/neo4j/driver/summary/database_info.rb +25 -0
  78. data/lib/neo4j/driver/summary/gql_notification.rb +38 -0
  79. data/lib/neo4j/driver/summary/gql_status_object.rb +35 -0
  80. data/lib/neo4j/driver/summary/notification.rb +46 -0
  81. data/lib/neo4j/driver/summary/plan.rb +23 -0
  82. data/lib/neo4j/driver/summary/profile.rb +28 -0
  83. data/lib/neo4j/driver/summary/query.rb +19 -0
  84. data/lib/neo4j/driver/summary/query_type.rb +5 -1
  85. data/lib/neo4j/driver/summary/result_summary.rb +215 -0
  86. data/lib/neo4j/driver/summary/server_info.rb +33 -0
  87. data/lib/neo4j/driver/summary/summary_counters.rb +72 -0
  88. data/lib/neo4j/driver/transaction.rb +344 -0
  89. data/lib/neo4j/driver/types/duration.rb +76 -0
  90. data/lib/neo4j/driver/types/entity.rb +40 -0
  91. data/lib/neo4j/driver/types/local_date_time.rb +77 -8
  92. data/lib/neo4j/driver/types/local_time.rb +50 -7
  93. data/lib/neo4j/driver/types/node.rb +18 -0
  94. data/lib/neo4j/driver/types/offset_time.rb +78 -7
  95. data/lib/neo4j/driver/types/path.rb +68 -0
  96. data/lib/neo4j/driver/types/point.rb +38 -18
  97. data/lib/neo4j/driver/types/relationship.rb +32 -0
  98. data/lib/neo4j/driver/types/temporal_value.rb +44 -0
  99. data/lib/neo4j/driver/types/unbound_relationship.rb +24 -0
  100. data/lib/neo4j/driver/types/unresolvable_zoned_date_time.rb +38 -0
  101. data/lib/neo4j/driver/types/unsupported_type.rb +25 -0
  102. data/lib/neo4j/driver/types/uuid.rb +29 -0
  103. data/{ruby → lib}/neo4j/driver/version.rb +1 -1
  104. data/lib/neo4j/driver.rb +15 -0
  105. data/lib/neo4j-ruby-driver_loader.rb +34 -20
  106. metadata +115 -441
  107. data/lib/neo4j/driver/internal/bolt_server_address.rb +0 -97
  108. data/lib/neo4j/driver/synchronizable.rb +0 -23
  109. data/lib/neo4j/driver/types/time.rb +0 -45
  110. data/ruby/neo4j/driver/auth_tokens.rb +0 -34
  111. data/ruby/neo4j/driver/bookmark.rb +0 -21
  112. data/ruby/neo4j/driver/config.rb +0 -89
  113. data/ruby/neo4j/driver/graph_database.rb +0 -78
  114. data/ruby/neo4j/driver/internal/async/connection/bolt_protocol_util.rb +0 -51
  115. data/ruby/neo4j/driver/internal/async/connection/bootstrap_factory.rb +0 -22
  116. data/ruby/neo4j/driver/internal/async/connection/channel_attributes.rb +0 -31
  117. data/ruby/neo4j/driver/internal/async/connection/channel_connected_listener.rb +0 -32
  118. data/ruby/neo4j/driver/internal/async/connection/channel_connector_impl.rb +0 -83
  119. data/ruby/neo4j/driver/internal/async/connection/channel_pipeline_builder_impl.rb +0 -22
  120. data/ruby/neo4j/driver/internal/async/connection/direct_connection.rb +0 -30
  121. data/ruby/neo4j/driver/internal/async/connection/event_loop_group_factory.rb +0 -83
  122. data/ruby/neo4j/driver/internal/async/connection/handshake_completed_listener.rb +0 -27
  123. data/ruby/neo4j/driver/internal/async/connection/handshake_handler.rb +0 -113
  124. data/ruby/neo4j/driver/internal/async/connection/netty_channel_initializer.rb +0 -57
  125. data/ruby/neo4j/driver/internal/async/connection/netty_domain_name_resolver.rb +0 -26
  126. data/ruby/neo4j/driver/internal/async/connection/netty_domain_name_resolver_group.rb +0 -19
  127. data/ruby/neo4j/driver/internal/async/connection/routing_connection.rb +0 -36
  128. data/ruby/neo4j/driver/internal/async/connection/stream.rb +0 -12
  129. data/ruby/neo4j/driver/internal/async/connection/stream_reader.rb +0 -16
  130. data/ruby/neo4j/driver/internal/async/connection_context.rb +0 -10
  131. data/ruby/neo4j/driver/internal/async/immutable_connection_context.rb +0 -24
  132. data/ruby/neo4j/driver/internal/async/inbound/byte_buf_input.rb +0 -30
  133. data/ruby/neo4j/driver/internal/async/inbound/channel_error_handler.rb +0 -77
  134. data/ruby/neo4j/driver/internal/async/inbound/chunk_decoder.rb +0 -41
  135. data/ruby/neo4j/driver/internal/async/inbound/connect_timeout_handler.rb +0 -32
  136. data/ruby/neo4j/driver/internal/async/inbound/connection_read_timeout_handler.rb +0 -17
  137. data/ruby/neo4j/driver/internal/async/inbound/inbound_message_dispatcher.rb +0 -171
  138. data/ruby/neo4j/driver/internal/async/inbound/inbound_message_handler.rb +0 -42
  139. data/ruby/neo4j/driver/internal/async/inbound/message_decoder.rb +0 -51
  140. data/ruby/neo4j/driver/internal/async/internal_async_session.rb +0 -92
  141. data/ruby/neo4j/driver/internal/async/internal_async_transaction.rb +0 -13
  142. data/ruby/neo4j/driver/internal/async/leak_logging_network_session.rb +0 -34
  143. data/ruby/neo4j/driver/internal/async/network_connection.rb +0 -194
  144. data/ruby/neo4j/driver/internal/async/network_session.rb +0 -150
  145. data/ruby/neo4j/driver/internal/async/outbound/chunk_aware_byte_buf_output.rb +0 -110
  146. data/ruby/neo4j/driver/internal/async/outbound/outbound_message_handler.rb +0 -39
  147. data/ruby/neo4j/driver/internal/async/pool/channel.rb +0 -66
  148. data/ruby/neo4j/driver/internal/async/pool/channel_pool.rb +0 -31
  149. data/ruby/neo4j/driver/internal/async/pool/channel_tracker.rb +0 -135
  150. data/ruby/neo4j/driver/internal/async/pool/connection_pool_impl.rb +0 -156
  151. data/ruby/neo4j/driver/internal/async/pool/netty_channel_health_checker.rb +0 -87
  152. data/ruby/neo4j/driver/internal/async/pool/netty_channel_pool.rb +0 -52
  153. data/ruby/neo4j/driver/internal/async/pool/network_connection_factory.rb +0 -21
  154. data/ruby/neo4j/driver/internal/async/pool/pool_settings.rb +0 -34
  155. data/ruby/neo4j/driver/internal/async/pool/timed_stack.rb +0 -15
  156. data/ruby/neo4j/driver/internal/async/result_cursors_holder.rb +0 -17
  157. data/ruby/neo4j/driver/internal/async/unmanaged_transaction.rb +0 -212
  158. data/ruby/neo4j/driver/internal/bookmark_holder.rb +0 -9
  159. data/ruby/neo4j/driver/internal/cluster/cluster_composition.rb +0 -48
  160. data/ruby/neo4j/driver/internal/cluster/cluster_composition_lookup_result.rb +0 -14
  161. data/ruby/neo4j/driver/internal/cluster/cluster_routing_table.rb +0 -122
  162. data/ruby/neo4j/driver/internal/cluster/identity_resolver.rb +0 -10
  163. data/ruby/neo4j/driver/internal/cluster/loadbalancing/least_connected_load_balancing_strategy.rb +0 -68
  164. data/ruby/neo4j/driver/internal/cluster/loadbalancing/load_balancer.rb +0 -125
  165. data/ruby/neo4j/driver/internal/cluster/loadbalancing/round_robin_array_index.rb +0 -13
  166. data/ruby/neo4j/driver/internal/cluster/multi_databases_routing_procedure_runner.rb +0 -31
  167. data/ruby/neo4j/driver/internal/cluster/rediscovery_impl.rb +0 -147
  168. data/ruby/neo4j/driver/internal/cluster/route_message_routing_procedure_runner.rb +0 -43
  169. data/ruby/neo4j/driver/internal/cluster/routing_context.rb +0 -77
  170. data/ruby/neo4j/driver/internal/cluster/routing_procedure_cluster_composition_provider.rb +0 -60
  171. data/ruby/neo4j/driver/internal/cluster/routing_procedure_response.rb +0 -35
  172. data/ruby/neo4j/driver/internal/cluster/routing_settings.rb +0 -24
  173. data/ruby/neo4j/driver/internal/cluster/routing_table_handler_impl.rb +0 -95
  174. data/ruby/neo4j/driver/internal/cluster/routing_table_registry_impl.rb +0 -121
  175. data/ruby/neo4j/driver/internal/cluster/single_database_routing_procedure_runner.rb +0 -73
  176. data/ruby/neo4j/driver/internal/connection_settings.rb +0 -16
  177. data/ruby/neo4j/driver/internal/cursor/async_result_cursor_impl.rb +0 -55
  178. data/ruby/neo4j/driver/internal/cursor/async_result_cursor_only_factory.rb +0 -24
  179. data/ruby/neo4j/driver/internal/cursor/disposable_async_result_cursor.rb +0 -61
  180. data/ruby/neo4j/driver/internal/cursor/result_cursor_factory_impl.rb +0 -24
  181. data/ruby/neo4j/driver/internal/cursor/rx_result_cursor_impl.rb +0 -110
  182. data/ruby/neo4j/driver/internal/database_name_util.rb +0 -37
  183. data/ruby/neo4j/driver/internal/default_bookmark_holder.rb +0 -9
  184. data/ruby/neo4j/driver/internal/default_domain_name_resolver.rb +0 -11
  185. data/ruby/neo4j/driver/internal/direct_connection_provider.rb +0 -40
  186. data/ruby/neo4j/driver/internal/driver_factory.rb +0 -126
  187. data/ruby/neo4j/driver/internal/eager_result_value.rb +0 -5
  188. data/ruby/neo4j/driver/internal/handlers/begin_tx_response_handler.rb +0 -20
  189. data/ruby/neo4j/driver/internal/handlers/channel_releasing_reset_response_handler.rb +0 -30
  190. data/ruby/neo4j/driver/internal/handlers/commit_tx_response_handler.rb +0 -23
  191. data/ruby/neo4j/driver/internal/handlers/hello_response_handler.rb +0 -65
  192. data/ruby/neo4j/driver/internal/handlers/init_response_handler.rb +0 -34
  193. data/ruby/neo4j/driver/internal/handlers/legacy_pull_all_response_handler.rb +0 -199
  194. data/ruby/neo4j/driver/internal/handlers/no_op_response_handler.rb +0 -16
  195. data/ruby/neo4j/driver/internal/handlers/ping_response_handler.rb +0 -29
  196. data/ruby/neo4j/driver/internal/handlers/pull_handlers.rb +0 -32
  197. data/ruby/neo4j/driver/internal/handlers/pulln/auto_pull_response_handler.rb +0 -169
  198. data/ruby/neo4j/driver/internal/handlers/pulln/basic_pull_response_handler.rb +0 -298
  199. data/ruby/neo4j/driver/internal/handlers/pulln/fetch_size_util.rb +0 -20
  200. data/ruby/neo4j/driver/internal/handlers/reset_response_handler.rb +0 -34
  201. data/ruby/neo4j/driver/internal/handlers/rollback_tx_response_handler.rb +0 -25
  202. data/ruby/neo4j/driver/internal/handlers/route_message_response_handler.rb +0 -21
  203. data/ruby/neo4j/driver/internal/handlers/routing_response_handler.rb +0 -79
  204. data/ruby/neo4j/driver/internal/handlers/run_response_handler.rb +0 -38
  205. data/ruby/neo4j/driver/internal/handlers/session_pull_response_completion_listener.rb +0 -34
  206. data/ruby/neo4j/driver/internal/handlers/transaction_pull_response_completion_listener.rb +0 -20
  207. data/ruby/neo4j/driver/internal/impersonation_util.rb +0 -22
  208. data/ruby/neo4j/driver/internal/internal_bookmark.rb +0 -9
  209. data/ruby/neo4j/driver/internal/internal_database_name.rb +0 -9
  210. data/ruby/neo4j/driver/internal/internal_driver.rb +0 -83
  211. data/ruby/neo4j/driver/internal/internal_entity.rb +0 -21
  212. data/ruby/neo4j/driver/internal/internal_node.rb +0 -21
  213. data/ruby/neo4j/driver/internal/internal_pair.rb +0 -9
  214. data/ruby/neo4j/driver/internal/internal_path.rb +0 -35
  215. data/ruby/neo4j/driver/internal/internal_point2_d.rb +0 -9
  216. data/ruby/neo4j/driver/internal/internal_point3_d.rb +0 -6
  217. data/ruby/neo4j/driver/internal/internal_record.rb +0 -27
  218. data/ruby/neo4j/driver/internal/internal_relationship.rb +0 -27
  219. data/ruby/neo4j/driver/internal/internal_result.rb +0 -49
  220. data/ruby/neo4j/driver/internal/internal_session.rb +0 -91
  221. data/ruby/neo4j/driver/internal/internal_transaction.rb +0 -48
  222. data/ruby/neo4j/driver/internal/logging/channel_activity_logger.rb +0 -29
  223. data/ruby/neo4j/driver/internal/logging/channel_error_logger.rb +0 -17
  224. data/ruby/neo4j/driver/internal/logging/prefixed_logger.rb +0 -19
  225. data/ruby/neo4j/driver/internal/logging/reformatted_logger.rb +0 -17
  226. data/ruby/neo4j/driver/internal/messaging/abstract_message_writer.rb +0 -23
  227. data/ruby/neo4j/driver/internal/messaging/bolt_protocol.rb +0 -32
  228. data/ruby/neo4j/driver/internal/messaging/bolt_protocol_version.rb +0 -48
  229. data/ruby/neo4j/driver/internal/messaging/common/common_message_reader.rb +0 -51
  230. data/ruby/neo4j/driver/internal/messaging/common/common_value.rb +0 -33
  231. data/ruby/neo4j/driver/internal/messaging/common/common_value_packer.rb +0 -104
  232. data/ruby/neo4j/driver/internal/messaging/common/common_value_unpacker.rb +0 -256
  233. data/ruby/neo4j/driver/internal/messaging/encode/begin_message_encoder.rb +0 -15
  234. data/ruby/neo4j/driver/internal/messaging/encode/commit_message_encoder.rb +0 -14
  235. data/ruby/neo4j/driver/internal/messaging/encode/discard_all_message_encoder.rb +0 -14
  236. data/ruby/neo4j/driver/internal/messaging/encode/discard_message_encoder.rb +0 -15
  237. data/ruby/neo4j/driver/internal/messaging/encode/goodbye_message_encoder.rb +0 -14
  238. data/ruby/neo4j/driver/internal/messaging/encode/hello_message_encoder.rb +0 -15
  239. data/ruby/neo4j/driver/internal/messaging/encode/init_message_encoder.rb +0 -16
  240. data/ruby/neo4j/driver/internal/messaging/encode/logoff_message_encoder.rb +0 -14
  241. data/ruby/neo4j/driver/internal/messaging/encode/logon_message_encoder.rb +0 -15
  242. data/ruby/neo4j/driver/internal/messaging/encode/pull_all_message_encoder.rb +0 -14
  243. data/ruby/neo4j/driver/internal/messaging/encode/pull_message_encoder.rb +0 -15
  244. data/ruby/neo4j/driver/internal/messaging/encode/reset_message_encoder.rb +0 -14
  245. data/ruby/neo4j/driver/internal/messaging/encode/rollback_message_encoder.rb +0 -14
  246. data/ruby/neo4j/driver/internal/messaging/encode/route_message_encoder.rb +0 -24
  247. data/ruby/neo4j/driver/internal/messaging/encode/route_v44_message_encoder.rb +0 -22
  248. data/ruby/neo4j/driver/internal/messaging/encode/run_message_encoder.rb +0 -16
  249. data/ruby/neo4j/driver/internal/messaging/encode/run_with_metadata_message_encoder.rb +0 -17
  250. data/ruby/neo4j/driver/internal/messaging/request/abstract_streaming_message.rb +0 -25
  251. data/ruby/neo4j/driver/internal/messaging/request/begin_message.rb +0 -25
  252. data/ruby/neo4j/driver/internal/messaging/request/commit_message.rb +0 -20
  253. data/ruby/neo4j/driver/internal/messaging/request/discard_all_message.rb +0 -20
  254. data/ruby/neo4j/driver/internal/messaging/request/discard_message.rb +0 -23
  255. data/ruby/neo4j/driver/internal/messaging/request/goodbye_message.rb +0 -20
  256. data/ruby/neo4j/driver/internal/messaging/request/hello_message.rb +0 -30
  257. data/ruby/neo4j/driver/internal/messaging/request/init_message.rb +0 -19
  258. data/ruby/neo4j/driver/internal/messaging/request/logoff_message.rb +0 -13
  259. data/ruby/neo4j/driver/internal/messaging/request/logon_message.rb +0 -13
  260. data/ruby/neo4j/driver/internal/messaging/request/message_with_metadata.rb +0 -17
  261. data/ruby/neo4j/driver/internal/messaging/request/multi_database_util.rb +0 -26
  262. data/ruby/neo4j/driver/internal/messaging/request/pull_all_message.rb +0 -23
  263. data/ruby/neo4j/driver/internal/messaging/request/pull_message.rb +0 -22
  264. data/ruby/neo4j/driver/internal/messaging/request/reset_message.rb +0 -32
  265. data/ruby/neo4j/driver/internal/messaging/request/rollback_message.rb +0 -20
  266. data/ruby/neo4j/driver/internal/messaging/request/route_message.rb +0 -28
  267. data/ruby/neo4j/driver/internal/messaging/request/run_message.rb +0 -23
  268. data/ruby/neo4j/driver/internal/messaging/request/run_with_metadata_message.rb +0 -49
  269. data/ruby/neo4j/driver/internal/messaging/request/transaction_metadata_builder.rb +0 -24
  270. data/ruby/neo4j/driver/internal/messaging/response/failure_message.rb +0 -40
  271. data/ruby/neo4j/driver/internal/messaging/response/ignored_message.rb +0 -29
  272. data/ruby/neo4j/driver/internal/messaging/response/record_message.rb +0 -33
  273. data/ruby/neo4j/driver/internal/messaging/response/success_message.rb +0 -34
  274. data/ruby/neo4j/driver/internal/messaging/v3/bolt_protocol_v3.rb +0 -82
  275. data/ruby/neo4j/driver/internal/messaging/v3/message_format_v3.rb +0 -17
  276. data/ruby/neo4j/driver/internal/messaging/v3/message_writer_v3.rb +0 -27
  277. data/ruby/neo4j/driver/internal/messaging/v4/bolt_protocol_v4.rb +0 -29
  278. data/ruby/neo4j/driver/internal/messaging/v4/message_format_v4.rb +0 -13
  279. data/ruby/neo4j/driver/internal/messaging/v4/message_writer_v4.rb +0 -17
  280. data/ruby/neo4j/driver/internal/messaging/v41/bolt_protocol_v41.rb +0 -25
  281. data/ruby/neo4j/driver/internal/messaging/v42/bolt_protocol_v42.rb +0 -13
  282. data/ruby/neo4j/driver/internal/messaging/v43/bolt_protocol_v43.rb +0 -19
  283. data/ruby/neo4j/driver/internal/messaging/v43/message_format_v43.rb +0 -14
  284. data/ruby/neo4j/driver/internal/messaging/v43/message_writer_v43.rb +0 -20
  285. data/ruby/neo4j/driver/internal/messaging/v44/bolt_protocol_v44.rb +0 -17
  286. data/ruby/neo4j/driver/internal/messaging/v44/message_format_v44.rb +0 -14
  287. data/ruby/neo4j/driver/internal/messaging/v44/message_writer_v44.rb +0 -15
  288. data/ruby/neo4j/driver/internal/messaging/v5/bolt_protocol_v5.rb +0 -21
  289. data/ruby/neo4j/driver/internal/messaging/v5/message_format_v5.rb +0 -18
  290. data/ruby/neo4j/driver/internal/messaging/v5/value_unpacker_v5.rb +0 -17
  291. data/ruby/neo4j/driver/internal/messaging/v51/bolt_protocol_v51.rb +0 -40
  292. data/ruby/neo4j/driver/internal/messaging/v51/message_format_v51.rb +0 -14
  293. data/ruby/neo4j/driver/internal/messaging/v51/message_writer_v51.rb +0 -17
  294. data/ruby/neo4j/driver/internal/metrics/connection_pool_metrics_listener.rb +0 -34
  295. data/ruby/neo4j/driver/internal/metrics/internal_abstract_metrics.rb +0 -46
  296. data/ruby/neo4j/driver/internal/metrics/internal_connection_pool_metrics.rb +0 -105
  297. data/ruby/neo4j/driver/internal/metrics/internal_metrics.rb +0 -82
  298. data/ruby/neo4j/driver/internal/metrics/internal_metrics_provider.rb +0 -18
  299. data/ruby/neo4j/driver/internal/metrics/listener_event.rb +0 -17
  300. data/ruby/neo4j/driver/internal/metrics/metrics_provider.rb +0 -24
  301. data/ruby/neo4j/driver/internal/metrics/time_recorder_listener_event.rb +0 -15
  302. data/ruby/neo4j/driver/internal/packstream/byte_array_incompatible_packer.rb +0 -12
  303. data/ruby/neo4j/driver/internal/packstream/pack_input.rb +0 -47
  304. data/ruby/neo4j/driver/internal/packstream/pack_output.rb +0 -39
  305. data/ruby/neo4j/driver/internal/packstream/pack_stream.rb +0 -324
  306. data/ruby/neo4j/driver/internal/packstream/pack_type.rb +0 -17
  307. data/ruby/neo4j/driver/internal/read_only_bookmark_holder.rb +0 -13
  308. data/ruby/neo4j/driver/internal/resolved_bolt_server_address.rb +0 -35
  309. data/ruby/neo4j/driver/internal/retry/exponential_backoff_retry_logic.rb +0 -150
  310. data/ruby/neo4j/driver/internal/revocation_strategy.rb +0 -19
  311. data/ruby/neo4j/driver/internal/scheme.rb +0 -32
  312. data/ruby/neo4j/driver/internal/security/internal_auth_token.rb +0 -15
  313. data/ruby/neo4j/driver/internal/security/security_plan_impl.rb +0 -48
  314. data/ruby/neo4j/driver/internal/security_setting.rb +0 -66
  315. data/ruby/neo4j/driver/internal/session_factory_impl.rb +0 -32
  316. data/ruby/neo4j/driver/internal/spi/connection.rb +0 -19
  317. data/ruby/neo4j/driver/internal/spi/connection_pool.rb +0 -9
  318. data/ruby/neo4j/driver/internal/spi/response_handler.rb +0 -23
  319. data/ruby/neo4j/driver/internal/summary/internal_database_info.rb +0 -7
  320. data/ruby/neo4j/driver/internal/summary/internal_input_position.rb +0 -11
  321. data/ruby/neo4j/driver/internal/summary/internal_notification.rb +0 -16
  322. data/ruby/neo4j/driver/internal/summary/internal_plan.rb +0 -41
  323. data/ruby/neo4j/driver/internal/summary/internal_profiled_plan.rb +0 -32
  324. data/ruby/neo4j/driver/internal/summary/internal_result_summary.rb +0 -33
  325. data/ruby/neo4j/driver/internal/summary/internal_server_info.rb +0 -6
  326. data/ruby/neo4j/driver/internal/summary/internal_summary_counters.rb +0 -18
  327. data/ruby/neo4j/driver/internal/svm/netty_substitutions.rb +0 -196
  328. data/ruby/neo4j/driver/internal/svm/z_lib_substitutions.rb +0 -21
  329. data/ruby/neo4j/driver/internal/util/certificate_tool.rb +0 -65
  330. data/ruby/neo4j/driver/internal/util/clock.rb +0 -29
  331. data/ruby/neo4j/driver/internal/util/error_util.rb +0 -104
  332. data/ruby/neo4j/driver/internal/util/extract.rb +0 -123
  333. data/ruby/neo4j/driver/internal/util/format.rb +0 -39
  334. data/ruby/neo4j/driver/internal/util/futures.rb +0 -99
  335. data/ruby/neo4j/driver/internal/util/iterables.rb +0 -35
  336. data/ruby/neo4j/driver/internal/util/lock_util.rb +0 -23
  337. data/ruby/neo4j/driver/internal/util/metadata_extractor.rb +0 -101
  338. data/ruby/neo4j/driver/internal/util/mutex.rb +0 -9
  339. data/ruby/neo4j/driver/internal/util/preconditions.rb +0 -16
  340. data/ruby/neo4j/driver/internal/util/result_holder.rb +0 -72
  341. data/ruby/neo4j/driver/internal/util/server_version.rb +0 -60
  342. data/ruby/neo4j/driver/logging1.rb +0 -51
  343. data/ruby/neo4j/driver/net/server_address.rb +0 -9
  344. data/ruby/neo4j/driver/query.rb +0 -48
  345. data/ruby/neo4j/driver/records.rb +0 -13
  346. data/ruby/neo4j/driver/transaction_config.rb +0 -50
  347. data/ruby/neo4j/driver/values.rb +0 -26
  348. data/ruby/neo4j/driver.rb +0 -30
@@ -1,105 +0,0 @@
1
- module Neo4j::Driver
2
- module Internal
3
- module Metrics
4
- class InternalConnectionPoolMetrics
5
- attr_reader :id, :address, :pool
6
-
7
- def initialize(pool_id, address, pool)
8
- Internal::Validotor.require_non_nil!(address)
9
- Internal::Validotor.require_non_nil!(pool)
10
-
11
- @id = pool_id
12
- @address = address
13
- @pool = pool
14
-
15
- @closed = Concurrent::AtomicFixnum.new
16
-
17
- # creating = created + failedToCreate
18
- @creating = Concurrent::AtomicFixnum.new
19
- @created = Concurrent::AtomicFixnum.new
20
- @failed_to_create = Concurrent::AtomicFixnum.new
21
-
22
- # acquiring = acquired + timedOutToAcquire + failedToAcquireDueToOtherFailures (which we do not keep track)
23
- @acquiring = Concurrent::AtomicFixnum.new
24
- @acquired = Concurrent::AtomicFixnum.new
25
- @timed_out_to_acquire = Concurrent::AtomicFixnum.new
26
-
27
- @total_acquisition_time = Concurrent::AtomicFixnum.new
28
- @total_connection_time = Concurrent::AtomicFixnum.new
29
- @total_in_use_time = Concurrent::AtomicFixnum.new
30
-
31
- @total_in_use_count = Concurrent::AtomicFixnum.new
32
- end
33
-
34
- def before_creating(conn_event)
35
- @creating.increment
36
- conn_event.start
37
- end
38
-
39
- def after_failed_to_create
40
- @failed_to_create.increment
41
- @creating.decrement_and_get
42
- end
43
-
44
- def after_created(conn_event)
45
- @created.increment
46
- @creating.decrement
47
- elapsed = conn_event.elapsed
48
-
49
- @total_connection_time.increment(elapsed)
50
- end
51
-
52
- def after_closed
53
- @closed.increment
54
- end
55
-
56
- def before_acquiring_or_creating(acquire_event)
57
- acquire_event.start
58
- @acquiring.increment
59
- end
60
-
61
- def after_acquiring_or_creating
62
- @acquiring.decrement
63
- end
64
-
65
- def after_acquired_or_created(acquire_event)
66
- @acquired.increment
67
- elapsed = acquire_event.elapsed
68
- @total_acquisition_time.increment(elapsed)
69
- end
70
-
71
- def after_timed_out_to_acquire_or_create
72
- @timed_out_to_acquire.increment
73
- end
74
-
75
- def acquired(in_use_event)
76
- in_use_event.start
77
- end
78
-
79
- def released(in_use_event)
80
- @total_in_use_count.increment
81
- elapsed = in_use_event.elapsed
82
-
83
- @total_in_use_time.increment(elapsed)
84
- end
85
-
86
- def in_use
87
- @pool.in_use_connections(@address)
88
- end
89
-
90
- def idle
91
- @pool.idle_connections(@address)
92
- end
93
-
94
- %i[creating created failed_to_create timed_out_to_acquire total_acquisition_time :total_connection_time
95
- total_in_use_time total_in_use_count closed acquiring acquired].each do |method|
96
- define_method(method) { instance_variable_get(method).value }
97
- end
98
-
99
- def to_s
100
- "#{@id}[created=#{@created}, closed=#{@closed}, creating=#{@creating}, failed_to_create=#{@failed_to_create}, acquiring=#{@acquiring}, acquired=#{@acquired}, timed_out_to_acquire=#{@timed_out_to_acquire}, in_use=#{@in_use}, idle=#{@idle}, total_acquisition_time=#{@total_acquisition_time}, total_connection_time=#{@total_connection_time}, total_in_use_time=#{@total_in_use_time}, total_in_use_count=#{@totalInUseCount}]"
101
- end
102
- end
103
- end
104
- end
105
- end
@@ -1,82 +0,0 @@
1
- module Neo4j::Driver
2
- module Internal
3
- module Metrics
4
- class InternalMetrics
5
- def initialize(logger)
6
- @connection_pool_metrics = Concurrent::Map.new
7
- @log = logger
8
- end
9
-
10
- def put_pool_metrics(pool_id, server_address, pool)
11
- @connection_pool_metrics[pool_id] = InternalConnectionPoolMetrics.new(pool_id, server_address, pool)
12
- end
13
-
14
- def remove_pool_metrics(id)
15
- @connection_pool_metrics.delete(id)
16
- end
17
-
18
- def before_creating(pool_id, creating_event)
19
- pool_metrics(pool_id).before_creating(creating_event)
20
- end
21
-
22
- def after_created(pool_id, creating_event)
23
- pool_metrics(pool_id).after_created(creating_event)
24
- end
25
-
26
- def after_failed_to_create(pool_id)
27
- pool_metrics(pool_id).after_failed_to_create
28
- end
29
-
30
- def after_closed(pool_id)
31
- pool_metrics(pool_id).after_closed
32
- end
33
-
34
- def before_acquiring_or_creating(pool_id, acquire_event)
35
- pool_metrics(pool_id).before_acquiring_or_creating(acquire_event)
36
- end
37
-
38
- def after_acquiring_or_creating(pool_id)
39
- pool_metrics(pool_id).after_acquiring_or_creating
40
- end
41
-
42
- def after_acquired_or_created(pool_id, acquire_event)
43
- pool_metrics(pool_id).after_acquired_or_created(acquire_event)
44
- end
45
-
46
- def after_connection_created(pool_id, in_use_event)
47
- pool_metrics(pool_id).acquired(in_use_event)
48
- end
49
-
50
- def after_connection_released(pool_id, in_use_event)
51
- pool_metrics(pool_id).released(in_use_event)
52
- end
53
-
54
- def after_timed_out_to_acquire_or_create(pool_id)
55
- pool_metrics(pool_id).after_timed_out_to_acquire_or_create
56
- end
57
-
58
- def create_listener_event
59
- TimeRecorderListenerEvent.new
60
- end
61
-
62
- def connection_pool_metrics
63
- @connection_pool_metrics.values.freeze
64
- end
65
-
66
- def to_s
67
- "PoolMetrics=#{@connection_pool_metrics.each_pair.to_h}"
68
- end
69
-
70
- private
71
-
72
- def pool_metrics(pool_id)
73
- @connection_pool_metrics[pool_id] ||
74
- begin
75
- @log.warn("Failed to find pool metrics with id `#{pool_id}` in #{@connection_pool_metrics.each_pair.to_h}.")
76
- ConnectionPoolMetricsListener::DEV_NULL_POOL_METRICS_LISTENER
77
- end
78
- end
79
- end
80
- end
81
- end
82
- end
@@ -1,18 +0,0 @@
1
- module Neo4j::Driver
2
- module Internal
3
- module Metrics
4
- class InternalMetricsProvider
5
- attr_reader :metrics
6
- alias metrics_listener metrics
7
-
8
- def initialize(logger)
9
- @metrics = InternalMetrics.new(logger)
10
- end
11
-
12
- def metrics_enabled?
13
- true
14
- end
15
- end
16
- end
17
- end
18
- end
@@ -1,17 +0,0 @@
1
- module Neo4j::Driver
2
- module Internal
3
- module Metrics
4
- module ListenerEvent
5
- DEV_NULL_LISTENER_EVENT =
6
- Class.new do
7
- def start
8
- end
9
-
10
- def elapsed
11
- 0
12
- end
13
- end.new
14
- end
15
- end
16
- end
17
- end
@@ -1,24 +0,0 @@
1
- module Neo4j::Driver
2
- module Internal
3
- module Metrics
4
- module MetricsProvider
5
- METRICS_DISABLED_PROVIDER =
6
- Class.new do
7
- def metrics
8
- # To outside users, we forbidden their access to the metrics API
9
- raise Exceptions::ClientException, "Driver metrics not enabled. To access driver metrics, you need to enabled driver metrics in the driver's configuration."
10
- end
11
-
12
- def metrics_listener
13
- # Internally we can still register callbacks to this empty metrics listener.
14
- InternalAbstractMetrics::DEV_NULL_METRICS
15
- end
16
-
17
- def metrics_enabled?
18
- false
19
- end
20
- end.new
21
- end
22
- end
23
- end
24
- end
@@ -1,15 +0,0 @@
1
- module Neo4j::Driver
2
- module Internal
3
- module Metrics
4
- class TimeRecorderListenerEvent
5
- def start
6
- @start_time = Util::Clock::System.millis
7
- end
8
-
9
- def elapsed
10
- Util::Clock::System.millis - @start_time
11
- end
12
- end
13
- end
14
- end
15
- end
@@ -1,12 +0,0 @@
1
- module Neo4j::Driver
2
- module Internal
3
- module Packstream
4
- class ByteArrayIncompatiblePacker
5
- include PackStream::Packer
6
- def pack_bytes_header(_size)
7
- raise PackStream::UnPackable.new('Packing bytes is not supported as the current server this driver connected to does not support unpack bytes.')
8
- end
9
- end
10
- end
11
- end
12
- end
@@ -1,47 +0,0 @@
1
- module Neo4j::Driver
2
- module Internal
3
- module Packstream
4
- module PackInput
5
- def read_char
6
- read_exactly(1)
7
- end
8
-
9
- def read_byte
10
- read_exactly(1).unpack1('c')
11
- end
12
-
13
- def read_ubyte
14
- read_exactly(1).unpack1('C')
15
- end
16
-
17
- def read_short
18
- read_exactly(2).unpack1('s>')
19
- end
20
-
21
- def read_ushort
22
- read_exactly(2).unpack1('S>')
23
- end
24
-
25
- def read_int
26
- read_exactly(4).unpack1('l>')
27
- end
28
-
29
- def read_uint
30
- read_exactly(4).unpack1('L>')
31
- end
32
-
33
- def read_long
34
- read_exactly(8).unpack1('q>')
35
- end
36
-
37
- def read_ulong
38
- read_exactly(8).unpack1('Q>')
39
- end
40
-
41
- def read_double
42
- read_exactly(8).unpack1('G')
43
- end
44
- end
45
- end
46
- end
47
- end
@@ -1,39 +0,0 @@
1
- module Neo4j::Driver
2
- module Internal
3
- module Packstream
4
- module PackOutput
5
- ## Produce a single byte
6
- def write_byte(value)
7
- value.is_a?(String) ? write(value) : write_value(value, 'c')
8
- end
9
-
10
- ## Produce a 4-byte signed integer
11
- def write_short(value)
12
- write_value(value, 's>')
13
- end
14
-
15
- ## Produce a 4-byte signed integer
16
- def write_int(value)
17
- write_value(value, 'l>')
18
- end
19
-
20
- ## Produce an 8-byte signed integer
21
- def write_long(value)
22
- write_value(value, 'q>')
23
- end
24
-
25
- ## Produce an 8-byte IEEE 754 "double format" floating-point number
26
- def write_double(value)
27
- write_value(value, 'G')
28
- end
29
-
30
- private
31
-
32
- def write_value(value, directive)
33
- write([value].pack(directive))
34
- self
35
- end
36
- end
37
- end
38
- end
39
- end
@@ -1,324 +0,0 @@
1
- module Neo4j::Driver
2
- module Internal
3
- module Packstream
4
- module PackStream
5
- module Common
6
- TINY_STRING = 0x80
7
- TINY_LIST = 0x90
8
- TINY_MAP = 0xA0
9
- TINY_STRUCT = 0xB0
10
- NULL = 0xC0
11
- FLOAT_64 = 0xC1
12
- FALSE = 0xC2
13
- TRUE = 0xC3
14
- RESERVED_C4 = 0xC4
15
- RESERVED_C5 = 0xC5
16
- RESERVED_C6 = 0xC6
17
- RESERVED_C7 = 0xC7
18
- INT_8 = 0xC8
19
- INT_16 = 0xC9
20
- INT_32 = 0xCA
21
- INT_64 = 0xCB
22
- BYTES_8 = 0xCC
23
- BYTES_16 = 0xCD
24
- BYTES_32 = 0xCE
25
- RESERVED_CF = 0xCF
26
- STRING_8 = 0xD0
27
- STRING_16 = 0xD1
28
- STRING_32 = 0xD2
29
- RESERVED_D3 = 0xD3
30
- LIST_8 = 0xD4
31
- LIST_16 = 0xD5
32
- LIST_32 = 0xD6
33
- RESERVED_D7 = 0xD7
34
- MAP_8 = 0xD8
35
- MAP_16 = 0xD9
36
- MAP_32 = 0xDA
37
- RESERVED_DB = 0xDB
38
- STRUCT_8 = 0xDC
39
- STRUCT_16 = 0xDD
40
- RESERVED_DE = 0xDE
41
- RESERVED_DF = 0xDF
42
- RESERVED_E0 = 0xE0
43
- RESERVED_E1 = 0xE1
44
- RESERVED_E2 = 0xE2
45
- RESERVED_E3 = 0xE3
46
- RESERVED_E4 = 0xE4
47
- RESERVED_E5 = 0xE5
48
- RESERVED_E6 = 0xE6
49
- RESERVED_E7 = 0xE7
50
- RESERVED_E8 = 0xE8
51
- RESERVED_E9 = 0xE9
52
- RESERVED_EA = 0xEA
53
- RESERVED_EB = 0xEB
54
- RESERVED_EC = 0xEC
55
- RESERVED_ED = 0xED
56
- RESERVED_EE = 0xEE
57
- RESERVED_EF = 0xEF
58
- end
59
-
60
- PLUS_2_TO_THE_63 = 2 ** 63
61
- PLUS_2_TO_THE_31 = 2147483648
62
- PLUS_2_TO_THE_16 = 65536
63
- PLUS_2_TO_THE_15 = 32768
64
- PLUS_2_TO_THE_8 = 256
65
- PLUS_2_TO_THE_7 = 128
66
- MINUS_2_TO_THE_4 = -16
67
- MINUS_2_TO_THE_7 = -128
68
- MINUS_2_TO_THE_15 = -32768
69
- MINUS_2_TO_THE_31 = -2147483648
70
- MINUS_2_TO_THE_63 = -2 ** 63
71
-
72
- module Packer
73
- include Common
74
- private def pack_raw(data)
75
- write(data)
76
- end
77
-
78
- def pack_null
79
- write_byte(NULL)
80
- end
81
-
82
- def pack(value)
83
- case value
84
- when nil
85
- pack_null
86
- when TrueClass
87
- write_byte(TRUE)
88
- when FalseClass
89
- write_byte(FALSE)
90
- when Integer
91
- pack_integer(value)
92
- when Float
93
- pack_float(value)
94
- when String
95
- case value.encoding
96
- when Encoding::BINARY
97
- pack_bytes(value)
98
- when Encoding::UTF_8
99
- pack_string(value)
100
- else
101
- pack_string(value.encode(Encoding::UTF_8))
102
- end
103
- when Symbol
104
- pack_string(value.to_s)
105
- when InternalPath
106
- unpackable(value)
107
- when Hash
108
- pack_map_header(value.size)
109
- value.each do |key, val|
110
- pack(key)
111
- pack(val)
112
- end
113
- when Enumerable
114
- value = value.to_a
115
- pack_list_header(value.size)
116
- value.each(&method(:pack))
117
- else
118
- unpackable(value)
119
- end
120
- end
121
-
122
- private def unpackable(value)
123
- raise UnPackable, "Cannot pack object #{value}"
124
- end
125
-
126
- def pack_integer(value)
127
- if value >= MINUS_2_TO_THE_4 && value < PLUS_2_TO_THE_7
128
- write_byte(value)
129
- elsif value >= MINUS_2_TO_THE_7 && value < MINUS_2_TO_THE_4
130
- write_byte(INT_8).write_byte(value)
131
- elsif value >= MINUS_2_TO_THE_15 && value < PLUS_2_TO_THE_15
132
- write_byte(INT_16).write_short(value)
133
- elsif value >= MINUS_2_TO_THE_31 && value < PLUS_2_TO_THE_31
134
- write_byte(INT_32).write_int(value)
135
- elsif value >= MINUS_2_TO_THE_63 && value < PLUS_2_TO_THE_63
136
- write_byte(INT_64).write_long(value)
137
- else
138
- pack_string(value.to_s)
139
- end
140
- end
141
-
142
- def pack_float(value)
143
- write_byte(FLOAT_64).write_double(value)
144
- end
145
-
146
- private def pack_bytes(value)
147
- pack_bytes_header(value.bytesize)
148
- pack_raw(value)
149
- end
150
-
151
- private def pack_string(value)
152
- pack_string_header(value.bytesize)
153
- pack_raw(value)
154
- end
155
-
156
- def pack_bytes_header(size)
157
- if size < PLUS_2_TO_THE_8
158
- write_byte(BYTES_8).write_byte(size)
159
- elsif size < PLUS_2_TO_THE_16
160
- write_byte(BYTES_16).write_short(size)
161
- else
162
- write_byte(BYTES_32).write_int(size)
163
- end
164
- end
165
-
166
- def pack_string_header(size)
167
- if size < 0x10
168
- write_byte(TINY_STRING | size)
169
- elsif size < PLUS_2_TO_THE_8
170
- write_byte(STRING_8).write_byte(size)
171
- elsif size < PLUS_2_TO_THE_16
172
- write_byte(STRING_16).write_short(size)
173
- else
174
- write_byte(STRING_32).write_int(size)
175
- end
176
- end
177
-
178
- def pack_list_header(size)
179
- if size < 0x10
180
- write_byte(TINY_LIST | size)
181
- elsif size < PLUS_2_TO_THE_8
182
- write_byte(LIST_8).write_byte(size)
183
- elsif size < PLUS_2_TO_THE_16
184
- write_byte(LIST_16).write_short(size)
185
- else
186
- write_byte(LIST_32).write_int(size)
187
- end
188
- end
189
-
190
- def pack_map_header(size)
191
- if size < 0x10
192
- write_byte(TINY_MAP | size)
193
- elsif size < PLUS_2_TO_THE_8
194
- write_byte(MAP_8).write_byte(size)
195
- elsif size < PLUS_2_TO_THE_16
196
- write_byte(MAP_16).write_short(size)
197
- else
198
- write_byte(MAP_32).write_int(size)
199
- end
200
- end
201
-
202
- def pack_struct_header(size, signature)
203
- if size < 0x10
204
- write_byte(TINY_STRUCT | size).write_byte(signature)
205
- elsif size size < PLUS_2_TO_THE_8
206
- write_byte(STRUCT_8).write_byte(size).write_byte(signature)
207
- elsif size < PLUS_2_TO_THE_16
208
- write_byte(STRUCT_16).write_short(size).write_byte(signature)
209
- else
210
- raise Overflow, "Structures cannot have more than #{PLUS_2_TO_THE_16 - 1} fields"
211
- end
212
- end
213
- end
214
-
215
- module Unpacker
216
- include Common
217
-
218
- def unpack_struct_header
219
- marker_byte = read_byte
220
- marker_high_nibble = marker_byte & 0xF0
221
- marker_low_nibble = marker_byte & 0x0F
222
-
223
- return marker_low_nibble if marker_high_nibble == TINY_STRUCT
224
-
225
- case marker_byte
226
- when STRUCT_8
227
- unpack_u_int8
228
- when STRUCT_16
229
- unpack_u_int16
230
- else
231
- raise Unexpected, "Expected a struct, but got: #{marker_byte.to_s(16)}"
232
- end
233
- end
234
-
235
- def unpack_struct_signature
236
- read_byte
237
- end
238
-
239
- def unpack_list_header
240
- marker_byte = read_byte
241
- marker_high_nibble = marker_byte & 0xF0
242
- marker_low_nibble = marker_byte & 0x0F
243
-
244
- return marker_low_nibble if marker_high_nibble == TINY_LIST
245
-
246
- case marker_byte
247
- when LIST_8
248
- unpack_uint8
249
- when LIST_16
250
- unpack_uint16
251
- when LIST_32
252
- unpack_uint32
253
- else
254
- raise Unexpected, "Expected a list, but got: #{(markerByte & 0xFF).to_s(16)}"
255
- end
256
- end
257
-
258
- def unpack_map_header
259
- marker_byte = read_byte
260
- marker_high_nibble = marker_byte & 0xF0
261
- marker_low_nibble = marker_byte & 0x0F
262
-
263
- return marker_low_nibble if marker_high_nibble == TINY_MAP
264
-
265
- case marker_byte
266
- when MAP_8
267
- unpack_u_int8
268
- when MAP_16
269
- unpack_u_int16
270
- when MAP_32
271
- unpack_u_int32
272
- else
273
- raise Unexpected, "Expected a map, but got: #{marker_byte.to_s(16)}"
274
- end
275
- end
276
-
277
- def unpack_long(marker_byte)
278
- return marker_byte if marker_byte >= MINUS_2_TO_THE_4
279
- marker_byte &= 0xFF
280
- case marker_byte
281
- when INT_8
282
- read_byte
283
- when INT_16
284
- read_short
285
- when INT_32
286
- read_int
287
- when INT_64
288
- read_long
289
- else
290
- raise Unexpected, "Expected an integer, but got: #{marker_byte.to_s(16)}"
291
- end
292
- end
293
-
294
- def unpack_double
295
- read_double
296
- end
297
-
298
- def unpack_bytes(size)
299
- read_exactly(size)
300
- end
301
-
302
- def unpack_string(size)
303
- read_exactly(size).force_encoding(Encoding::UTF_8)
304
- end
305
- end
306
-
307
- class PackStreamException < IOError
308
- end
309
-
310
- class EndOfStream < PackStreamException
311
- end
312
-
313
- class Overflow < PackStreamException
314
- end
315
-
316
- class Unexpected < PackStreamException
317
- end
318
-
319
- class UnPackable < PackStreamException
320
- end
321
- end
322
- end
323
- end
324
- end
@@ -1,17 +0,0 @@
1
- module Neo4j::Driver
2
- module Internal
3
- module Packstream
4
- class PackType
5
- NULL = :null
6
- BOOLEAN = :boolean
7
- INTEGER = :integer
8
- FLOAT = :float
9
- BYTES = :bytes
10
- STRING = :string
11
- LIST = :list
12
- MAP = :map
13
- STRUCT = :struct
14
- end
15
- end
16
- end
17
- end