Skip to content

Commit

Permalink
protocol: support Message::from_values() failure
Browse files Browse the repository at this point in the history
  • Loading branch information
pavlix committed Jan 26, 2022
1 parent db3ffd5 commit 22d34c0
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 15 deletions.
6 changes: 3 additions & 3 deletions src/lib.rs
Expand Up @@ -22,8 +22,8 @@ use log::debug;
//
type Error = String;

pub trait Message: std::fmt::Debug {
fn from_values(array: Vec<Value>) -> Self;
pub trait Message: std::fmt::Debug + Sized {
fn from_values(array: Vec<Value>) -> Result<Self, Error>;
fn to_values(&self) -> Vec<Value>;
fn info(&self) -> String;

Expand Down Expand Up @@ -78,7 +78,7 @@ pub trait Protocol {
while let Some(chunk) = d.next() {
match chunk {
Ok(values) => {
let message = Self::Message::from_values(values);
let message = Self::Message::from_values(values).unwrap();
let info = message.info();
self.recv(message).unwrap();
debug!("Rx: message {}", info);
Expand Down
12 changes: 6 additions & 6 deletions src/protocols/blockfetch.rs
Expand Up @@ -24,16 +24,16 @@ pub enum Message {
}

impl MessageOps for Message {
fn from_values(array: Vec<Value>) -> Self {
fn from_values(array: Vec<Value>) -> Result<Self, Error> {
let mut values = array.iter();
//debug!("Parsing message: {:?}", values);
let message = match values.next().unwrap() {
let message = match values.next().ok_or("Unexpected end of message.".to_string())? {
//Value::Integer(0) => Message::RequestRange(),
Value::Integer(1) => Message::ClientDone,
Value::Integer(2) => Message::StartBatch,
Value::Integer(3) => Message::NoBlocks,
Value::Integer(4) => {
match values.next().unwrap() {
match values.next().ok_or("Unexpected End of message.".to_string())? {
Value::Bytes(bytes) => {
Message::Block(bytes.to_vec())
}
Expand All @@ -44,9 +44,9 @@ impl MessageOps for Message {
_ => panic!()
};
match values.next() {
Some(Value::Null) => message,
Some(data) => panic!("data={:?}", data),
None => message,
Some(Value::Null) => Ok(message),
Some(data) => Err(format!("data={:?}", data)),
None => Ok(message),
}
}

Expand Down
4 changes: 2 additions & 2 deletions src/protocols/chainsync.rs
Expand Up @@ -40,8 +40,8 @@ pub enum Message {
}

impl MessageOps for Message {
fn from_values(values: Vec<Value>) -> Self {
Message::Array(values)
fn from_values(values: Vec<Value>) -> Result<Self, Error> {
Ok(Message::Array(values))
}

fn to_values(&self) -> Vec<Value> {
Expand Down
4 changes: 2 additions & 2 deletions src/protocols/handshake.rs
Expand Up @@ -53,8 +53,8 @@ pub enum Message {
}

impl MessageOps for Message {
fn from_values(values: Vec<Value>) -> Self {
Message::Array(values)
fn from_values(values: Vec<Value>) -> Result<Self, Error> {
Ok(Message::Array(values))
}

fn to_values(&self) -> Vec<Value> {
Expand Down
4 changes: 2 additions & 2 deletions src/protocols/transaction.rs
Expand Up @@ -31,8 +31,8 @@ pub enum Message {
}

impl MessageOps for Message {
fn from_values(values: Vec<Value>) -> Self {
Message::Array(values)
fn from_values(values: Vec<Value>) -> Result<Self, Error> {
Ok(Message::Array(values))
}

fn to_values(&self) -> Vec<Value> {
Expand Down

0 comments on commit 22d34c0

Please sign in to comment.