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
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
//! Trait and types for shared (Send) extensions.
use crateExtensionControlMsg;
use crateError;
use crateEffectHandler;
use crateSharedReceiver;
use crateTerminalState;
use async_trait;
/// Shared (Send) control channel for extensions.
///
/// Wraps a [`SharedReceiver`] with shutdown-grace-period logic.
/// See [`crate::extension::ControlChannel`] for the implementation.
pub type ControlChannel = crateControlChannel;
/// A trait for extensions (Send variant).
///
/// Extensions are long-lived components hosted alongside the data path --
/// today at pipeline scope, and in the future at engine, pipeline-group,
/// or node scope -- that expose functionality (e.g., authentication,
/// service discovery) to other components.
///
/// Unlike receivers, processors, and exporters, extensions are NOT generic
/// over PData -- they never process PData.
///
/// # Thread Safety
///
/// The shared `Extension` trait requires the `Send` bound, enabling use in both
/// single-threaded and multi-threaded runtime contexts.