pub struct Version {
val: u32,
}
impl Version {
pub fn new(major: u32, minor: u32, subminor: u32) -> Self {
let val = ((major) << 16) | ((minor) << 8) | (subminor);
Self { val }
}
pub fn from_val(val: u32) -> Self {
Self { val }
}
pub fn val(&self) -> u32 {
self.val
}
pub fn major(&self) -> u32 {
(self.val >> 16) & 0xffff
}
pub fn minor(&self) -> u32 {
(self.val >> 8) & 0xff
}
pub fn subminor(&self) -> u32 {
self.val & 0xff
}
pub fn check_protocol_incompatible(&self, version: Self) -> bool {
let kmajor = self.major();
let kminor = self.minor();
let umajor = version.major();
let uminor = version.minor();
kmajor != umajor || kminor != uminor
}
}