use serde_derive::*;

pub const VERSION: u16 = 0;

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Job {
    pub id: uuid::Uuid,
    pub repo: uuid::Uuid,
    pub channel: String,
    pub state: libpijul::pristine::Merkle,
    pub extra_patches: Vec<libpijul::pristine::Hash>,
}

#[derive(Debug, Serialize, Deserialize)]
pub enum Message {
    Handshake {
        version: u16,
        id: i64,
    },
    Ready,
    Job(Job),
    GetTarball {
        id: uuid::Uuid,
    },
    InvalidInput {
        input: String,
    },
    Log {
        job: Job,
        exit_status: Option<i32>,
        path: Option<std::path::PathBuf>,
    },
    Chunk {
        id: uuid::Uuid,
        stderr: bool,
        len: u32,
    },
}