objects/
error.rs

1// Copyright 2023 The Fuchsia Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5use thiserror::Error;
6use xml::reader::Error as XmlReaderError;
7use xml::writer::Error as XmlWriterError;
8
9/// The error types for packet parsing.
10#[derive(Error, Debug)]
11#[non_exhaustive]
12pub enum Error {
13    /// Error encountered when trying to write XML.
14    #[error("Error writing XML data: {:?}", .0)]
15    WriteXml(#[from] XmlWriterError),
16
17    /// Error encountered when trying to read XML.
18    #[error("Error reading from XML data: {:?}", .0)]
19    ReadXml(#[from] XmlReaderError),
20
21    /// Error returned when invalid data was encountered.
22    #[error("Invalid data: {:?}", .0)]
23    InvalidData(String),
24
25    /// Error returned when required data is missing.
26    #[error("Missing data: {:?}", .0)]
27    MissingData(String),
28
29    /// Error returned when duplicate data was encountered.
30    #[error("Invalid data: {:?}", .0)]
31    DuplicateData(String),
32
33    /// Error returned when unsupported version of the object was encountered.
34    #[error("Unsupported object version")]
35    UnsupportedVersion,
36}
37
38impl Error {
39    pub fn invalid_data(msg: impl ToString) -> Self {
40        Self::InvalidData(msg.to_string())
41    }
42
43    pub fn missing_data(msg: impl ToString) -> Self {
44        Self::MissingData(msg.to_string())
45    }
46}