// Copyright 2017 Parity Technologies (UK) Ltd. // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // Polkadot is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . //! Errors that can occur during the consensus process. use primitives::Ed25519AuthorityId as AuthorityId; use runtime_primitives::RuntimeString; error_chain! { links { Client(::client::error::Error, ::client::error::ErrorKind); Consensus(::consensus::error::Error, ::consensus::error::ErrorKind); } errors { InvalidDutyRosterLength(expected: usize, got: usize) { description("Duty Roster had invalid length"), display("Invalid duty roster length: expected {}, got {}", expected, got), } NotValidator(id: AuthorityId) { description("Local account ID not a validator at this block."), display("Local account ID ({:?}) not a validator at this block.", id), } InherentError(reason: RuntimeString) { description("Unexpected error while checking inherents"), display("Unexpected error while checking inherents: {}", reason), } PrematureDestruction { description("Proposer destroyed before finishing proposing or evaluating"), display("Proposer destroyed before finishing proposing or evaluating"), } Timer(e: ::tokio::timer::Error) { description("Failed to register or resolve async timer."), display("Timer failed: {}", e), } Executor(e: ::futures::future::ExecuteErrorKind) { description("Unable to dispatch agreement future"), display("Unable to dispatch agreement future: {:?}", e), } } } // impl From<::bft::InputStreamConcluded> for Error { // fn from(err: ::bft::InputStreamConcluded) -> Self { // ::bft::Error::from(err).into() // } // }