Module: Neo4j::Core::PackStream
- Defined in:
- lib/neo4j/core/cypher_session/adaptors/bolt/pack_stream.rb
Overview
Implements the the PackStream packing and unpacking specifications as specified by Neo Technology for the Neo4j graph database
Defined Under Namespace
Classes: Packer, Structure, Unpacker
Constant Summary collapse
- MARKER_TYPES =
{ C0: nil, C1: [:float, 64], C2: false, C3: true, C8: [:int, 8], C9: [:int, 16], CA: [:int, 32], CB: [:int, 64], CC: [:bytes, 8], CD: [:bytes, 16], CE: [:bytes, 32], D0: [:text, 8], D1: [:text, 16], D2: [:text, 32], D4: [:list, 8], D5: [:list, 16], D6: [:list, 32], D8: [:map, 8], D9: [:map, 16], DA: [:map, 32], DC: [:struct, 8], DD: [:struct, 16], DE: [:struct, 32] }
- MARKER_BYTES =
Translates directly from types to bytes
MARKER_TYPES.invert
- MARKER_HEADERS =
MARKER_TYPES.each_with_object({}) do |(byte, (type, size)), headers| headers[type] ||= {} headers[type][size] = [byte].pack('C') end
- HEADER_PACK_STRINGS =
%w[C S L].freeze
Class Method Summary collapse
Class Method Details
.marker_type_and_size(marker) ⇒ Object
278 279 280 281 282 283 284 285 286 287 288 289 |
# File 'lib/neo4j/core/cypher_session/adaptors/bolt/pack_stream.rb', line 278 def self.marker_type_and_size(marker) if (marker_spec = MARKER_TYPES[marker]).is_a?(Array) marker_spec else case marker when 0x80..0x8F then [:tiny_text, marker - 0x80] when 0x90..0x9F then [:tiny_list, marker - 0x90] when 0xA0..0xAF then [:tiny_map, marker - 0xA0] when 0xB0..0xBF then [:tiny_struct, marker - 0xB0] end end end |