1use std::io;
2
3use thiserror::Error;
4
5#[derive(Debug, Copy, Clone)]
6pub struct AlreadyExists;
7
8#[derive(Error, Debug)]
9pub enum CreateQueueError {
10 #[error("Already exists")]
11 AlreadyExists,
12 #[error("Io error: {0}")]
13 IoError(#[from] io::Error),
14}
15
16impl From<AlreadyExists> for CreateQueueError {
17 fn from(_: AlreadyExists) -> Self {
18 CreateQueueError::AlreadyExists
19 }
20}
21
22#[derive(Error, Debug)]
23pub enum DeleteQueueError {
24 #[error("Missing queue")]
25 MissingQueue(String),
26 #[error("Io error: {0}")]
27 IoError(#[from] io::Error),
28}
29
30impl From<MissingQueue> for DeleteQueueError {
31 fn from(missing_queue: MissingQueue) -> Self {
32 DeleteQueueError::MissingQueue(missing_queue.0)
33 }
34}
35
36#[derive(Debug, Error)]
37#[error("MultiRecordCorruption")]
38pub struct MultiRecordCorruption;
39
40impl From<MultiRecordCorruption> for ReadRecordError {
41 fn from(_: MultiRecordCorruption) -> ReadRecordError {
42 ReadRecordError::Corruption
43 }
44}
45
46#[derive(Error, Debug)]
47pub enum TruncateError {
48 #[error("Missing queue: {0}")]
49 MissingQueue(String),
50 #[error("Io error: {0}")]
51 IoError(#[from] io::Error),
52}
53
54impl From<MissingQueue> for TruncateError {
55 fn from(missing_queue: MissingQueue) -> Self {
56 TruncateError::MissingQueue(missing_queue.0)
57 }
58}
59
60#[derive(Error, Debug)]
61pub enum AppendError {
62 #[error("Io error: {0}")]
63 IoError(#[from] io::Error),
64 #[error("Missing queue: {0}")]
65 MissingQueue(String),
66 #[error("Past")]
67 Past,
68}
69
70impl From<MissingQueue> for AppendError {
71 fn from(missing_queue: MissingQueue) -> Self {
72 AppendError::MissingQueue(missing_queue.0)
73 }
74}
75
76#[derive(Debug)]
77pub struct MissingQueue(pub String);
78
79#[derive(Error, Debug)]
80pub enum ReadRecordError {
81 #[error("Io error: {0}")]
82 IoError(#[from] io::Error),
83 #[error("Corruption")]
84 Corruption,
85}