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
use std::collections::{HashMap, VecDeque}; use crate::consumer::Consumer; use crate::message::*; #[derive(Clone,Debug,PartialEq)] pub struct Binding { pub exchange: String, pub routing_key: String, pub no_wait: bool, pub active: bool, } impl Binding { pub fn new(exchange: String, routing_key: String, no_wait: bool) -> Binding { Binding { exchange: exchange, routing_key: routing_key, no_wait: no_wait, active: false, } } } #[derive(Debug)] pub struct Queue { pub name: String, pub bindings: HashMap<(String, String), Binding>, pub consumers: HashMap<String, Consumer>, pub message_count: u32, pub consumer_count: u32, pub get_messages: VecDeque<BasicGetMessage>, pub current_get_message: Option<BasicGetMessage>, } impl Queue { pub fn new(name: String, message_count: u32, consumer_count: u32) -> Queue { Queue { name, bindings: HashMap::new(), consumers: HashMap::new(), message_count, consumer_count, get_messages: VecDeque::new(), current_get_message: None, } } pub fn next_basic_get_message(&mut self) -> Option<BasicGetMessage> { self.get_messages.pop_front() } }