use crate::messages::{IncomingMessages, ResponseMessage};
use crate::scanner::common::decoders;
use crate::scanner::common::encoders;
use crate::scanner::ScannerData;
use crate::subscriptions::{DecoderContext, StreamDecoder};
use crate::Error;
impl StreamDecoder<Vec<ScannerData>> for Vec<ScannerData> {
const RESPONSE_MESSAGE_IDS: &'static [IncomingMessages] = &[IncomingMessages::ScannerData, IncomingMessages::Error];
fn decode(_context: &DecoderContext, message: &mut ResponseMessage) -> Result<Vec<ScannerData>, Error> {
match message.message_type() {
IncomingMessages::ScannerData => decoders::decode_scanner_message(message),
IncomingMessages::Error => Err(Error::from(message.clone())),
_ => Err(Error::unexpected_response(message)),
}
}
fn cancel_message(_server_version: i32, request_id: Option<i32>, _context: Option<&DecoderContext>) -> Result<Vec<u8>, Error> {
let request_id = request_id.expect("Request ID required to encode cancel scanner subscription.");
encoders::encode_cancel_scanner_subscription(request_id)
}
}
#[cfg(test)]
#[path = "stream_decoders_tests.rs"]
mod tests;