mod compression;
mod options;
mod reader;
mod service;
use std::{
fmt::Debug,
io,
pin::Pin,
task::{Context, Poll},
};
use compression::MaybeCompressedReader;
use futures_channel::mpsc::{Receiver, Sender};
use futures_io::AsyncRead;
use hyper::body::Bytes;
pub use options::ExportBuilder;
use crate::etl::{export::service::ExportService, job::OneShotServer};
type ExportDataSender = Sender<Bytes>;
type ExportDataReceiver = Receiver<Bytes>;
type ExportChannelSender = flume::Sender<ExportDataReceiver>;
type ExportPartsReceiver = flume::Receiver<(ExportDataReceiver, OneShotServer<ExportService>)>;
#[derive(Debug)]
pub struct ExaExport(MaybeCompressedReader);
impl AsyncRead for ExaExport {
fn poll_read(
mut self: Pin<&mut Self>,
cx: &mut Context<'_>,
buf: &mut [u8],
) -> Poll<io::Result<usize>> {
Pin::new(&mut self.0).poll_read(cx, buf)
}
fn poll_read_vectored(
mut self: Pin<&mut Self>,
cx: &mut Context<'_>,
bufs: &mut [io::IoSliceMut<'_>],
) -> Poll<io::Result<usize>> {
Pin::new(&mut self.0).poll_read_vectored(cx, bufs)
}
}