use crate::object::ObjectCode;
use crate::util::Bytes;
#[cfg(feature = "std")]
use uuid::Uuid;
pub struct OID {
data: Vec<u8>,
}
impl OID {
pub fn new(code: ObjectCode) -> OID {
let mut oid = vec![0 as u8; 17];
oid[0] = 0xFE;
let mut man = vec![0 as u8; 3];
Bytes::from_u32(code, &mut man);
oid[1] = man[0];
oid[2] = man[1];
oid[3] = man[2];
#[cfg(not(feature = "std"))]
{
oid[16] = 0x01;
}
#[cfg(feature = "std")]
{
let v4_bytes = Uuid::new_v4().into_bytes();
for n in 0..=12 {
oid[4 + n] = v4_bytes[v4_bytes.len() - n - 1];
}
}
OID { data: oid }
}
pub fn bytes(&self) -> &[u8] {
&self.data
}
}