taple-core 0.3.3

TAPLE Protocol reference implementation
Documentation
use super::{message::{Message}, identifier::Identifier};

const DEFAULT_TIMEOUT_IN_MS: u32 = 10000;
const DEFAULT_REPLICATION_FACTOR: f32 = 0.25;
const DEFAULT_NUMBER_OF_RETRIES: u32 = 10;
pub struct MessageTaskRequestBuilder {
  message_id: Identifier,
  message: Message,
  targets: Vec<Vec<u8>>,
  timeout: u32,
  replication_factor: f32,
  number_of_retries: u32,
}

impl MessageTaskRequestBuilder {
  pub fn new(
    message_id: Identifier,
    message: Message,
    targets: Vec<Vec<u8>>
  ) -> Self {
    Self {
      message_id,
      message,
      targets,
      timeout: DEFAULT_TIMEOUT_IN_MS,
      replication_factor: DEFAULT_REPLICATION_FACTOR,
      number_of_retries: DEFAULT_NUMBER_OF_RETRIES,
    }
  }

  pub fn with_timeout(&mut self, timeout: u32) -> &mut Self {
    self.timeout = timeout;
    self
  }

  pub fn with_replication_factor(&mut self, replication_factor: f32) -> &mut Self {
    self.replication_factor = replication_factor;
    self
  }
  
  pub fn with_number_of_retries(&mut self, number_of_retries : u32) -> &mut Self{
    self.number_of_retries = number_of_retries;
    self
  }

  pub fn build(&self) -> MessageTaskRequest{
    MessageTaskRequest{
        message_id : self.message_id.clone(),
        message : self.message.clone(),
        targets : self.targets.clone(),
        config : TaskConfig { 
            timeout: self.timeout, 
            replication_factor: self.replication_factor, 
            number_of_retries: self.number_of_retries 
        }
    }
  }

}

#[derive(Clone, Debug)]
pub struct MessageTaskRequest {
  pub message_id: Identifier,
  pub message: Message,
  pub targets: Vec<Vec<u8>>,
  pub config: TaskConfig,
}

#[derive(Clone, Debug)]
pub struct TaskConfig {
  pub timeout: u32,
  pub replication_factor: f32,
  pub number_of_retries: u32,
}

impl TaskConfig {
  pub fn timeout(&self) -> u32 {
    self.timeout
  }

  pub fn replication_factor(&self) -> f32 {
    self.replication_factor
  }

  pub fn number_of_retries(&self) -> u32 {
    self.number_of_retries
  }
}