use super::super::{Packet, PacketFlagOps, PacketState};
impl Packet {
pub fn get_spec_state(&self) -> PacketState {
if self.is_ping_flag_set() {
return PacketState::Ping;
}
if self.is_pong_flag_set() {
return PacketState::Pong;
}
if self.is_send_transaction_flag_set() {
return PacketState::SendTransaction;
}
if self.is_accept_transaction_flag_set() {
return PacketState::AcceptTransaction;
}
if self.is_initiate_transaction_flag_set() {
return PacketState::InitTransaction;
}
if self.is_finish_transaction_flag_set() {
return PacketState::FinishTransaction;
}
PacketState::Normal
}
pub fn set_spec_state(&mut self, new_state: PacketState) {
self.set_ping_flag(false);
self.set_pong_flag(false);
self.set_send_transaction_flag(false);
self.set_accept_transaction_flag(false);
self.set_initiate_transaction_flag(false);
self.set_finish_transaction_flag(false);
match new_state {
PacketState::Normal => (),
PacketState::Ping => {
self.set_ping_flag(true);
}
PacketState::Pong => {
self.set_pong_flag(true);
}
PacketState::SendTransaction => {
self.set_send_transaction_flag(true);
}
PacketState::AcceptTransaction => {
self.set_accept_transaction_flag(true);
}
PacketState::InitTransaction => {
self.set_initiate_transaction_flag(true);
}
PacketState::FinishTransaction => {
self.set_finish_transaction_flag(true);
}
}
}
}