teamy-mft 0.7.0

TeamDman's Master File Table CLI and library for NTFS.
use crate::daemon::CorrelationId;
use crate::daemon::DaemonLogWireEvent;
use crate::daemon::LogStreamRequest;
use crate::daemon::MachineError;
use crate::daemon::PingResponse;
use crate::daemon::QueryResponse;
use crate::daemon::StatusRequest;
use crate::daemon::StatusResponse;
use crate::daemon::UsnJournalRequest;
use crate::daemon::UsnJournalStatus;
use crate::query::QueryPlan;
use crate::query::QueryResultRow;
use crate::sync::SyncPlan;

#[vox::service]
pub trait MachineDaemonRpc {
    async fn ping(&self, logs: vox::Tx<DaemonLogWireEvent>) -> Result<PingResponse, MachineError>;

    async fn shutdown(&self, logs: vox::Tx<DaemonLogWireEvent>) -> Result<(), MachineError>;

    async fn query(
        &self,
        request: QueryPlan,
        logs: vox::Tx<DaemonLogWireEvent>,
    ) -> Result<QueryResponse, MachineError>;

    async fn query_stream(
        &self,
        request: QueryPlan,
        rows: vox::Tx<QueryResultRow>,
        logs: vox::Tx<DaemonLogWireEvent>,
        cancel: vox::Rx<u8>,
    ) -> Result<CorrelationId, MachineError>;

    async fn sync(
        &self,
        request: SyncPlan,
        logs: vox::Tx<DaemonLogWireEvent>,
    ) -> Result<(), MachineError>;

    async fn status(
        &self,
        request: StatusRequest,
        logs: vox::Tx<DaemonLogWireEvent>,
    ) -> Result<StatusResponse, MachineError>;

    async fn query_usn_journal(
        &self,
        request: UsnJournalRequest,
        logs: vox::Tx<DaemonLogWireEvent>,
    ) -> Result<UsnJournalStatus, MachineError>;

    async fn stream_logs(
        &self,
        request: LogStreamRequest,
        logs: vox::Tx<DaemonLogWireEvent>,
        cancel: vox::Rx<u8>,
    ) -> Result<(), MachineError>;
}