use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Limits {
pub max_frame_bytes: usize,
pub max_snapshot_bytes: usize,
pub max_nodes: usize,
pub max_depth: usize,
pub max_string_bytes: usize,
pub max_relation_targets: usize,
pub max_queued_frames: usize,
pub max_pending_waiters: usize,
pub max_sessions: usize,
pub max_log_record_bytes: usize,
pub max_log_queue: usize,
}
pub const DEFAULT_LIMITS: Limits = Limits {
max_frame_bytes: 1024 * 1024,
max_snapshot_bytes: 2 * 1024 * 1024,
max_nodes: 5_000,
max_depth: 64,
max_string_bytes: 16 * 1024,
max_relation_targets: 64,
max_queued_frames: 32,
max_pending_waiters: 256,
max_sessions: 16,
max_log_record_bytes: 32 * 1024,
max_log_queue: 1_000,
};
pub const ABSOLUTE_LIMITS: Limits = Limits {
max_frame_bytes: 8 * 1024 * 1024,
max_snapshot_bytes: 8 * 1024 * 1024,
max_nodes: 50_000,
max_depth: 256,
max_string_bytes: 256 * 1024,
max_relation_targets: 1_024,
max_queued_frames: 256,
max_pending_waiters: 4_096,
max_sessions: 128,
max_log_record_bytes: 256 * 1024,
max_log_queue: 10_000,
};
pub const DEFAULT_NEGOTIATION_MS: u64 = 250;
impl Default for Limits {
fn default() -> Self {
DEFAULT_LIMITS
}
}