pub mod batch;
pub mod capability;
pub mod context;
pub mod error;
pub mod lifecycle;
pub mod message;
pub mod metadata;
pub mod ports;
use std::future::Future;
pub use batch::{BatchExecutor, BatchInputs, BatchOutputs, WasmModule};
use context::NodeContext;
pub use context::{CancellationHandle, CancellationToken};
pub use error::{
CancellationError, PureflowError, ErrorCode, ErrorVisibility, ExecutionError, LifecycleError,
MetadataError, RetryDisposition, ValidationError,
};
pub use message::PacketPayload;
pub use metadata::{
DeadlockDiagnosticMetadata, ErrorDiagnosticMetadata, ErrorMetadataKind, ErrorMetadataRecord,
ExternalEffectMetadataKind, ExternalEffectMetadataRecord, JsonlMetadataSink,
MessageBoundaryKind, MessageBoundaryRecord, MetadataRecord, MetadataSink, MetadataTier,
NoopMetadataSink, TieredMetadataPolicy, TieredMetadataSink, metadata_record_to_json_value,
};
pub use ports::{
InputPortHandle, OutputPacketValidator, OutputPortHandle, PortPacket, PortRecvError,
PortSendError, PortSendPermit, PortsIn, PortsOut, bounded_edge_channel,
};
pub type Result<T> = std::result::Result<T, PureflowError>;
pub trait NodeExecutor: Sync {
type RunFuture<'a>: Future<Output = Result<()>> + Send + 'a
where
Self: 'a;
fn run(&self, ctx: NodeContext, inputs: PortsIn, outputs: PortsOut) -> Self::RunFuture<'_>;
}