Class: SurrealDB::Protocol::RPC

Inherits:
Object
  • Object
show all
Defined in:
lib/surrealdb/protocol/rpc.rb

Overview

Handles RPC request/response framing over CBOR. Thread-safe request ID generation.

Instance Method Summary collapse

Constructor Details

#initializeRPC

Returns a new instance of RPC.



8
9
10
11
# File 'lib/surrealdb/protocol/rpc.rb', line 8

def initialize
  @id_counter = 0
  @id_mutex = Mutex.new
end

Instance Method Details

#decode_response(data) ⇒ Hash

Decodes a CBOR response and resolves SurrealDB types.

Parameters:

  • data (String)

    CBOR-encoded binary string

Returns:

  • (Hash)

    decoded response with resolved types



32
33
34
35
# File 'lib/surrealdb/protocol/rpc.rb', line 32

def decode_response(data)
  raw = ::CBOR.decode(data)
  CBOR::Decoder.resolve(raw)
end

#encode_request(method, params = []) ⇒ Array(Integer, String)

Encodes an RPC request to CBOR bytes.

Parameters:

  • method (String)

    RPC method name

  • params (Array) (defaults to: [])

    method parameters

Returns:

  • (Array(Integer, String))

    request ID and encoded CBOR bytes



18
19
20
21
22
23
24
25
26
# File 'lib/surrealdb/protocol/rpc.rb', line 18

def encode_request(method, params = [])
  id = next_id
  payload = {
    'id' => id,
    'method' => method,
    'params' => CBOR::Encoder.prepare(params)
  }
  [id, ::CBOR.encode(payload)]
end