diff --git a/pallas-blockfetch/examples/client.rs b/pallas-blockfetch/examples/client.rs index 4ccd857..64e3394 100644 --- a/pallas-blockfetch/examples/client.rs +++ b/pallas-blockfetch/examples/client.rs @@ -1,7 +1,8 @@ use net2::TcpStreamExt; +use pallas_machines::primitives::Point; use std::net::TcpStream; -use pallas_blockfetch::{BlockFetchClient, Point}; +use pallas_blockfetch::BlockFetchClient; use pallas_handshake::n2n::{Client, VersionTable}; use pallas_handshake::MAINNET_MAGIC; use pallas_machines::run_agent; diff --git a/pallas-blockfetch/src/lib.rs b/pallas-blockfetch/src/lib.rs index 749fc28..787b59c 100644 --- a/pallas-blockfetch/src/lib.rs +++ b/pallas-blockfetch/src/lib.rs @@ -1,30 +1,5 @@ use log::info; -use pallas_machines::{Agent, CodecError, DecodePayload, EncodePayload, MachineOutput, PayloadDecoder, PayloadEncoder, Transition}; - -#[derive(Clone, Debug)] -pub struct Point(pub u64, pub Vec); - -impl EncodePayload for Point { - fn encode_payload( - &self, - e: &mut PayloadEncoder, - ) -> Result<(), Box> { - e.array(2)?.u64(self.0)?.bytes(&self.1)?; - Ok(()) - } -} - -impl DecodePayload for Point { - fn decode_payload( - d: &mut PayloadDecoder, - ) -> Result> { - d.array()?; - let slot = d.u64()?; - let hash = d.bytes()?; - - Ok(Point(slot, Vec::from(hash))) - } -} +use pallas_machines::{Agent, CodecError, DecodePayload, EncodePayload, MachineOutput, PayloadDecoder, PayloadEncoder, Transition, primitives::Point}; #[derive(Debug, PartialEq, Clone)] pub enum State { diff --git a/pallas-chainsync/examples/blocks.rs b/pallas-chainsync/examples/blocks.rs index bc49478..96e53da 100644 --- a/pallas-chainsync/examples/blocks.rs +++ b/pallas-chainsync/examples/blocks.rs @@ -1,6 +1,7 @@ -use pallas_chainsync::{ClientConsumer, NoopStorage, Point}; +use pallas_chainsync::{ClientConsumer, NoopStorage}; use pallas_handshake::n2c::{Client, VersionTable}; use pallas_handshake::MAINNET_MAGIC; +use pallas_machines::primitives::Point; use pallas_machines::run_agent; use pallas_multiplexer::Multiplexer; use std::os::unix::net::UnixStream; diff --git a/pallas-chainsync/examples/headers.rs b/pallas-chainsync/examples/headers.rs index e977748..fedcda1 100644 --- a/pallas-chainsync/examples/headers.rs +++ b/pallas-chainsync/examples/headers.rs @@ -1,7 +1,8 @@ use net2::TcpStreamExt; +use pallas_machines::primitives::Point; use std::net::TcpStream; -use pallas_chainsync::{ClientConsumer, NoopStorage, Point}; +use pallas_chainsync::{ClientConsumer, NoopStorage}; use pallas_handshake::n2n::{Client, VersionTable}; use pallas_handshake::MAINNET_MAGIC; use pallas_machines::run_agent; diff --git a/pallas-chainsync/src/lib.rs b/pallas-chainsync/src/lib.rs index b27bee9..d085a62 100644 --- a/pallas-chainsync/src/lib.rs +++ b/pallas-chainsync/src/lib.rs @@ -3,39 +3,7 @@ use std::fmt::Debug; use log::{debug, log_enabled, trace}; use minicbor::data::Tag; -use pallas_machines::{ - Agent, CodecError, DecodePayload, EncodePayload, MachineError, MachineOutput, PayloadDecoder, - PayloadEncoder, Transition, -}; - -#[derive(Clone)] -pub struct Point(pub u64, pub Vec); - -impl Debug for Point { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_tuple("Point") - .field(&self.0) - .field(&hex::encode(&self.1)) - .finish() - } -} - -impl EncodePayload for Point { - fn encode_payload(&self, e: &mut PayloadEncoder) -> Result<(), Box> { - e.array(2)?.u64(self.0)?.bytes(&self.1)?; - Ok(()) - } -} - -impl DecodePayload for Point { - fn decode_payload(d: &mut PayloadDecoder) -> Result> { - d.array()?; - let slot = d.u64()?; - let hash = d.bytes()?; - - Ok(Point(slot, Vec::from(hash))) - } -} +use pallas_machines::{Agent, CodecError, DecodePayload, EncodePayload, MachineError, MachineOutput, PayloadDecoder, PayloadEncoder, Transition, primitives::Point}; #[derive(Debug)] pub struct WrappedHeader(u64, Vec); diff --git a/pallas-handshake/src/n2c.rs b/pallas-handshake/src/n2c.rs index 39d17dd..237809b 100644 --- a/pallas-handshake/src/n2c.rs +++ b/pallas-handshake/src/n2c.rs @@ -133,9 +133,9 @@ pub enum Output { #[derive(Debug)] pub struct Client { - state: State, - output: Output, - version_table: VersionTable, + pub state: State, + pub output: Output, + pub version_table: VersionTable, } impl Client { diff --git a/pallas-localstate/examples/chainpoint.rs b/pallas-localstate/examples/chainpoint.rs index 13d3273..b69df0a 100644 --- a/pallas-localstate/examples/chainpoint.rs +++ b/pallas-localstate/examples/chainpoint.rs @@ -1,12 +1,10 @@ use minicbor::data::Cbor; -use pallas_localstate::{OneShotClient, Point, Query}; +use pallas_localstate::{OneShotClient, Query}; use pallas_handshake::n2c::{Client, VersionTable}; use pallas_handshake::{MAINNET_MAGIC}; use pallas_machines::{DecodePayload, EncodePayload, run_agent}; use pallas_multiplexer::Multiplexer; -use std::net::TcpStream; use std::os::unix::net::UnixStream; -use net2::*; #[derive(Debug, Clone)] struct BlockQuery {} diff --git a/pallas-localstate/src/codec.rs b/pallas-localstate/src/codec.rs index 2d37c74..729961b 100644 --- a/pallas-localstate/src/codec.rs +++ b/pallas-localstate/src/codec.rs @@ -1,23 +1,6 @@ use super::*; use pallas_machines::*; -impl EncodePayload for Point { - fn encode_payload(&self, e: &mut PayloadEncoder) -> Result<(), Box> { - e.array(2)?.u64(self.0)?.bytes(&self.1)?; - Ok(()) - } -} - -impl DecodePayload for Point { - fn decode_payload(d: &mut PayloadDecoder) -> Result> { - d.array()?; - let slot = d.u64()?; - let hash = d.bytes()?; - - Ok(Point(slot, Vec::from(hash))) - } -} - impl EncodePayload for AcquireFailure { fn encode_payload(&self, e: &mut PayloadEncoder) -> Result<(), Box> { let code = match self { diff --git a/pallas-localstate/src/lib.rs b/pallas-localstate/src/lib.rs index 1482988..a5a128a 100644 --- a/pallas-localstate/src/lib.rs +++ b/pallas-localstate/src/lib.rs @@ -4,21 +4,7 @@ use std::fmt::Debug; use log::debug; -use pallas_machines::{ - Agent, DecodePayload, EncodePayload, MachineError, MachineOutput, Transition, -}; - -#[derive(Clone)] -pub struct Point(pub u64, pub Vec); - -impl Debug for Point { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_tuple("Point") - .field(&self.0) - .field(&hex::encode(&self.1)) - .finish() - } -} +use pallas_machines::{Agent, DecodePayload, EncodePayload, MachineError, MachineOutput, Transition, primitives::Point}; #[derive(Debug, PartialEq, Clone)] pub enum State { diff --git a/pallas-machines/Cargo.toml b/pallas-machines/Cargo.toml index dd7dacd..cbcde1a 100644 --- a/pallas-machines/Cargo.toml +++ b/pallas-machines/Cargo.toml @@ -14,3 +14,4 @@ authors = [ pallas-multiplexer = { path = "../pallas-multiplexer/" } minicbor = { version="0.11.4", features=["half"] } log = "0.4.14" +hex = "0.4.3" \ No newline at end of file diff --git a/pallas-machines/src/codec.rs b/pallas-machines/src/codec.rs new file mode 100644 index 0000000..4f8f68f --- /dev/null +++ b/pallas-machines/src/codec.rs @@ -0,0 +1,19 @@ +use super::primitives::*; +use super::payloads::*; + +impl EncodePayload for Point { + fn encode_payload(&self, e: &mut PayloadEncoder) -> Result<(), Box> { + e.array(2)?.u64(self.0)?.bytes(&self.1)?; + Ok(()) + } +} + +impl DecodePayload for Point { + fn decode_payload(d: &mut PayloadDecoder) -> Result> { + d.array()?; + let slot = d.u64()?; + let hash = d.bytes()?; + + Ok(Point(slot, Vec::from(hash))) + } +} diff --git a/pallas-machines/src/lib.rs b/pallas-machines/src/lib.rs index c49796d..bce1813 100644 --- a/pallas-machines/src/lib.rs +++ b/pallas-machines/src/lib.rs @@ -1,12 +1,14 @@ -mod payload; +mod payloads; +pub mod primitives; +mod codec; -use log::{debug, trace, warn}; +use log::{debug, trace}; use pallas_multiplexer::{Channel, Payload}; use std::borrow::Borrow; use std::fmt::{Debug, Display}; -use std::sync::mpsc::{Receiver, Sender}; +use std::sync::mpsc::{Sender}; -pub use payload::*; +pub use payloads::*; #[derive(Debug)] pub enum MachineError diff --git a/pallas-machines/src/payload.rs b/pallas-machines/src/payloads.rs similarity index 100% rename from pallas-machines/src/payload.rs rename to pallas-machines/src/payloads.rs diff --git a/pallas-machines/src/primitives.rs b/pallas-machines/src/primitives.rs new file mode 100644 index 0000000..c7d1835 --- /dev/null +++ b/pallas-machines/src/primitives.rs @@ -0,0 +1,14 @@ +use std::fmt::Debug; + +/// A point within a chain +#[derive(Clone)] +pub struct Point(pub u64, pub Vec); + +impl Debug for Point { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.debug_tuple("Point") + .field(&self.0) + .field(&hex::encode(&self.1)) + .finish() + } +}