CraftIo

Trait CraftIo 

Source
pub trait CraftIo {
    // Required methods
    fn set_state(&mut self, next: State);
    fn set_compression_threshold(&mut self, threshold: Option<i32>);
    fn enable_encryption(
        &mut self,
        key: &[u8],
        iv: &[u8],
    ) -> Result<(), CipherError>;
    fn set_max_packet_size(&mut self, max_size: usize);
    fn ensure_buf_capacity(&mut self, capacity: usize);
    fn ensure_compression_buf_capacity(&mut self, capacity: usize);
}
Expand description

Trait for stateful connection types, such as the CraftReader<R> or CraftWriter<W> or combo type CraftConnection<R, W>.

Allows for control over protocol state, compression threshold, and encryption if those features are enabled.

Required Methods§

Source

fn set_state(&mut self, next: State)

Changes the current connection state. For readers, this changes how numeric packet IDs are interpreted. For writers, this will change the packets that can be written without a panic.

Source

fn set_compression_threshold(&mut self, threshold: Option<i32>)

Modifies the compression configuration. If a value of None is provided, then compression is disabled. If a value of Some is provided, then the threshold is set to that value.

If a 0 or negative value is provided in a Some variant, then it is the same as calling this function with the None variant

Source

fn enable_encryption( &mut self, key: &[u8], iv: &[u8], ) -> Result<(), CipherError>

Modifies the encryption configuration. This function should only be called once, and can only be used to enable encryption.

If encryption is already enabled or the arguments are not valid for the cipher, then an error is returned and nothing in the underlying state is changed.

Source

fn set_max_packet_size(&mut self, max_size: usize)

Sets the max packet size which this I/O wrapper will decode or transmit.

This limit is meant to be used to ensure connections never allocate gigantic buffers. Therefore, the limitation applies to the representation of packet in memory. This means that a reader cannot read a compressed packet above this threshold, nor can it decompress to a packet which is above this threshold. A writer cannot write a packet which exceeds this size (when serialized) even if compression is enabled.

todo split the compressed vs not compressed limits?

Source

fn ensure_buf_capacity(&mut self, capacity: usize)

Source

fn ensure_compression_buf_capacity(&mut self, capacity: usize)

Implementors§