use crate::wire::ConversationId;
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum ParkingLimitField {
N,
C,
P,
G,
D,
R,
B,
RE,
WF,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct CheckedMultiplyOverflow {
pub left: u64,
pub right: u64,
}
impl CheckedMultiplyOverflow {
#[must_use]
pub const fn operation(self) -> CheckedOperation {
let _ = self;
CheckedOperation::Multiply
}
#[must_use]
pub const fn checked_result(self) -> Option<u64> {
let _ = self;
None
}
#[must_use]
pub const fn overflow(self) -> bool {
let _ = self;
true
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum CheckedOperation {
Multiply,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum ParkingShapeViolation {
NonzeroLimit {
field: ParkingLimitField,
actual: u64,
required_minimum: u64,
},
RecoveryEntrySchemaBytes {
actual: u64,
required: u64,
},
WireSchemaBytes {
actual: u64,
required: u64,
},
RequestSchemaBytes {
configured_request_limit: u64,
wire_frame_limit: u64,
actual: u64,
required: u64,
},
RowSchemaBytes {
request_limit: u64,
row_metadata_bytes: u64,
actual: u64,
required: u128,
},
CheckedProduct(CheckedMultiplyOverflow),
RowBytesBound {
left: u64,
right: u64,
checked_product: u64,
actual: u64,
},
SdkBytesBound {
left: u64,
right: u64,
checked_product: u64,
actual: u64,
},
RecoverableSlots {
actual: u64,
limit: u64,
},
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct ParticipantParkingConfigurationInvalid {
pub violation: ParkingShapeViolation,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct HandshakeSizeOperands {
pub max_entries: u64,
pub framing_bytes: u128,
pub request_entry_bytes: u64,
pub response_entry_bytes: u64,
pub error_response_bytes: u64,
pub request_encoded_bytes: u128,
pub response_encoded_bytes: u128,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum RecoveryHandshakeDimension {
RequestBytes,
RequestWireFrameBytes,
ResponseWireFrameBytes,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct ParticipantRecoveryHandshakeTooLarge {
pub max_entries: u64,
pub framing_bytes: u128,
pub request_entry_bytes: u64,
pub response_entry_bytes: u64,
pub error_response_bytes: u64,
pub request_encoded_bytes: u128,
pub response_encoded_bytes: u128,
pub request_limit: u64,
pub wire_frame_limit: u64,
pub dimension: RecoveryHandshakeDimension,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum SdkParkingCapacityIncompatible {
NonzeroLimit {
field: ParkingLimitField,
actual: u64,
required_minimum: u64,
},
RecoveryEntrySchemaBytes {
actual: u64,
required: u64,
},
WireSchemaBytes {
actual: u64,
required: u64,
},
RequestSchemaBytes {
configured_request_limit: u64,
wire_frame_limit: u64,
actual: u64,
required: u64,
},
RowSchemaBytes {
request_limit: u64,
row_metadata_bytes: u64,
actual: u64,
required: u128,
},
CheckedProduct(CheckedMultiplyOverflow),
RowBytesBound {
left: u64,
right: u64,
checked_product: u64,
actual: u64,
},
SdkBytesBound {
left: u64,
right: u64,
checked_product: u64,
actual: u64,
},
RecoverableSlots {
actual: u64,
limit: u64,
},
ConversationRows {
conversation_id: ConversationId,
occupied: u64,
limit: u64,
},
ConversationBytes {
conversation_id: ConversationId,
occupied: u64,
limit: u64,
},
SdkConversations {
occupied: u64,
limit: u64,
},
SdkRows {
occupied: u64,
limit: u64,
},
SdkBytes {
occupied: u64,
limit: u64,
},
RequestBytes {
conversation_id: ConversationId,
park_order: u64,
actual: u64,
limit: u64,
},
RecoveryHandshakeRequestBytes {
operands: HandshakeSizeOperands,
limit: u64,
},
RecoveryHandshakeRequestWireFrameBytes {
operands: HandshakeSizeOperands,
limit: u64,
},
RecoveryHandshakeResponseWireFrameBytes {
operands: HandshakeSizeOperands,
limit: u64,
},
}