Class: Neo4j::Driver::Bolt::Protocol::V57

Inherits:
V56 show all
Defined in:
lib/neo4j/driver/bolt/protocol/v57.rb

Overview

Bolt 5.7. FAILURE switches to a GQL-flavoured map: the legacy code key is renamed to neo4j_code (optional, defaults to "N/A"), and new keys appear (gql_status, description, diagnostic_record, recursive cause). The driver's exception classifier keys off :code, so we alias neo4j_code → code here. The other GQL fields ride along in the metadata for any caller that wants them.

5.7+ is also where HandshakeManifestV1 negotiation becomes mandatory on the server side; that's handled in Bolt::Handshake, not here.

Direct Known Subclasses

V58

Instance Attribute Summary

Attributes inherited from Base

#connection, #version

Instance Method Summary collapse

Methods inherited from V54

#supports_telemetry?

Methods inherited from V53

#hello_extra

Methods inherited from V52

#notification_config_extra, #supports_notification_filtering?

Methods inherited from V51

#build_logon_message, #hello_extra, #supports_re_auth?

Methods inherited from V5

#configure_packer, #patch_bolt_extra

Methods inherited from V44

#build_route, #supports_impersonation?

Methods inherited from V43

#hello_extra, #patch_bolt_extra

Methods inherited from V4

#build_route, #supports_multiple_databases?

Methods inherited from Base

#build_begin, #build_discard, #build_hello_message, #build_logon_message, #build_pull, #build_run, #build_telemetry, #configure_packer, #enforce_impersonation_support!, #hello_extra, #initialize, #notification_config_extra, #pack_uuid, #supports_impersonation?, #supports_multiple_databases?, #supports_notification_filtering?, #supports_re_auth?, #supports_telemetry?, #unpack_uuid

Constructor Details

This class inherits a constructor from Neo4j::Driver::Bolt::Protocol::Base

Instance Method Details

#customize_hydration(unpacker) ⇒ Object



19
20
21
22
23
24
25
26
# File 'lib/neo4j/driver/bolt/protocol/v57.rb', line 19

def customize_hydration(unpacker)
  super
  unpacker.register_hydration_handler(Message::FAILURE) do |fields|
    meta = fields[0] || {}
    meta = meta.merge(code: meta[:neo4j_code]) if meta[:neo4j_code]
    Message::Failure.new(meta)
  end
end