| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| //! Qmux Errors, the transport layer for QMI-based modems |
| use { |
| failure::Fail, |
| fuchsia_zircon as zx, |
| }; |
| |
| #[derive(Debug, Fail)] |
| pub enum QmuxError { |
| /// A endpoint encountered an IO error reading a response from a channel. |
| #[fail(display = "A FIDL client encountered an IO error reading a response from a channel: {}", _0)] |
| ClientRead(#[cause] zx::Status), |
| |
| /// A endpoint encountered an IO error writing a request to a channel. |
| #[fail(display = "A FIDL client encountered an IO error writing a request into a channel: {}", _0)] |
| ClientWrite(#[cause] zx::Status), |
| |
| /// Invalid buffer. |
| #[fail(display = "Invalid QMI buffer contents")] |
| Invalid, |
| |
| /// A future was polled after it had already completed. |
| #[fail(display = "A QMI future was polled after it had already completed.")] |
| PollAfterCompletion, |
| |
| /// A Service or Client has not been initilialized, but a transaction for it exists |
| #[fail(display = "A Transaction for an non-existant Service/Client pair")] |
| InvalidSvcOrClient, |
| |
| /// No Client. |
| #[fail(display = "Failed to negotatiate creating a client with the modem")] |
| NoClient, |
| |
| /// No Transport. |
| #[fail(display = "No channel to communicate with transport layer")] |
| NoTransport, |
| } |