net-sync 0.0.1

Abstraction for synchronizing game-entities across the network.
use crate::compression::CompressionStrategy;
use crate::error::ErrorKind;
use std::error::Error;

/// An compression strategy using the Lz4 compression.
#[derive(Clone)]
pub struct Lz4;

impl CompressionStrategy for Lz4 {
    fn compress(&self, buffer: &[u8]) -> Vec<u8> {
        lz4_compress::compress(buffer)
    }

    fn decompress(&self, buffer: &[u8]) -> Result<Vec<u8>, ErrorKind> {
        lz4_compress::decompress(&buffer)
            .map_err(|e| ErrorKind::CompressionError(e.description().to_string()))
    }
}

impl Default for Lz4 {
    fn default() -> Self {
        Lz4
    }
}