Skip to content

Commit

Permalink
Make message body reader fns part of Codec.
Browse files Browse the repository at this point in the history
  • Loading branch information
hdevalence committed Sep 24, 2019
1 parent c2e378f commit d2d1650
Showing 1 changed file with 97 additions and 111 deletions.
208 changes: 97 additions & 111 deletions zebra-network/src/protocol/codec.rs
Original file line number Diff line number Diff line change
Expand Up @@ -315,136 +315,122 @@ impl Decoder for Codec {
}
}

fn try_read_version<R: Read>(mut reader: R, _parsing_version: Version) -> Result<Message, Error> {
Ok(Message::Version {
version: Version(reader.read_u32::<LittleEndian>()?),
services: Services(reader.read_u64::<LittleEndian>()?),
timestamp: Utc.timestamp(reader.read_i64::<LittleEndian>()?, 0),
address_recv: (
Services(reader.read_u64::<LittleEndian>()?),
reader.read_socket_addr()?,
),
address_from: (
Services(reader.read_u64::<LittleEndian>()?),
reader.read_socket_addr()?,
),
nonce: Nonce(reader.read_u64::<LittleEndian>()?),
user_agent: reader.read_string()?,
start_height: BlockHeight(reader.read_u32::<LittleEndian>()?),
relay: match reader.read_u8()? {
0 => false,
1 => true,
_ => bail!("non-bool value supplied in relay field"),
},
})
}
impl Codec {
fn read_version<R: Read>(&self, mut reader: R) -> Result<Message, Error> {
Ok(Message::Version {
version: Version(reader.read_u32::<LittleEndian>()?),
services: Services(reader.read_u64::<LittleEndian>()?),
timestamp: Utc.timestamp(reader.read_i64::<LittleEndian>()?, 0),
address_recv: (
Services(reader.read_u64::<LittleEndian>()?),
reader.read_socket_addr()?,
),
address_from: (
Services(reader.read_u64::<LittleEndian>()?),
reader.read_socket_addr()?,
),
nonce: Nonce(reader.read_u64::<LittleEndian>()?),
user_agent: reader.read_string()?,
start_height: BlockHeight(reader.read_u32::<LittleEndian>()?),
relay: match reader.read_u8()? {
0 => false,
1 => true,
_ => bail!("non-bool value supplied in relay field"),
},
})
}

fn try_read_verack<R: Read>(mut _reader: R, _version: Version) -> Result<Message, Error> {
Ok(Message::Verack)
}
fn read_verack<R: Read>(&self, mut _reader: R) -> Result<Message, Error> {
Ok(Message::Verack)
}

fn try_read_ping<R: Read>(mut reader: R, _version: Version) -> Result<Message, Error> {
Ok(Message::Ping(Nonce(reader.read_u64::<LittleEndian>()?)))
}
fn read_ping<R: Read>(&self, mut reader: R) -> Result<Message, Error> {
Ok(Message::Ping(Nonce(reader.read_u64::<LittleEndian>()?)))
}

fn try_read_pong<R: Read>(mut reader: R, _version: Version) -> Result<Message, Error> {
Ok(Message::Pong(Nonce(reader.read_u64::<LittleEndian>()?)))
}
fn read_pong<R: Read>(&self, mut reader: R) -> Result<Message, Error> {
Ok(Message::Pong(Nonce(reader.read_u64::<LittleEndian>()?)))
}

#[instrument(level = "trace", skip(_reader, _version))]
fn try_read_reject<R: Read>(mut _reader: R, _version: Version) -> Result<Message, Error> {
trace!("reject");
bail!("unimplemented message type")
}
fn read_reject<R: Read>(&self, mut _reader: R) -> Result<Message, Error> {
trace!("reject");
bail!("unimplemented message type")
}

#[instrument(level = "trace", skip(_reader, _version))]
fn try_read_addr<R: Read>(mut _reader: R, _version: Version) -> Result<Message, Error> {
trace!("addr");
bail!("unimplemented message type")
}
fn read_addr<R: Read>(&self, mut _reader: R) -> Result<Message, Error> {
trace!("addr");
bail!("unimplemented message type")
}

#[instrument(level = "trace", skip(_reader, _version))]
fn try_read_getaddr<R: Read>(mut _reader: R, _version: Version) -> Result<Message, Error> {
trace!("getaddr");
bail!("unimplemented message type")
}
fn read_getaddr<R: Read>(&self, mut _reader: R) -> Result<Message, Error> {
trace!("getaddr");
bail!("unimplemented message type")
}

#[instrument(level = "trace", skip(_reader, _version))]
fn try_read_block<R: Read>(mut _reader: R, _version: Version) -> Result<Message, Error> {
trace!("block");
bail!("unimplemented message type")
}
fn read_block<R: Read>(&self, mut _reader: R) -> Result<Message, Error> {
trace!("block");
bail!("unimplemented message type")
}

#[instrument(level = "trace", skip(_reader, _version))]
fn try_read_getblocks<R: Read>(mut _reader: R, _version: Version) -> Result<Message, Error> {
trace!("getblocks");
bail!("unimplemented message type")
}
fn read_getblocks<R: Read>(&self, mut _reader: R) -> Result<Message, Error> {
trace!("getblocks");
bail!("unimplemented message type")
}

#[instrument(level = "trace", skip(_reader, _version))]
fn try_read_headers<R: Read>(mut _reader: R, _version: Version) -> Result<Message, Error> {
trace!("headers");
bail!("unimplemented message type")
}
fn read_headers<R: Read>(&self, mut _reader: R) -> Result<Message, Error> {
trace!("headers");
bail!("unimplemented message type")
}

#[instrument(level = "trace", skip(_reader, _version))]
fn try_read_getheaders<R: Read>(mut _reader: R, _version: Version) -> Result<Message, Error> {
trace!("getheaders");
bail!("unimplemented message type")
}
fn read_getheaders<R: Read>(&self, mut _reader: R) -> Result<Message, Error> {
trace!("getheaders");
bail!("unimplemented message type")
}

#[instrument(level = "trace", skip(_reader, _version))]
fn try_read_inv<R: Read>(mut _reader: R, _version: Version) -> Result<Message, Error> {
trace!("inv");
bail!("unimplemented message type")
}
fn read_inv<R: Read>(&self, mut _reader: R) -> Result<Message, Error> {
trace!("inv");
bail!("unimplemented message type")
}

#[instrument(level = "trace", skip(_reader, _version))]
fn try_read_getdata<R: Read>(mut _reader: R, _version: Version) -> Result<Message, Error> {
trace!("getdata");
bail!("unimplemented message type")
}
fn read_getdata<R: Read>(&self, mut _reader: R) -> Result<Message, Error> {
trace!("getdata");
bail!("unimplemented message type")
}

#[instrument(level = "trace", skip(_reader, _version))]
fn try_read_notfound<R: Read>(mut _reader: R, _version: Version) -> Result<Message, Error> {
trace!("notfound");
bail!("unimplemented message type")
}
fn read_notfound<R: Read>(&self, mut _reader: R) -> Result<Message, Error> {
trace!("notfound");
bail!("unimplemented message type")
}

#[instrument(level = "trace", skip(_reader, _version))]
fn try_read_tx<R: Read>(mut _reader: R, _version: Version) -> Result<Message, Error> {
trace!("tx");
bail!("unimplemented message type")
}
fn read_tx<R: Read>(&self, mut _reader: R) -> Result<Message, Error> {
trace!("tx");
bail!("unimplemented message type")
}

#[instrument(level = "trace", skip(_reader, _version))]
fn try_read_mempool<R: Read>(mut _reader: R, _version: Version) -> Result<Message, Error> {
trace!("mempool");
bail!("unimplemented message type")
}
fn read_mempool<R: Read>(&self, mut _reader: R) -> Result<Message, Error> {
trace!("mempool");
bail!("unimplemented message type")
}

#[instrument(level = "trace", skip(_reader, _version))]
fn try_read_filterload<R: Read>(mut _reader: R, _version: Version) -> Result<Message, Error> {
trace!("filterload");
bail!("unimplemented message type")
}
fn read_filterload<R: Read>(&self, mut _reader: R) -> Result<Message, Error> {
trace!("filterload");
bail!("unimplemented message type")
}

#[instrument(level = "trace", skip(_reader, _version))]
fn try_read_filteradd<R: Read>(mut _reader: R, _version: Version) -> Result<Message, Error> {
trace!("filteradd");
bail!("unimplemented message type")
}
fn read_filteradd<R: Read>(&self, mut _reader: R) -> Result<Message, Error> {
trace!("filteradd");
bail!("unimplemented message type")
}

#[instrument(level = "trace", skip(_reader, _version))]
fn try_read_filterclear<R: Read>(mut _reader: R, _version: Version) -> Result<Message, Error> {
trace!("filterclear");
bail!("unimplemented message type")
}
fn read_filterclear<R: Read>(&self, mut _reader: R) -> Result<Message, Error> {
trace!("filterclear");
bail!("unimplemented message type")
}

#[instrument(level = "trace", skip(_reader, _version))]
fn try_read_merkleblock<R: Read>(mut _reader: R, _version: Version) -> Result<Message, Error> {
trace!("merkleblock");
bail!("unimplemented message type")
fn read_merkleblock<R: Read>(&self, mut _reader: R) -> Result<Message, Error> {
trace!("merkleblock");
bail!("unimplemented message type")
}
}

// XXX replace these interior unit tests with exterior integration tests + proptest
Expand Down

0 comments on commit d2d1650

Please sign in to comment.