mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-07-07 20:07:24 +00:00
744b783a7d
* chainHead/api: Make storage/body/call pure RPC methods Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * chainHead: Add mpsc channel between RPC methods Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * chainHead/subscriptions: Extract mpsc::Sender via BlockGuard Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * chainHead/subscriptions: Generate and provide the method operation ID Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * chainHead: Generate `chainHead_body` response Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * chainHead: Generate `chainHead_call` response Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * chainHead: Generate `chainHead_storage` responses Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * chainHead: Propagate responses of methods to chainHead_follow Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * chainHead/tests: Adjust `chainHead_body` responses Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * chainHead/tests: Adjust `chainHead_call` responses Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * chainHead/tests: Adjust `chainHead_call` responses Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * chainHead/tests: Ensure unique operation IDs across methods Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * chainHead/events: Remove old method events Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * chainHead/subscriptions: Add limit helper Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * chainHead/subscription: Expose limits to `BlockGuard` Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * chainHead/tests: Adjust testing to ongoing operations Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * chainHead: Make limits configurable via `ChainHeadConfig` Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * chainHead/tests: Adjust testing to `ChainHeadConfig` Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * chainHead/tests: Ensure operation limits discards items Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * chainHead: Improve documentation Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * chainHead: Rename `OngoingOperations` -> `LimitOperations` Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * chainHead: Rename reserve -> reserve_at_most Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * chainHead: Use duration const instead of u64 Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * chainHead/subscription: Use tokio::sync::Semaphore for limits Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * Update client/rpc-spec-v2/src/chain_head/subscription/inner.rs Co-authored-by: Sebastian Kunert <skunert49@gmail.com> --------- Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> Co-authored-by: parity-processbot <> Co-authored-by: Sebastian Kunert <skunert49@gmail.com>
67 lines
2.3 KiB
Rust
67 lines
2.3 KiB
Rust
// This file is part of Substrate.
|
|
|
|
// Copyright (C) Parity Technologies (UK) Ltd.
|
|
// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0
|
|
|
|
// This program 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.
|
|
|
|
// This program 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 this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
use sp_blockchain::Error;
|
|
|
|
/// Subscription management error.
|
|
#[derive(Debug, thiserror::Error)]
|
|
pub enum SubscriptionManagementError {
|
|
/// The subscription has exceeded the internal limits
|
|
/// regarding the number of pinned blocks in memory or
|
|
/// the number of ongoing operations.
|
|
#[error("Exceeded pinning or operation limits")]
|
|
ExceededLimits,
|
|
/// Error originated from the blockchain (client or backend).
|
|
#[error("Blockchain error {0}")]
|
|
Blockchain(Error),
|
|
/// The database does not contain a block hash.
|
|
#[error("Block hash is absent")]
|
|
BlockHashAbsent,
|
|
/// The database does not contain a block header.
|
|
#[error("Block header is absent")]
|
|
BlockHeaderAbsent,
|
|
/// The specified subscription ID is not present.
|
|
#[error("Subscription is absent")]
|
|
SubscriptionAbsent,
|
|
/// Custom error.
|
|
#[error("Subscription error {0}")]
|
|
Custom(String),
|
|
}
|
|
|
|
// Blockchain error does not implement `PartialEq` needed for testing.
|
|
impl PartialEq for SubscriptionManagementError {
|
|
fn eq(&self, other: &SubscriptionManagementError) -> bool {
|
|
match (self, other) {
|
|
(Self::ExceededLimits, Self::ExceededLimits) |
|
|
// Not needed for testing.
|
|
(Self::Blockchain(_), Self::Blockchain(_)) |
|
|
(Self::BlockHashAbsent, Self::BlockHashAbsent) |
|
|
(Self::BlockHeaderAbsent, Self::BlockHeaderAbsent) |
|
|
(Self::SubscriptionAbsent, Self::SubscriptionAbsent) => true,
|
|
(Self::Custom(lhs), Self::Custom(rhs)) => lhs == rhs,
|
|
_ => false,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl From<Error> for SubscriptionManagementError {
|
|
fn from(err: Error) -> Self {
|
|
SubscriptionManagementError::Blockchain(err)
|
|
}
|
|
}
|