firewheel_core/node/
dummy.rs

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