use crate::base::generated::steam_language::EMsg;
const PROTO_MASK: u32 = 0x8000_0000;
const EMSG_MASK: u32 = !PROTO_MASK;
pub fn get_msg(msg: u32) -> Option<EMsg> {
MsgUtil::get_msg(msg)
}
pub fn get_gc_msg(msg: u32) -> u32 {
MsgUtil::get_gc_msg(msg)
}
pub fn is_proto_buf(msg: u32) -> bool {
MsgUtil::is_proto_buf(msg)
}
pub fn make_msg(msg: EMsg, protobuf: bool) -> u32 {
MsgUtil::make_msg(msg, protobuf)
}
pub fn make_gc_msg(msg: u32, protobuf: bool) -> u32 {
MsgUtil::make_gc_msg(msg, protobuf)
}
#[derive(Debug)]
pub struct MsgUtil;
impl MsgUtil {
pub fn get_msg(msg: u32) -> Option<EMsg> {
EMsg::from_value((msg & EMSG_MASK) as i32)
}
pub fn get_msg_from(msg: EMsg) -> Option<EMsg> {
EMsg::from_value((msg.value() as u32 & EMSG_MASK) as i32)
}
pub fn get_gc_msg(msg: u32) -> u32 {
msg & EMSG_MASK
}
pub fn is_proto_buf(msg: u32) -> bool {
(msg & PROTO_MASK) > 0
}
pub fn is_proto_buf_from(msg: EMsg) -> bool {
(msg.value() as u32 & PROTO_MASK) > 0
}
pub fn make_msg(msg: EMsg, protobuf: bool) -> u32 {
let raw = msg.value() as u32;
if protobuf {
raw | PROTO_MASK
} else {
raw
}
}
pub fn make_gc_msg(msg: u32, protobuf: bool) -> u32 {
if protobuf {
msg | PROTO_MASK
} else {
msg
}
}
}