firewheel_core/node/
dummy.rs

1use crate::{
2    channel_config::ChannelConfig,
3    event::ProcEvents,
4    node::{ProcBuffers, ProcExtra},
5};
6
7use super::{
8    AudioNode, AudioNodeInfo, AudioNodeProcessor, ConstructProcessorContext, ProcInfo,
9    ProcessStatus,
10};
11
12/// A "dummy" [`AudioNode`], a node which does nothing.
13#[derive(Default, Debug, Clone, Copy, PartialEq, Eq)]
14pub struct DummyNode;
15
16/// The configuration for a [`DummyNode`], a node which does nothing.
17#[derive(Default, Debug, Clone, Copy, PartialEq, Eq)]
18pub struct DummyNodeConfig {
19    pub channel_config: ChannelConfig,
20}
21
22impl AudioNode for DummyNode {
23    type Configuration = DummyNodeConfig;
24
25    fn info(&self, config: &Self::Configuration) -> AudioNodeInfo {
26        AudioNodeInfo::new()
27            .debug_name("dummy")
28            .channel_config(config.channel_config)
29    }
30
31    fn construct_processor(
32        &self,
33        _config: &Self::Configuration,
34        _cx: ConstructProcessorContext,
35    ) -> impl AudioNodeProcessor {
36        DummyProcessor
37    }
38}
39
40struct DummyProcessor;
41
42impl AudioNodeProcessor for DummyProcessor {
43    fn process(
44        &mut self,
45        _info: &ProcInfo,
46        _buffers: ProcBuffers,
47        _events: &mut ProcEvents,
48        _extra: &mut ProcExtra,
49    ) -> ProcessStatus {
50        ProcessStatus::Bypass
51    }
52}