#[cfg(feature = "cum_agg")]
pub mod cum_agg;
pub mod dynamic_slice;
pub mod filter;
pub mod group_by;
pub mod in_memory_map;
pub mod in_memory_sink;
pub mod in_memory_source;
pub mod input_independent_select;
pub mod io_sinks;
pub mod io_sources;
pub mod joins;
pub mod map;
#[cfg(feature = "merge_sorted")]
pub mod merge_sorted;
pub mod multiplexer;
pub mod negative_slice;
pub mod ordered_union;
pub mod peak_minmax;
pub mod reduce;
pub mod repeat;
pub mod rle;
pub mod rle_id;
pub mod select;
pub mod shift;
pub mod simple_projection;
pub mod streaming_slice;
pub mod top_k;
pub mod with_row_index;
pub mod zip;
mod compute_node_prelude {
pub use polars_core::frame::DataFrame;
pub use polars_error::PolarsResult;
pub use polars_expr::state::ExecutionState;
pub use super::ComputeNode;
pub use crate::async_executor::{JoinHandle, TaskPriority, TaskScope};
pub use crate::execute::StreamingExecutionState;
pub use crate::graph::PortState;
pub use crate::morsel::{Morsel, MorselSeq};
pub use crate::pipe::{RecvPort, SendPort};
}
use compute_node_prelude::*;
use crate::execute::StreamingExecutionState;
pub trait ComputeNode: Send {
fn name(&self) -> &str;
fn update_state(
&mut self,
recv: &mut [PortState],
send: &mut [PortState],
state: &StreamingExecutionState,
) -> PolarsResult<()>;
fn is_memory_intensive_pipeline_blocker(&self) -> bool {
false
}
fn spawn<'env, 's>(
&'env mut self,
scope: &'s TaskScope<'s, 'env>,
recv_ports: &mut [Option<RecvPort<'_>>],
send_ports: &mut [Option<SendPort<'_>>],
state: &'s StreamingExecutionState,
join_handles: &mut Vec<JoinHandle<PolarsResult<()>>>,
);
fn get_output(&mut self) -> PolarsResult<Option<DataFrame>> {
Ok(None)
}
}