1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
use types::*; use protocol::*; #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub enum AMQPChannel { Global, Id(ShortUInt), } impl AMQPChannel { pub fn get_id(&self) -> ShortUInt { match *self { AMQPChannel::Global => 0, AMQPChannel::Id(id) => id, } } } impl From<ShortUInt> for AMQPChannel { fn from(id: ShortUInt) -> AMQPChannel { match id { 0 => AMQPChannel::Global, id => AMQPChannel::Id(id), } } } #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub enum AMQPFrameType { Method, Header, Body, Heartbeat } #[derive(Clone, Debug, PartialEq)] pub enum AMQPFrame { ProtocolHeader, Method(ShortUInt, AMQPClass), Header(ShortUInt, ShortUInt, AMQPContentHeader), Body(ShortUInt, Vec<u8>), Heartbeat(ShortUInt) } #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub struct AMQPRawFrame<'a> { pub frame_type: AMQPFrameType, pub channel_id: ShortUInt, pub size: LongUInt, pub payload: &'a [u8], } #[derive(Clone, Debug, PartialEq)] pub struct AMQPContentHeader { pub class_id: ShortUInt, pub weight: ShortUInt, pub body_size: LongLongUInt, pub properties: basic::AMQPProperties, }