use super::error::*;
#[derive(Clone, Default, Debug)]
pub struct Memory {
reservation: Option<i64>,
limit: Option<i64>,
swap: Option<i64>,
}
impl Memory {
pub fn reservation(&mut self, val: i64) -> &mut Self {
self.reservation = Some(val);
self
}
pub fn limit(&mut self, val: i64) -> &mut Self {
self.limit = Some(val);
self
}
pub fn swap(&mut self, val: i64) -> &mut Self {
self.swap = Some(val);
self
}
pub(crate) fn build(&self) -> Result<oci_spec::runtime::LinuxMemory> {
let mut builder = oci_spec::runtime::LinuxMemoryBuilder::default();
if let Some(val) = self.reservation {
builder = builder.reservation(val);
}
if let Some(val) = self.limit {
builder = builder.limit(val);
}
if let Some(val) = self.swap {
if self.limit == self.swap {
builder = builder.swap(val + 1);
} else {
builder = builder.swap(val);
}
}
Ok(builder.build()?)
}
}