Skip to main content

Crate nautilus_protocol

Crate nautilus_protocol 

Source
Expand description

§Nautilus Protocol

JSON-RPC 2.0 protocol for multi-language Nautilus clients.

This crate defines the stable wire format for communication between:

  • Language-specific clients (JavaScript, Python, etc.)
  • The Nautilus engine (Rust binary running over stdin/stdout)

§Protocol Overview

  • Transport: Line-delimited JSON over stdin/stdout
  • Format: JSON-RPC 2.0
  • Versioning: Protocol version included in every request

§Example Usage

use nautilus_protocol::*;
use serde_json::json;

// Create a handshake request
let request = RpcRequest {
    jsonrpc: "2.0".to_string(),
    id: Some(RpcId::Number(1)),
    method: ENGINE_HANDSHAKE.to_string(),
    params: serde_json::to_value(HandshakeParams {
        protocol_version: PROTOCOL_VERSION,
        client_name: Some("nautilus-js".to_string()),
        client_version: Some("0.1.0".to_string()),
    }).unwrap(),
};

// Serialize to JSON
let json = serde_json::to_string(&request).unwrap();

Re-exports§

pub use error::ProtocolError;
pub use error::Result;
pub use methods::BatchOperation;
pub use methods::CountParams;
pub use methods::CreateManyParams;
pub use methods::CreateParams;
pub use methods::DeleteParams;
pub use methods::FindFirstOrThrowParams;
pub use methods::FindFirstParams;
pub use methods::FindManyParams;
pub use methods::FindUniqueOrThrowParams;
pub use methods::FindUniqueParams;
pub use methods::GroupByParams;
pub use methods::HandshakeParams;
pub use methods::HandshakeResult;
pub use methods::IsolationLevel;
pub use methods::MutationResult;
pub use methods::QueryResult;
pub use methods::RawQueryParams;
pub use methods::RawStmtQueryParams;
pub use methods::SchemaValidateParams;
pub use methods::SchemaValidateResult;
pub use methods::TransactionBatchParams;
pub use methods::TransactionBatchResult;
pub use methods::TransactionCommitParams;
pub use methods::TransactionCommitResult;
pub use methods::TransactionRollbackParams;
pub use methods::TransactionRollbackResult;
pub use methods::TransactionStartParams;
pub use methods::TransactionStartResult;
pub use methods::UpdateParams;
pub use methods::ENGINE_HANDSHAKE;
pub use methods::QUERY_COUNT;
pub use methods::QUERY_CREATE;
pub use methods::QUERY_CREATE_MANY;
pub use methods::QUERY_DELETE;
pub use methods::QUERY_FIND_FIRST;
pub use methods::QUERY_FIND_FIRST_OR_THROW;
pub use methods::QUERY_FIND_MANY;
pub use methods::QUERY_FIND_UNIQUE;
pub use methods::QUERY_FIND_UNIQUE_OR_THROW;
pub use methods::QUERY_GROUP_BY;
pub use methods::QUERY_RAW;
pub use methods::QUERY_RAW_STMT;
pub use methods::QUERY_UPDATE;
pub use methods::SCHEMA_VALIDATE;
pub use methods::TRANSACTION_BATCH;
pub use methods::TRANSACTION_COMMIT;
pub use methods::TRANSACTION_ROLLBACK;
pub use methods::TRANSACTION_START;
pub use version::ProtocolVersion;
pub use version::MIN_PROTOCOL_VERSION;
pub use version::PROTOCOL_VERSION;
pub use wire::RpcError;
pub use wire::RpcId;
pub use wire::RpcRequest;
pub use wire::RpcResponse;

Modules§

error
Nautilus protocol errors with stable error codes.
methods
Nautilus protocol method definitions.
version
Protocol versioning and compatibility checking.
wire
JSON-RPC 2.0 wire types and helpers.