modcommand;modmemory;pubusememory::InMemoryChannel;modretry;modstate;useasync_trait::async_trait;usecrate::contracts::Envelope;/// An implementation of [TelemetryChannel](trait.TelemetryChannel.html) is responsible for queueing
/// and periodically submitting telemetry events.
#[async_trait]pubtraitTelemetryChannel: Send + Sync {/// Queues a single telemetry item.
fnsend(&self, envelop: Envelope);/// Forces all pending telemetry items to be submitted. The current task will not be blocked.
fnflush(&self);/// Flushes and tears down the submission flow and closes internal channels.
/// It blocks the current task until all pending telemetry items have been submitted and it is safe to
/// shutdown without losing telemetry.
async fnclose(&mutself);/// Flushes and tears down the submission flow and closes internal channels.
/// It blocks the current task until all pending telemetry items have been submitted and it is safe to
/// shutdown without losing telemetry.
/// Tears down the submission flow and closes internal channels. Any telemetry waiting to be sent is discarded.
/// This is a more abrupt version of [close](#method.close).
async fnterminate(&mutself);}