use crate::util::term::{Stderr, Stdout};
use hurl_core::types::Index;
use std::io;
use super::job::{Job, JobResult};
use super::worker::WorkerId;
#[allow(clippy::large_enum_variant)]
pub enum WorkerMessage {
InputReadError(InputReadErrorMsg),
ParsingError(ParsingErrorMsg),
Running(RunningMsg),
Completed(CompletedMsg),
}
pub struct InputReadErrorMsg {
#[allow(dead_code)]
pub worker_id: WorkerId,
pub job: Job,
pub error: io::Error,
}
impl InputReadErrorMsg {
pub fn new(worker_id: WorkerId, job: &Job, error: io::Error) -> Self {
InputReadErrorMsg {
worker_id,
job: job.clone(),
error,
}
}
}
pub struct ParsingErrorMsg {
#[allow(dead_code)]
pub worker_id: WorkerId,
#[allow(dead_code)]
pub job: Job,
pub stderr: Stderr,
}
impl ParsingErrorMsg {
pub fn new(worker_id: WorkerId, job: &Job, stderr: &Stderr) -> Self {
ParsingErrorMsg {
worker_id,
job: job.clone(),
stderr: stderr.clone(),
}
}
}
pub struct RunningMsg {
pub worker_id: WorkerId,
pub job: Job,
pub current_entry: Index,
pub last_entry: Index,
pub retry_count: usize,
}
impl RunningMsg {
pub fn new(
worker_id: WorkerId,
job: &Job,
current_entry: Index,
last_entry: Index,
retry_count: usize,
) -> Self {
RunningMsg {
worker_id,
job: job.clone(),
current_entry,
last_entry,
retry_count,
}
}
}
pub struct CompletedMsg {
pub worker_id: WorkerId,
pub result: JobResult,
pub stdout: Stdout,
pub stderr: Stderr,
}
impl CompletedMsg {
pub fn new(worker_id: WorkerId, result: JobResult, stdout: Stdout, stderr: Stderr) -> Self {
CompletedMsg {
worker_id,
result,
stdout,
stderr,
}
}
}