harmos_domain/operations/storage/
mod.rs1mod abandon_file;
16mod append_file;
17mod create_file;
18mod delete_file;
19mod finish_file;
20mod follow_file;
21mod follow_objects;
22mod follow_records;
23mod follow_stream;
24mod query;
25mod read_file;
26mod resume_file;
27mod storage_status;
28mod write_file;
29mod write_objects;
30mod write_records;
31mod write_schema;
32mod write_streams;
33
34pub use abandon_file::AbandonFile;
37pub use append_file::AppendFile;
38pub use create_file::CreateFile;
39pub use delete_file::DeleteFile;
40pub use finish_file::FinishFile;
41pub use follow_file::FollowFile;
42pub use follow_objects::FollowObjects;
43pub use follow_records::{FollowBoundaries, FollowRecords, Followed};
44pub use follow_stream::FollowStream;
45pub use query::Query;
46pub use read_file::ReadFile;
47pub use resume_file::ResumeFile;
48pub use storage_status::StorageStatus;
49pub use write_file::WriteFile;
50pub use write_objects::WriteObjects;
51pub use write_records::WriteRecords;
52pub use write_schema::WriteSchema;
53pub use write_streams::WriteStreams;
54
55use std::time::Duration;
59use crate::catalog::{Catalog, Contains, Member, Visitor};
63use crate::operations::{Backoff, Jitter, OperationPolicy, RestartPolicy, RetryPolicy};
64
65pub const POLICY: OperationPolicy = OperationPolicy {
68 timeout: Duration::from_secs(60),
69 attempt_timeout: Duration::from_secs(15),
70 retries: RetryPolicy::OnTransient {
71 max_retries: 3,
72 backoff: Backoff::Exponential {
73 initial: Duration::from_millis(250),
74 maximum: Duration::from_secs(2),
75 jitter: Jitter::Deterministic,
76 },
77 },
78 restart: RestartPolicy::Never,
79};
80
81pub const EVERY_SCHEMA: &str = "*";
82
83pub const STREAM_POLICY: OperationPolicy = OperationPolicy { attempt_timeout: POLICY.timeout, retries: RetryPolicy::Never, ..POLICY };
84
85pub const IO_POLICY: OperationPolicy = OperationPolicy {
86 timeout: crate::operations::UNBOUNDED,
87 attempt_timeout: crate::operations::UNBOUNDED,
88 retries: RetryPolicy::Never,
89 restart: RestartPolicy::Never,
90};
91
92macro_rules! catalog {
95 ($($leaf:ident),* $(,)?) => {
96 pub enum Operations { $($leaf($leaf)),* }
97 impl<V: Visitor $(+ Member<$leaf>)*> Catalog<V> for Operations {
98 type Entries = [V::Entry; [$(stringify!($leaf)),*].len()];
99 const ENTRIES: Self::Entries = [$(<V as Member<$leaf>>::ENTRY),*];
100 }
101 $(impl Contains<$leaf> for Operations {})*
102 };
103}
104
105catalog! {
106 Query,
107 ReadFile,
108 FollowRecords,
109 FollowStream,
110 FollowFile,
111 StorageStatus,
112 ResumeFile,
113 CreateFile,
114 AppendFile,
115 FinishFile,
116 AbandonFile,
117 WriteRecords,
118 WriteStreams,
119 WriteFile,
120 DeleteFile,
121 WriteSchema,
122 WriteObjects,
123 FollowObjects,
124}
125
126