1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//! Represents a data item.

use dslab_core::Id;

use dslab_dfs::host_info::{ChunkId, DataId};

/// Represents a data item.
#[derive(Debug, Clone, Copy)]
pub enum DataItem {
    /// Piece of local data on a host.
    Local { size: u64, host: Id },
    /// Data which was uploaded to DFS.
    Replicated { size: u64, data_id: DataId },
    /// One chunk from DFS.
    Chunk { size: u64, chunk_id: ChunkId },
}

impl DataItem {
    /// Returns size of a data item.
    pub fn size(&self) -> u64 {
        match self {
            DataItem::Local { size, .. } | DataItem::Replicated { size, .. } | DataItem::Chunk { size, .. } => *size,
        }
    }
}