a43d183b4f
* Compiles but runtime time fails * wip * Beginning of clean-up - creation of config to keep things together * Removed unused module * Removed hardcoded constants * Easier way of sending binary messages * WIP cleanup before machine switch * Upgrade wasm-bindgen to 0.2.83 * Fixed compilation warnings for wasm client * all clients compiling without warnings * disabling topology refresh in wasm * Added a config option to disable loop cover traffic stream * config changes * Make webassembly work in a web worker - `wasm-timer` modified to work in web worker - add worker target to webpack - add client to call from HTML - update README to build WASM for bundling (this does not build ES modules) * Restored topology refreshing * correctly polling items in the wasm delay_queue * Allow client to read up to 8 messages at once from gateway connection (#1669) * Allow client to read up to 8 messages at once from gateway connection * Importing tokio::select in wasm32 target * Updated changelog * missing imports * Introduced disable_main_poisson_packet_distribution to force real_traffic_stream to disable poisson sending (#1664) * Introduced disable_main_poisson_packet_distribution to force real_traffic_stream to disable poisson sending * Updated changelog * Adjusting default settings * Introduced a client-configurable option to force it to use extended packet size * local adjustments * Removed warning associated with receiving extended packets * Minimal v2-required changes * Updated changelog * explicitly allowing clippy drop_non_drop Co-authored-by: Mark Sinclair <mmsinclair@gmail.com>
29 lines
824 B
Rust
29 lines
824 B
Rust
use std::borrow::Borrow;
|
|
use std::cmp::Eq;
|
|
use std::hash::Hash;
|
|
|
|
/// Abstracts the stack operations needed to track timeouts.
|
|
pub(crate) trait Stack: Default {
|
|
/// Type of the item stored in the stack
|
|
type Owned: Borrow<Self::Borrowed>;
|
|
|
|
/// Borrowed item
|
|
type Borrowed: Eq + Hash;
|
|
|
|
/// Item storage, this allows a slab to be used instead of just the heap
|
|
type Store;
|
|
|
|
/// Returns `true` if the stack is empty
|
|
fn is_empty(&self) -> bool;
|
|
|
|
/// Push an item onto the stack
|
|
fn push(&mut self, item: Self::Owned, store: &mut Self::Store);
|
|
|
|
/// Pop an item from the stack
|
|
fn pop(&mut self, store: &mut Self::Store) -> Option<Self::Owned>;
|
|
|
|
fn remove(&mut self, item: &Self::Borrowed, store: &mut Self::Store);
|
|
|
|
fn when(item: &Self::Borrowed, store: &Self::Store) -> u64;
|
|
}
|