chore: fix lint warning (#283)

This commit is contained in:
Santiago Carmuega 2023-09-07 14:39:18 +02:00 committed by GitHub
parent 384afa284b
commit 1f870cac66
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 133 additions and 112 deletions

View file

@ -1,7 +1,7 @@
use pallas::ledger::traverse::MultiEraBlock; use pallas::ledger::traverse::MultiEraBlock;
fn main() { fn main() {
let blocks = vec![ let blocks = [
include_str!("blocks/byron.block"), include_str!("blocks/byron.block"),
include_str!("blocks/shelley.block"), include_str!("blocks/shelley.block"),
include_str!("blocks/mary.block"), include_str!("blocks/mary.block"),

View file

@ -799,7 +799,7 @@ mod tests {
let addr = Address::from_str(original).unwrap(); let addr = Address::from_str(original).unwrap();
match addr { match addr {
Address::Byron(_) => assert!(matches!(addr.network(), None)), Address::Byron(_) => assert!(addr.network().is_none()),
_ => assert!(matches!(addr.network(), Some(Network::Mainnet))), _ => assert!(matches!(addr.network(), Some(Network::Mainnet))),
} }
} }

View file

@ -95,7 +95,7 @@ pub struct PeerServer {
impl PeerServer { impl PeerServer {
pub async fn accept(listener: &TcpListener, magic: u64) -> Result<Self, Error> { pub async fn accept(listener: &TcpListener, magic: u64) -> Result<Self, Error> {
let (bearer, _) = Bearer::accept_tcp(&listener) let (bearer, _) = Bearer::accept_tcp(listener)
.await .await
.map_err(Error::ConnectFailure)?; .map_err(Error::ConnectFailure)?;

View file

@ -7,7 +7,7 @@ use crate::multiplexer;
use super::{Message, State}; use super::{Message, State};
#[derive(Error, Debug)] #[derive(Error, Debug)]
pub enum Error { pub enum ClientError {
#[error("attempted to receive message while agency is ours")] #[error("attempted to receive message while agency is ours")]
AgencyIsOurs, AgencyIsOurs,
@ -74,57 +74,60 @@ impl Client {
} }
} }
fn assert_agency_is_ours(&self) -> Result<(), Error> { fn assert_agency_is_ours(&self) -> Result<(), ClientError> {
if !self.has_agency() { if !self.has_agency() {
Err(Error::AgencyIsTheirs) Err(ClientError::AgencyIsTheirs)
} else { } else {
Ok(()) Ok(())
} }
} }
fn assert_agency_is_theirs(&self) -> Result<(), Error> { fn assert_agency_is_theirs(&self) -> Result<(), ClientError> {
if self.has_agency() { if self.has_agency() {
Err(Error::AgencyIsOurs) Err(ClientError::AgencyIsOurs)
} else { } else {
Ok(()) Ok(())
} }
} }
fn assert_outbound_state(&self, msg: &Message) -> Result<(), Error> { fn assert_outbound_state(&self, msg: &Message) -> Result<(), ClientError> {
match (&self.0, msg) { match (&self.0, msg) {
(State::Idle, Message::RequestRange { .. }) => Ok(()), (State::Idle, Message::RequestRange { .. }) => Ok(()),
(State::Idle, Message::ClientDone) => Ok(()), (State::Idle, Message::ClientDone) => Ok(()),
_ => Err(Error::InvalidOutbound), _ => Err(ClientError::InvalidOutbound),
} }
} }
fn assert_inbound_state(&self, msg: &Message) -> Result<(), Error> { fn assert_inbound_state(&self, msg: &Message) -> Result<(), ClientError> {
match (&self.0, msg) { match (&self.0, msg) {
(State::Busy, Message::StartBatch) => Ok(()), (State::Busy, Message::StartBatch) => Ok(()),
(State::Busy, Message::NoBlocks) => Ok(()), (State::Busy, Message::NoBlocks) => Ok(()),
(State::Streaming, Message::Block { .. }) => Ok(()), (State::Streaming, Message::Block { .. }) => Ok(()),
(State::Streaming, Message::BatchDone) => Ok(()), (State::Streaming, Message::BatchDone) => Ok(()),
_ => Err(Error::InvalidInbound), _ => Err(ClientError::InvalidInbound),
} }
} }
pub async fn send_message(&mut self, msg: &Message) -> Result<(), Error> { pub async fn send_message(&mut self, msg: &Message) -> Result<(), ClientError> {
self.assert_agency_is_ours()?; self.assert_agency_is_ours()?;
self.assert_outbound_state(msg)?; self.assert_outbound_state(msg)?;
self.1.send_msg_chunks(msg).await.map_err(Error::Plexer)?; self.1
.send_msg_chunks(msg)
.await
.map_err(ClientError::Plexer)?;
Ok(()) Ok(())
} }
pub async fn recv_message(&mut self) -> Result<Message, Error> { pub async fn recv_message(&mut self) -> Result<Message, ClientError> {
self.assert_agency_is_theirs()?; self.assert_agency_is_theirs()?;
let msg = self.1.recv_full_msg().await.map_err(Error::Plexer)?; let msg = self.1.recv_full_msg().await.map_err(ClientError::Plexer)?;
self.assert_inbound_state(&msg)?; self.assert_inbound_state(&msg)?;
Ok(msg) Ok(msg)
} }
pub async fn send_request_range(&mut self, range: (Point, Point)) -> Result<(), Error> { pub async fn send_request_range(&mut self, range: (Point, Point)) -> Result<(), ClientError> {
let msg = Message::RequestRange { range }; let msg = Message::RequestRange { range };
self.send_message(&msg).await?; self.send_message(&msg).await?;
self.0 = State::Busy; self.0 = State::Busy;
@ -132,7 +135,7 @@ impl Client {
Ok(()) Ok(())
} }
pub async fn recv_while_busy(&mut self) -> Result<HasBlocks, Error> { pub async fn recv_while_busy(&mut self) -> Result<HasBlocks, ClientError> {
match self.recv_message().await? { match self.recv_message().await? {
Message::StartBatch => { Message::StartBatch => {
info!("batch start"); info!("batch start");
@ -144,7 +147,7 @@ impl Client {
self.0 = State::Idle; self.0 = State::Idle;
Ok(None) Ok(None)
} }
_ => Err(Error::InvalidInbound), _ => Err(ClientError::InvalidInbound),
} }
} }
@ -154,7 +157,7 @@ impl Client {
/// ///
/// * `range` - A tuple of two `Point` instances representing the start and /// * `range` - A tuple of two `Point` instances representing the start and
/// end of the requested block range. /// end of the requested block range.
pub async fn request_range(&mut self, range: Range) -> Result<HasBlocks, Error> { pub async fn request_range(&mut self, range: Range) -> Result<HasBlocks, ClientError> {
self.send_request_range(range).await?; self.send_request_range(range).await?;
debug!("range requested"); debug!("range requested");
self.recv_while_busy().await self.recv_while_busy().await
@ -164,7 +167,7 @@ impl Client {
/// ///
/// Returns a block's body if a block is received, or `None` if the /// Returns a block's body if a block is received, or `None` if the
/// streaming has ended. /// streaming has ended.
pub async fn recv_while_streaming(&mut self) -> Result<Option<Body>, Error> { pub async fn recv_while_streaming(&mut self) -> Result<Option<Body>, ClientError> {
debug!("waiting for stream"); debug!("waiting for stream");
match self.recv_message().await? { match self.recv_message().await? {
@ -173,7 +176,7 @@ impl Client {
self.0 = State::Idle; self.0 = State::Idle;
Ok(None) Ok(None)
} }
_ => Err(Error::InvalidInbound), _ => Err(ClientError::InvalidInbound),
} }
} }
@ -185,20 +188,20 @@ impl Client {
/// ///
/// Returns the block's body if the block is found, or an `Error` if the /// Returns the block's body if the block is found, or an `Error` if the
/// block is not found or an invalid message is received. /// block is not found or an invalid message is received.
pub async fn fetch_single(&mut self, point: Point) -> Result<Body, Error> { pub async fn fetch_single(&mut self, point: Point) -> Result<Body, ClientError> {
self.request_range((point.clone(), point)) self.request_range((point.clone(), point))
.await? .await?
.ok_or(Error::NoBlocks)?; .ok_or(ClientError::NoBlocks)?;
let body = self let body = self
.recv_while_streaming() .recv_while_streaming()
.await? .await?
.ok_or(Error::InvalidInbound)?; .ok_or(ClientError::InvalidInbound)?;
debug!("body received"); debug!("body received");
match self.recv_while_streaming().await? { match self.recv_while_streaming().await? {
Some(_) => Err(Error::InvalidInbound), Some(_) => Err(ClientError::InvalidInbound),
None => Ok(body), None => Ok(body),
} }
} }
@ -212,8 +215,10 @@ impl Client {
/// ///
/// Returns a vector of block bodies for the requested range, or an `Error` /// Returns a vector of block bodies for the requested range, or an `Error`
/// if the range is not found. /// if the range is not found.
pub async fn fetch_range(&mut self, range: Range) -> Result<Vec<Body>, Error> { pub async fn fetch_range(&mut self, range: Range) -> Result<Vec<Body>, ClientError> {
self.request_range(range).await?.ok_or(Error::NoBlocks)?; self.request_range(range)
.await?
.ok_or(ClientError::NoBlocks)?;
let mut all = vec![]; let mut all = vec![];
@ -230,7 +235,7 @@ impl Client {
/// ///
/// Returns `Ok(())` if the message is sent successfully, or an `Error` if /// Returns `Ok(())` if the message is sent successfully, or an `Error` if
/// the agency is not ours. /// the agency is not ours.
pub async fn send_done(&mut self) -> Result<(), Error> { pub async fn send_done(&mut self) -> Result<(), ClientError> {
let msg = Message::ClientDone; let msg = Message::ClientDone;
self.send_message(&msg).await?; self.send_message(&msg).await?;
self.0 = State::Done; self.0 = State::Done;

View file

@ -5,7 +5,7 @@ use crate::multiplexer;
use super::{Body, Message, Range, State}; use super::{Body, Message, Range, State};
#[derive(Error, Debug)] #[derive(Error, Debug)]
pub enum Error { pub enum ServerError {
#[error("attempted to receive message while agency is ours")] #[error("attempted to receive message while agency is ours")]
AgencyIsOurs, AgencyIsOurs,
@ -62,57 +62,60 @@ impl Server {
} }
} }
fn assert_agency_is_ours(&self) -> Result<(), Error> { fn assert_agency_is_ours(&self) -> Result<(), ServerError> {
if !self.has_agency() { if !self.has_agency() {
Err(Error::AgencyIsTheirs) Err(ServerError::AgencyIsTheirs)
} else { } else {
Ok(()) Ok(())
} }
} }
fn assert_agency_is_theirs(&self) -> Result<(), Error> { fn assert_agency_is_theirs(&self) -> Result<(), ServerError> {
if self.has_agency() { if self.has_agency() {
Err(Error::AgencyIsOurs) Err(ServerError::AgencyIsOurs)
} else { } else {
Ok(()) Ok(())
} }
} }
fn assert_outbound_state(&self, msg: &Message) -> Result<(), Error> { fn assert_outbound_state(&self, msg: &Message) -> Result<(), ServerError> {
match (&self.0, msg) { match (&self.0, msg) {
(State::Busy, Message::NoBlocks) => Ok(()), (State::Busy, Message::NoBlocks) => Ok(()),
(State::Busy, Message::StartBatch) => Ok(()), (State::Busy, Message::StartBatch) => Ok(()),
(State::Streaming, Message::Block { .. }) => Ok(()), (State::Streaming, Message::Block { .. }) => Ok(()),
(State::Streaming, Message::BatchDone) => Ok(()), (State::Streaming, Message::BatchDone) => Ok(()),
_ => Err(Error::InvalidOutbound), _ => Err(ServerError::InvalidOutbound),
} }
} }
fn assert_inbound_state(&self, msg: &Message) -> Result<(), Error> { fn assert_inbound_state(&self, msg: &Message) -> Result<(), ServerError> {
match (&self.0, msg) { match (&self.0, msg) {
(State::Idle, Message::RequestRange { .. }) => Ok(()), (State::Idle, Message::RequestRange { .. }) => Ok(()),
(State::Idle, Message::ClientDone) => Ok(()), (State::Idle, Message::ClientDone) => Ok(()),
_ => Err(Error::InvalidInbound), _ => Err(ServerError::InvalidInbound),
} }
} }
pub async fn send_message(&mut self, msg: &Message) -> Result<(), Error> { pub async fn send_message(&mut self, msg: &Message) -> Result<(), ServerError> {
self.assert_agency_is_ours()?; self.assert_agency_is_ours()?;
self.assert_outbound_state(msg)?; self.assert_outbound_state(msg)?;
self.1.send_msg_chunks(msg).await.map_err(Error::Plexer)?; self.1
.send_msg_chunks(msg)
.await
.map_err(ServerError::Plexer)?;
Ok(()) Ok(())
} }
pub async fn recv_message(&mut self) -> Result<Message, Error> { pub async fn recv_message(&mut self) -> Result<Message, ServerError> {
self.assert_agency_is_theirs()?; self.assert_agency_is_theirs()?;
let msg = self.1.recv_full_msg().await.map_err(Error::Plexer)?; let msg = self.1.recv_full_msg().await.map_err(ServerError::Plexer)?;
self.assert_inbound_state(&msg)?; self.assert_inbound_state(&msg)?;
Ok(msg) Ok(msg)
} }
pub async fn send_start_batch(&mut self) -> Result<(), Error> { pub async fn send_start_batch(&mut self) -> Result<(), ServerError> {
let msg = Message::StartBatch; let msg = Message::StartBatch;
self.send_message(&msg).await?; self.send_message(&msg).await?;
self.0 = State::Streaming; self.0 = State::Streaming;
@ -120,7 +123,7 @@ impl Server {
Ok(()) Ok(())
} }
pub async fn send_no_blocks(&mut self) -> Result<(), Error> { pub async fn send_no_blocks(&mut self) -> Result<(), ServerError> {
let msg = Message::NoBlocks; let msg = Message::NoBlocks;
self.send_message(&msg).await?; self.send_message(&msg).await?;
self.0 = State::Idle; self.0 = State::Idle;
@ -128,14 +131,14 @@ impl Server {
Ok(()) Ok(())
} }
pub async fn send_block(&mut self, body: Body) -> Result<(), Error> { pub async fn send_block(&mut self, body: Body) -> Result<(), ServerError> {
let msg = Message::Block { body }; let msg = Message::Block { body };
self.send_message(&msg).await?; self.send_message(&msg).await?;
Ok(()) Ok(())
} }
pub async fn send_batch_done(&mut self) -> Result<(), Error> { pub async fn send_batch_done(&mut self) -> Result<(), ServerError> {
let msg = Message::BatchDone; let msg = Message::BatchDone;
self.send_message(&msg).await?; self.send_message(&msg).await?;
self.0 = State::Idle; self.0 = State::Idle;
@ -150,7 +153,7 @@ impl Server {
/// progess the server state to `Busy`. If the message is a `ClientDone`, /// progess the server state to `Busy`. If the message is a `ClientDone`,
/// return None and progress the server state to `Done`. For any other /// return None and progress the server state to `Done`. For any other
/// incoming message type return an `Error`. /// incoming message type return an `Error`.
pub async fn recv_while_idle(&mut self) -> Result<Option<BlockRequest>, Error> { pub async fn recv_while_idle(&mut self) -> Result<Option<BlockRequest>, ServerError> {
match self.recv_message().await? { match self.recv_message().await? {
Message::RequestRange { range } => { Message::RequestRange { range } => {
self.0 = State::Busy; self.0 = State::Busy;
@ -162,7 +165,7 @@ impl Server {
Ok(None) Ok(None)
} }
_ => Err(Error::InvalidInbound), _ => Err(ServerError::InvalidInbound),
} }
} }
@ -174,7 +177,7 @@ impl Server {
/// ///
/// * `blocks` - Ordered list of block bodies corresponding to the client's /// * `blocks` - Ordered list of block bodies corresponding to the client's
/// requested range. /// requested range.
pub async fn send_block_range(&mut self, blocks: Vec<Body>) -> Result<(), Error> { pub async fn send_block_range(&mut self, blocks: Vec<Body>) -> Result<(), ServerError> {
if blocks.is_empty() { if blocks.is_empty() {
self.send_no_blocks().await self.send_no_blocks().await
} else { } else {

View file

@ -9,7 +9,7 @@ use crate::multiplexer;
use super::{BlockContent, HeaderContent, IntersectResponse, Message, State, Tip}; use super::{BlockContent, HeaderContent, IntersectResponse, Message, State, Tip};
#[derive(Error, Debug)] #[derive(Error, Debug)]
pub enum Error { pub enum ClientError {
#[error("attempted to receive message while agency is ours")] #[error("attempted to receive message while agency is ours")]
AgencyIsOurs, AgencyIsOurs,
@ -79,32 +79,32 @@ where
} }
} }
fn assert_agency_is_ours(&self) -> Result<(), Error> { fn assert_agency_is_ours(&self) -> Result<(), ClientError> {
if !self.has_agency() { if !self.has_agency() {
Err(Error::AgencyIsTheirs) Err(ClientError::AgencyIsTheirs)
} else { } else {
Ok(()) Ok(())
} }
} }
fn assert_agency_is_theirs(&self) -> Result<(), Error> { fn assert_agency_is_theirs(&self) -> Result<(), ClientError> {
if self.has_agency() { if self.has_agency() {
Err(Error::AgencyIsOurs) Err(ClientError::AgencyIsOurs)
} else { } else {
Ok(()) Ok(())
} }
} }
fn assert_outbound_state(&self, msg: &Message<O>) -> Result<(), Error> { fn assert_outbound_state(&self, msg: &Message<O>) -> Result<(), ClientError> {
match (&self.0, msg) { match (&self.0, msg) {
(State::Idle, Message::RequestNext) => Ok(()), (State::Idle, Message::RequestNext) => Ok(()),
(State::Idle, Message::FindIntersect(_)) => Ok(()), (State::Idle, Message::FindIntersect(_)) => Ok(()),
(State::Idle, Message::Done) => Ok(()), (State::Idle, Message::Done) => Ok(()),
_ => Err(Error::InvalidOutbound), _ => Err(ClientError::InvalidOutbound),
} }
} }
fn assert_inbound_state(&self, msg: &Message<O>) -> Result<(), Error> { fn assert_inbound_state(&self, msg: &Message<O>) -> Result<(), ClientError> {
match (&self.0, msg) { match (&self.0, msg) {
(State::CanAwait, Message::RollForward(_, _)) => Ok(()), (State::CanAwait, Message::RollForward(_, _)) => Ok(()),
(State::CanAwait, Message::RollBackward(_, _)) => Ok(()), (State::CanAwait, Message::RollBackward(_, _)) => Ok(()),
@ -113,7 +113,7 @@ where
(State::MustReply, Message::RollBackward(_, _)) => Ok(()), (State::MustReply, Message::RollBackward(_, _)) => Ok(()),
(State::Intersect, Message::IntersectFound(_, _)) => Ok(()), (State::Intersect, Message::IntersectFound(_, _)) => Ok(()),
(State::Intersect, Message::IntersectNotFound(_)) => Ok(()), (State::Intersect, Message::IntersectNotFound(_)) => Ok(()),
_ => Err(Error::InvalidInbound), _ => Err(ClientError::InvalidInbound),
} }
} }
@ -127,11 +127,14 @@ where
/// ///
/// Returns an error if the agency is not ours or if the outbound state is /// Returns an error if the agency is not ours or if the outbound state is
/// invalid. /// invalid.
pub async fn send_message(&mut self, msg: &Message<O>) -> Result<(), Error> { pub async fn send_message(&mut self, msg: &Message<O>) -> Result<(), ClientError> {
self.assert_agency_is_ours()?; self.assert_agency_is_ours()?;
self.assert_outbound_state(msg)?; self.assert_outbound_state(msg)?;
self.1.send_msg_chunks(msg).await.map_err(Error::Plexer)?; self.1
.send_msg_chunks(msg)
.await
.map_err(ClientError::Plexer)?;
Ok(()) Ok(())
} }
@ -142,10 +145,10 @@ where
/// ///
/// Returns an error if the agency is not theirs or if the inbound state is /// Returns an error if the agency is not theirs or if the inbound state is
/// invalid. /// invalid.
pub async fn recv_message(&mut self) -> Result<Message<O>, Error> { pub async fn recv_message(&mut self) -> Result<Message<O>, ClientError> {
self.assert_agency_is_theirs()?; self.assert_agency_is_theirs()?;
let msg = self.1.recv_full_msg().await.map_err(Error::Plexer)?; let msg = self.1.recv_full_msg().await.map_err(ClientError::Plexer)?;
self.assert_inbound_state(&msg)?; self.assert_inbound_state(&msg)?;
@ -163,7 +166,7 @@ where
/// ///
/// Returns an error if the message cannot be sent or if it's not valid for /// Returns an error if the message cannot be sent or if it's not valid for
/// the current state of the client. /// the current state of the client.
pub async fn send_find_intersect(&mut self, points: Vec<Point>) -> Result<(), Error> { pub async fn send_find_intersect(&mut self, points: Vec<Point>) -> Result<(), ClientError> {
let msg = Message::FindIntersect(points); let msg = Message::FindIntersect(points);
self.send_message(&msg).await?; self.send_message(&msg).await?;
self.0 = State::Intersect; self.0 = State::Intersect;
@ -178,7 +181,7 @@ where
/// # Errors /// # Errors
/// ///
/// Returns an error if the inbound message is invalid. /// Returns an error if the inbound message is invalid.
pub async fn recv_intersect_response(&mut self) -> Result<IntersectResponse, Error> { pub async fn recv_intersect_response(&mut self) -> Result<IntersectResponse, ClientError> {
debug!("waiting for intersect response"); debug!("waiting for intersect response");
match self.recv_message().await? { match self.recv_message().await? {
@ -190,7 +193,7 @@ where
self.0 = State::Idle; self.0 = State::Idle;
Ok((None, tip)) Ok((None, tip))
} }
_ => Err(Error::InvalidInbound), _ => Err(ClientError::InvalidInbound),
} }
} }
@ -205,12 +208,15 @@ where
/// ///
/// Returns an error if the intersection point cannot be found or if there /// Returns an error if the intersection point cannot be found or if there
/// is a communication error. /// is a communication error.
pub async fn find_intersect(&mut self, points: Vec<Point>) -> Result<IntersectResponse, Error> { pub async fn find_intersect(
&mut self,
points: Vec<Point>,
) -> Result<IntersectResponse, ClientError> {
self.send_find_intersect(points).await?; self.send_find_intersect(points).await?;
self.recv_intersect_response().await self.recv_intersect_response().await
} }
pub async fn send_request_next(&mut self) -> Result<(), Error> { pub async fn send_request_next(&mut self) -> Result<(), ClientError> {
let msg = Message::RequestNext; let msg = Message::RequestNext;
self.send_message(&msg).await?; self.send_message(&msg).await?;
self.0 = State::CanAwait; self.0 = State::CanAwait;
@ -223,7 +229,7 @@ where
/// # Errors /// # Errors
/// ///
/// Returns an error if the inbound message is invalid. /// Returns an error if the inbound message is invalid.
pub async fn recv_while_can_await(&mut self) -> Result<NextResponse<O>, Error> { pub async fn recv_while_can_await(&mut self) -> Result<NextResponse<O>, ClientError> {
match self.recv_message().await? { match self.recv_message().await? {
Message::AwaitReply => { Message::AwaitReply => {
self.0 = State::MustReply; self.0 = State::MustReply;
@ -237,7 +243,7 @@ where
self.0 = State::Idle; self.0 = State::Idle;
Ok(NextResponse::RollBackward(a, b)) Ok(NextResponse::RollBackward(a, b))
} }
_ => Err(Error::InvalidInbound), _ => Err(ClientError::InvalidInbound),
} }
} }
@ -246,7 +252,7 @@ where
/// # Errors /// # Errors
/// ///
/// Returns an error if the inbound message is invalid. /// Returns an error if the inbound message is invalid.
pub async fn recv_while_must_reply(&mut self) -> Result<NextResponse<O>, Error> { pub async fn recv_while_must_reply(&mut self) -> Result<NextResponse<O>, ClientError> {
match self.recv_message().await? { match self.recv_message().await? {
Message::RollForward(a, b) => { Message::RollForward(a, b) => {
self.0 = State::Idle; self.0 = State::Idle;
@ -256,7 +262,7 @@ where
self.0 = State::Idle; self.0 = State::Idle;
Ok(NextResponse::RollBackward(a, b)) Ok(NextResponse::RollBackward(a, b))
} }
_ => Err(Error::InvalidInbound), _ => Err(ClientError::InvalidInbound),
} }
} }
@ -266,7 +272,7 @@ where
/// ///
/// Returns an error if the message cannot be sent or if the state is not /// Returns an error if the message cannot be sent or if the state is not
/// idle. /// idle.
pub async fn request_next(&mut self) -> Result<NextResponse<O>, Error> { pub async fn request_next(&mut self) -> Result<NextResponse<O>, ClientError> {
debug!("requesting next block"); debug!("requesting next block");
self.send_request_next().await?; self.send_request_next().await?;
@ -280,12 +286,12 @@ where
/// ///
/// Returns an error if the intersection point cannot be found or if there /// Returns an error if the intersection point cannot be found or if there
/// is a communication error. /// is a communication error.
pub async fn intersect_origin(&mut self) -> Result<Point, Error> { pub async fn intersect_origin(&mut self) -> Result<Point, ClientError> {
debug!("intersecting origin"); debug!("intersecting origin");
let (point, _) = self.find_intersect(vec![Point::Origin]).await?; let (point, _) = self.find_intersect(vec![Point::Origin]).await?;
point.ok_or(Error::IntersectionNotFound) point.ok_or(ClientError::IntersectionNotFound)
} }
/// Attempts to intersect the chain at the latest known tip /// Attempts to intersect the chain at the latest known tip
@ -294,17 +300,17 @@ where
/// ///
/// Returns an error if the intersection point cannot be found or if there /// Returns an error if the intersection point cannot be found or if there
/// is a communication error. /// is a communication error.
pub async fn intersect_tip(&mut self) -> Result<Point, Error> { pub async fn intersect_tip(&mut self) -> Result<Point, ClientError> {
let (_, Tip(point, _)) = self.find_intersect(vec![Point::Origin]).await?; let (_, Tip(point, _)) = self.find_intersect(vec![Point::Origin]).await?;
debug!(?point, "found tip value"); debug!(?point, "found tip value");
let (point, _) = self.find_intersect(vec![point]).await?; let (point, _) = self.find_intersect(vec![point]).await?;
point.ok_or(Error::IntersectionNotFound) point.ok_or(ClientError::IntersectionNotFound)
} }
pub async fn send_done(&mut self) -> Result<(), Error> { pub async fn send_done(&mut self) -> Result<(), ClientError> {
let msg = Message::Done; let msg = Message::Done;
self.send_message(&msg).await?; self.send_message(&msg).await?;
self.0 = State::Done; self.0 = State::Done;

View file

@ -9,7 +9,7 @@ use crate::multiplexer;
use super::{BlockContent, HeaderContent, Message, State, Tip}; use super::{BlockContent, HeaderContent, Message, State, Tip};
#[derive(Error, Debug)] #[derive(Error, Debug)]
pub enum Error { pub enum ServerError {
#[error("attempted to receive message while agency is ours")] #[error("attempted to receive message while agency is ours")]
AgencyIsOurs, AgencyIsOurs,
@ -75,23 +75,23 @@ where
} }
} }
fn assert_agency_is_ours(&self) -> Result<(), Error> { fn assert_agency_is_ours(&self) -> Result<(), ServerError> {
if !self.has_agency() { if !self.has_agency() {
Err(Error::AgencyIsTheirs) Err(ServerError::AgencyIsTheirs)
} else { } else {
Ok(()) Ok(())
} }
} }
fn assert_agency_is_theirs(&self) -> Result<(), Error> { fn assert_agency_is_theirs(&self) -> Result<(), ServerError> {
if self.has_agency() { if self.has_agency() {
Err(Error::AgencyIsOurs) Err(ServerError::AgencyIsOurs)
} else { } else {
Ok(()) Ok(())
} }
} }
fn assert_outbound_state(&self, msg: &Message<O>) -> Result<(), Error> { fn assert_outbound_state(&self, msg: &Message<O>) -> Result<(), ServerError> {
match (&self.0, msg) { match (&self.0, msg) {
(State::CanAwait, Message::RollForward(_, _)) => Ok(()), (State::CanAwait, Message::RollForward(_, _)) => Ok(()),
(State::CanAwait, Message::RollBackward(_, _)) => Ok(()), (State::CanAwait, Message::RollBackward(_, _)) => Ok(()),
@ -100,16 +100,16 @@ where
(State::MustReply, Message::RollBackward(_, _)) => Ok(()), (State::MustReply, Message::RollBackward(_, _)) => Ok(()),
(State::Intersect, Message::IntersectFound(_, _)) => Ok(()), (State::Intersect, Message::IntersectFound(_, _)) => Ok(()),
(State::Intersect, Message::IntersectNotFound(_)) => Ok(()), (State::Intersect, Message::IntersectNotFound(_)) => Ok(()),
_ => Err(Error::InvalidOutbound), _ => Err(ServerError::InvalidOutbound),
} }
} }
fn assert_inbound_state(&self, msg: &Message<O>) -> Result<(), Error> { fn assert_inbound_state(&self, msg: &Message<O>) -> Result<(), ServerError> {
match (&self.0, msg) { match (&self.0, msg) {
(State::Idle, Message::RequestNext) => Ok(()), (State::Idle, Message::RequestNext) => Ok(()),
(State::Idle, Message::FindIntersect(_)) => Ok(()), (State::Idle, Message::FindIntersect(_)) => Ok(()),
(State::Idle, Message::Done) => Ok(()), (State::Idle, Message::Done) => Ok(()),
_ => Err(Error::InvalidInbound), _ => Err(ServerError::InvalidInbound),
} }
} }
@ -123,11 +123,14 @@ where
/// ///
/// Returns an error if the agency is not ours or if the outbound state is /// Returns an error if the agency is not ours or if the outbound state is
/// invalid. /// invalid.
pub async fn send_message(&mut self, msg: &Message<O>) -> Result<(), Error> { pub async fn send_message(&mut self, msg: &Message<O>) -> Result<(), ServerError> {
self.assert_agency_is_ours()?; self.assert_agency_is_ours()?;
self.assert_outbound_state(msg)?; self.assert_outbound_state(msg)?;
self.1.send_msg_chunks(msg).await.map_err(Error::Plexer)?; self.1
.send_msg_chunks(msg)
.await
.map_err(ServerError::Plexer)?;
Ok(()) Ok(())
} }
@ -138,10 +141,10 @@ where
/// ///
/// Returns an error if the agency is not theirs or if the inbound state is /// Returns an error if the agency is not theirs or if the inbound state is
/// invalid. /// invalid.
async fn recv_message(&mut self) -> Result<Message<O>, Error> { async fn recv_message(&mut self) -> Result<Message<O>, ServerError> {
self.assert_agency_is_theirs()?; self.assert_agency_is_theirs()?;
let msg = self.1.recv_full_msg().await.map_err(Error::Plexer)?; let msg = self.1.recv_full_msg().await.map_err(ServerError::Plexer)?;
self.assert_inbound_state(&msg)?; self.assert_inbound_state(&msg)?;
@ -154,7 +157,7 @@ where
/// ///
/// Returns an error if the agency is not theirs or if the inbound message /// Returns an error if the agency is not theirs or if the inbound message
/// is invalid for Idle protocol state. /// is invalid for Idle protocol state.
pub async fn recv_while_idle(&mut self) -> Result<Option<ClientRequest>, Error> { pub async fn recv_while_idle(&mut self) -> Result<Option<ClientRequest>, ServerError> {
match self.recv_message().await? { match self.recv_message().await? {
Message::FindIntersect(points) => { Message::FindIntersect(points) => {
self.0 = State::Intersect; self.0 = State::Intersect;
@ -169,7 +172,7 @@ where
Ok(None) Ok(None)
} }
_ => Err(Error::InvalidInbound), _ => Err(ServerError::InvalidInbound),
} }
} }
@ -183,7 +186,7 @@ where
/// ///
/// Returns an error if the message cannot be sent or if it's not valid for /// Returns an error if the message cannot be sent or if it's not valid for
/// the current state of the server. /// the current state of the server.
pub async fn send_intersect_not_found(&mut self, tip: Tip) -> Result<(), Error> { pub async fn send_intersect_not_found(&mut self, tip: Tip) -> Result<(), ServerError> {
debug!("send intersect not found"); debug!("send intersect not found");
let msg = Message::IntersectNotFound(tip); let msg = Message::IntersectNotFound(tip);
@ -205,7 +208,11 @@ where
/// ///
/// Returns an error if the message cannot be sent or if it's not valid for /// Returns an error if the message cannot be sent or if it's not valid for
/// the current state of the server. /// the current state of the server.
pub async fn send_intersect_found(&mut self, point: Point, tip: Tip) -> Result<(), Error> { pub async fn send_intersect_found(
&mut self,
point: Point,
tip: Tip,
) -> Result<(), ServerError> {
debug!("send intersect found ({point:?}"); debug!("send intersect found ({point:?}");
let msg = Message::IntersectFound(point, tip); let msg = Message::IntersectFound(point, tip);
@ -227,7 +234,7 @@ where
/// ///
/// Returns an error if the message cannot be sent or if it's not valid for /// Returns an error if the message cannot be sent or if it's not valid for
/// the current state of the server. /// the current state of the server.
pub async fn send_roll_forward(&mut self, content: O, tip: Tip) -> Result<(), Error> { pub async fn send_roll_forward(&mut self, content: O, tip: Tip) -> Result<(), ServerError> {
debug!("send roll forward"); debug!("send roll forward");
let msg = Message::RollForward(content, tip); let msg = Message::RollForward(content, tip);
@ -248,7 +255,7 @@ where
/// ///
/// Returns an error if the message cannot be sent or if it's not valid for /// Returns an error if the message cannot be sent or if it's not valid for
/// the current state of the server. /// the current state of the server.
pub async fn send_roll_backward(&mut self, point: Point, tip: Tip) -> Result<(), Error> { pub async fn send_roll_backward(&mut self, point: Point, tip: Tip) -> Result<(), ServerError> {
debug!("send roll backward {point:?}"); debug!("send roll backward {point:?}");
let msg = Message::RollBackward(point, tip); let msg = Message::RollBackward(point, tip);
@ -269,7 +276,7 @@ where
/// ///
/// Returns an error if the message cannot be sent or if it's not valid for /// Returns an error if the message cannot be sent or if it's not valid for
/// the current state of the server. /// the current state of the server.
pub async fn send_await_reply(&mut self) -> Result<(), Error> { pub async fn send_await_reply(&mut self) -> Result<(), ServerError> {
debug!("send await reply"); debug!("send await reply");
let msg = Message::AwaitReply; let msg = Message::AwaitReply;

View file

@ -501,7 +501,7 @@ mod tests {
let channel = AgentChannel::for_client(0, &ingress, &egress); let channel = AgentChannel::for_client(0, &ingress, &egress);
egress.0.send((0 ^ 0x8000, input)).unwrap(); egress.0.send((0x8000, input)).unwrap();
let mut buf = ChannelBuffer::new(channel); let mut buf = ChannelBuffer::new(channel);
@ -525,7 +525,7 @@ mod tests {
while !input.is_empty() { while !input.is_empty() {
let chunk = Vec::from(input.drain(0..2).as_slice()); let chunk = Vec::from(input.drain(0..2).as_slice());
egress.0.send((0 ^ 0x8000, chunk)).unwrap(); egress.0.send((0x8000, chunk)).unwrap();
} }
let mut buf = ChannelBuffer::new(channel); let mut buf = ChannelBuffer::new(channel);

View file

@ -9,7 +9,7 @@ async fn setup_passive_muxer<const P: u16>() -> Plexer {
.await .await
.unwrap(); .unwrap();
println!("listening for connections on port {}", P); println!("listening for connections on port {P}");
let (bearer, _) = Bearer::accept_tcp(&server).await.unwrap(); let (bearer, _) = Bearer::accept_tcp(&server).await.unwrap();

View file

@ -30,7 +30,7 @@ pub async fn chainsync_history_happy_path() {
.await .await
.unwrap(); .unwrap();
println!("{:?}", point); println!("{point:?}");
assert!(matches!(client.state(), chainsync::State::Idle)); assert!(matches!(client.state(), chainsync::State::Idle));
@ -127,7 +127,7 @@ pub async fn blockfetch_happy_path() {
println!("streaming..."); println!("streaming...");
assert!(matches!(range_ok, Ok(_))); assert!(range_ok.is_ok());
for _ in 0..1 { for _ in 0..1 {
let next = client.recv_while_streaming().await.unwrap(); let next = client.recv_while_streaming().await.unwrap();
@ -142,7 +142,7 @@ pub async fn blockfetch_happy_path() {
let next = client.recv_while_streaming().await.unwrap(); let next = client.recv_while_streaming().await.unwrap();
assert!(matches!(next, None)); assert!(next.is_none());
client.send_done().await.unwrap(); client.send_done().await.unwrap();

View file

@ -88,7 +88,7 @@ mod tests {
#[test] #[test]
fn test_datums_serialize_as_expected() { fn test_datums_serialize_as_expected() {
let test_blocks = vec![( let test_blocks = [(
include_str!("../../../test_data/alonzo9.block"), include_str!("../../../test_data/alonzo9.block"),
include_str!("../../../test_data/alonzo9.datums"), include_str!("../../../test_data/alonzo9.datums"),
)]; )];
@ -118,7 +118,7 @@ mod tests {
#[test] #[test]
fn test_native_scripts_serialize_as_expected() { fn test_native_scripts_serialize_as_expected() {
let test_blocks = vec![( let test_blocks = [(
include_str!("../../../test_data/alonzo9.block"), include_str!("../../../test_data/alonzo9.block"),
include_str!("../../../test_data/alonzo9.native"), include_str!("../../../test_data/alonzo9.native"),
)]; )];

View file

@ -1639,7 +1639,7 @@ mod tests {
#[test] #[test]
fn header_isomorphic_decoding_encoding() { fn header_isomorphic_decoding_encoding() {
let test_headers = vec![ let test_headers = [
// peculiar alonzo header used as origin for a vasil devnet // peculiar alonzo header used as origin for a vasil devnet
include_str!("../../../test_data/alonzo26.header"), include_str!("../../../test_data/alonzo26.header"),
]; ];

View file

@ -745,7 +745,7 @@ mod tests {
#[test] #[test]
fn block_isomorphic_decoding_encoding() { fn block_isomorphic_decoding_encoding() {
let test_blocks = vec![ let test_blocks = [
include_str!("../../../test_data/babbage1.block"), include_str!("../../../test_data/babbage1.block"),
include_str!("../../../test_data/babbage2.block"), include_str!("../../../test_data/babbage2.block"),
include_str!("../../../test_data/babbage3.block"), include_str!("../../../test_data/babbage3.block"),

View file

@ -829,7 +829,7 @@ mod tests {
fn boundary_block_isomorphic_decoding_encoding() { fn boundary_block_isomorphic_decoding_encoding() {
type BlockWrapper = (u16, EbBlock); type BlockWrapper = (u16, EbBlock);
let test_blocks = vec![include_str!("../../../test_data/genesis.block")]; let test_blocks = [include_str!("../../../test_data/genesis.block")];
for (idx, block_str) in test_blocks.iter().enumerate() { for (idx, block_str) in test_blocks.iter().enumerate() {
println!("decoding test block {}", idx + 1); println!("decoding test block {}", idx + 1);
@ -849,7 +849,7 @@ mod tests {
fn main_block_isomorphic_decoding_encoding() { fn main_block_isomorphic_decoding_encoding() {
type BlockWrapper<'b> = (u16, MintedBlock<'b>); type BlockWrapper<'b> = (u16, MintedBlock<'b>);
let test_blocks = vec![ let test_blocks = [
//include_str!("../../../test_data/genesis.block"), //include_str!("../../../test_data/genesis.block"),
include_str!("../../../test_data/byron1.block"), include_str!("../../../test_data/byron1.block"),
include_str!("../../../test_data/byron2.block"), include_str!("../../../test_data/byron2.block"),
@ -876,7 +876,7 @@ mod tests {
#[test] #[test]
fn header_isomorphic_decoding_encoding() { fn header_isomorphic_decoding_encoding() {
let subjects = vec![include_str!("../../../test_data/byron1.header")]; let subjects = [include_str!("../../../test_data/byron1.header")];
for (idx, str) in subjects.iter().enumerate() { for (idx, str) in subjects.iter().enumerate() {
println!("decoding test header {}", idx + 1); println!("decoding test header {}", idx + 1);

View file

@ -184,7 +184,7 @@ mod tests {
let (_, block_model): BlockWrapper = let (_, block_model): BlockWrapper =
minicbor::decode(&block_bytes[..]).expect("error decoding cbor for file"); minicbor::decode(&block_bytes[..]).expect("error decoding cbor for file");
let valid_hashes = vec![ let valid_hashes = [
"8ae0cd531635579a9b52b954a840782d12235251fb1451e5c699e864c677514a", "8ae0cd531635579a9b52b954a840782d12235251fb1451e5c699e864c677514a",
"bb5bb4e1c09c02aa199c60e9f330102912e3ef977bb73ecfd8f790945c6091d4", "bb5bb4e1c09c02aa199c60e9f330102912e3ef977bb73ecfd8f790945c6091d4",
"8cdd88042ddb6c800714fb1469fb1a1a93152aae3c87a81f2a3016f2ee5c664a", "8cdd88042ddb6c800714fb1469fb1a1a93152aae3c87a81f2a3016f2ee5c664a",
@ -212,7 +212,7 @@ mod tests {
let (_, block_model): BlockWrapper = minicbor::decode(&block_bytes[..]) let (_, block_model): BlockWrapper = minicbor::decode(&block_bytes[..])
.unwrap_or_else(|_| panic!("error decoding cbor for file {block_idx}")); .unwrap_or_else(|_| panic!("error decoding cbor for file {block_idx}"));
let valid_hashes = vec!["3fad302595665b004971a6b76909854a39a0a7ecdbff3692f37b77ae37dbe882"]; let valid_hashes = ["3fad302595665b004971a6b76909854a39a0a7ecdbff3692f37b77ae37dbe882"];
for (tx_idx, tx) in block_model.transaction_bodies.iter().enumerate() { for (tx_idx, tx) in block_model.transaction_bodies.iter().enumerate() {
let original_hash = tx.original_hash(); let original_hash = tx.original_hash();