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;