Class: SurrealDB::Protocol::RPC
- Inherits:
-
Object
- Object
- SurrealDB::Protocol::RPC
- Defined in:
- lib/surrealdb/protocol/rpc.rb
Overview
Handles RPC request/response framing over CBOR. Thread-safe request ID generation.
Instance Method Summary collapse
-
#decode_response(data) ⇒ Hash
Decodes a CBOR response and resolves SurrealDB types.
-
#encode_request(method, params = []) ⇒ Array(Integer, String)
Encodes an RPC request to CBOR bytes.
-
#initialize ⇒ RPC
constructor
A new instance of RPC.
Constructor Details
#initialize ⇒ RPC
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.
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.
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 |