From: Matt Corallo Date: Fri, 17 Aug 2018 02:30:03 +0000 (-0400) Subject: Add some useful delayed-formatting formatters to macro_logger X-Git-Tag: v0.0.12~349^2~2 X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=commitdiff_plain;h=dc4af28759be51af8d2471074d036ef7d1a9d5ab;p=rust-lightning Add some useful delayed-formatting formatters to macro_logger --- diff --git a/src/util/macro_logger.rs b/src/util/macro_logger.rs index d99157491..fd9a61b39 100644 --- a/src/util/macro_logger.rs +++ b/src/util/macro_logger.rs @@ -1,3 +1,55 @@ +use chain::transaction::OutPoint; + +use bitcoin::util::hash::Sha256dHash; +use secp256k1::key::PublicKey; + +use std; + +pub(crate) struct DebugPubKey<'a>(pub &'a PublicKey); +impl<'a> std::fmt::Display for DebugPubKey<'a> { + fn fmt(&self, f: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> { + for i in self.0.serialize().iter() { + write!(f, "{:02x}", i)?; + } + Ok(()) + } +} +macro_rules! log_pubkey { + ($obj: expr) => { + ::util::macro_logger::DebugPubKey(&$obj) + } +} + +pub(crate) struct DebugBytes<'a>(pub &'a [u8; 32]); +impl<'a> std::fmt::Display for DebugBytes<'a> { + fn fmt(&self, f: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> { + for i in self.0 { + write!(f, "{:02x}", i)?; + } + Ok(()) + } +} +macro_rules! log_bytes { + ($obj: expr) => { + ::util::macro_logger::DebugBytes(&$obj) + } +} + +pub(crate) struct DebugFundingChannelId<'a>(pub &'a Sha256dHash, pub u16); +impl<'a> std::fmt::Display for DebugFundingChannelId<'a> { + fn fmt(&self, f: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> { + for i in OutPoint::new(self.0.clone(), self.1).to_channel_id().iter() { + write!(f, "{:02x}", i)?; + } + Ok(()) + } +} +macro_rules! log_funding_channel_id { + ($funding_txid: expr, $funding_txo: expr) => { + ::util::macro_logger::DebugFundingChannelId(&$funding_txid, $funding_txo) + } +} + macro_rules! log_internal { ($self: ident, $lvl:expr, $($arg:tt)+) => ( &$self.logger.log(&Record::new($lvl, format_args!($($arg)+), module_path!(), file!(), line!()));