pub const DEFAULT_MAX_LINE_BYTES: usize = 64 * 1024;
pub const DEFAULT_MAX_OPERATION_NAME_BYTES: usize = syncbat::MAX_OPERATION_NAME_BYTES;
pub const DEFAULT_MAX_INPUT_BYTES: usize = 32 * 1024;
pub const DEFAULT_MAX_OUTPUT_BYTES: usize = 32 * 1024;
pub const DEFAULT_MAX_SUBSCRIPTION_ID_BYTES: usize = 128;
pub const DEFAULT_MAX_CURSOR_BYTES: usize = 4 * 1024;
pub const DEFAULT_MAX_STREAM_PAYLOAD_BYTES: usize = 32 * 1024;
pub const DEFAULT_MAX_STREAM_ERROR_MESSAGE_BYTES: usize = 4 * 1024;
macro_rules! protocol_prefix {
() => {
"NETBAT/"
};
}
pub const PROTOCOL_PREFIX: &str = protocol_prefix!();
pub const LINE_PROTOCOL_VERSION: &str = concat!(protocol_prefix!(), "1");
pub const CALL_VERB: &str = "CALL";
pub const STREAM_PROTOCOL_VERSION: &str = concat!(protocol_prefix!(), "2");
pub const SUBSCRIBE_VERB: &str = "SUBSCRIBE";
pub const SUB_EVENT_VERB: &str = "SUB_EVENT";
pub const SUB_WATERMARK_VERB: &str = "SUB_WATERMARK";
pub const SUB_ACK_VERB: &str = "SUB_ACK";
pub const SUB_CANCEL_VERB: &str = "SUB_CANCEL";
pub const SUB_ERR_VERB: &str = "SUB_ERR";
pub const SUB_END_VERB: &str = "SUB_END";
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
#[non_exhaustive]
pub struct Limits {
pub max_line_bytes: usize,
pub max_operation_name_bytes: usize,
pub max_input_bytes: usize,
pub max_output_bytes: usize,
pub max_subscription_id_bytes: usize,
pub max_cursor_bytes: usize,
pub max_stream_payload_bytes: usize,
pub max_stream_error_message_bytes: usize,
}
impl Default for Limits {
fn default() -> Self {
Self {
max_line_bytes: DEFAULT_MAX_LINE_BYTES,
max_operation_name_bytes: DEFAULT_MAX_OPERATION_NAME_BYTES,
max_input_bytes: DEFAULT_MAX_INPUT_BYTES,
max_output_bytes: DEFAULT_MAX_OUTPUT_BYTES,
max_subscription_id_bytes: DEFAULT_MAX_SUBSCRIPTION_ID_BYTES,
max_cursor_bytes: DEFAULT_MAX_CURSOR_BYTES,
max_stream_payload_bytes: DEFAULT_MAX_STREAM_PAYLOAD_BYTES,
max_stream_error_message_bytes: DEFAULT_MAX_STREAM_ERROR_MESSAGE_BYTES,
}
}
}
impl Limits {
#[must_use]
pub fn new() -> Self {
Self::default()
}
#[must_use]
pub const fn with_max_line_bytes(mut self, value: usize) -> Self {
self.max_line_bytes = value;
self
}
#[must_use]
pub const fn with_max_operation_name_bytes(mut self, value: usize) -> Self {
self.max_operation_name_bytes = value;
self
}
#[must_use]
pub const fn with_max_input_bytes(mut self, value: usize) -> Self {
self.max_input_bytes = value;
self
}
#[must_use]
pub const fn with_max_output_bytes(mut self, value: usize) -> Self {
self.max_output_bytes = value;
self
}
#[must_use]
pub const fn with_max_subscription_id_bytes(mut self, value: usize) -> Self {
self.max_subscription_id_bytes = value;
self
}
#[must_use]
pub const fn with_max_cursor_bytes(mut self, value: usize) -> Self {
self.max_cursor_bytes = value;
self
}
#[must_use]
pub const fn with_max_stream_payload_bytes(mut self, value: usize) -> Self {
self.max_stream_payload_bytes = value;
self
}
#[must_use]
pub const fn with_max_stream_error_message_bytes(mut self, value: usize) -> Self {
self.max_stream_error_message_bytes = value;
self
}
}
impl IoTimeouts {
#[must_use]
pub const fn with_read(mut self, value: Option<std::time::Duration>) -> Self {
self.read = value;
self
}
#[must_use]
pub const fn with_write(mut self, value: Option<std::time::Duration>) -> Self {
self.write = value;
self
}
}
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
#[non_exhaustive]
pub struct IoTimeouts {
pub read: Option<std::time::Duration>,
pub write: Option<std::time::Duration>,
}