X-Git-Url: http://git.bitcoin.ninja/index.cgi?p=ldk-c-bindings;a=blobdiff_plain;f=lightning-c-bindings%2Fsrc%2Flightning%2Futil%2Flogger.rs;h=6a21fcbefcaa84d322fc5d8c2f7171ab4b3916cb;hp=037324543c1d56e6fb25352e7167eb63c049ed4f;hb=4e514def04a4aabea8261173311e6c747d4bd133;hpb=1926a7a71ae0f37ebd6562996769334e0af0cf1b diff --git a/lightning-c-bindings/src/lightning/util/logger.rs b/lightning-c-bindings/src/lightning/util/logger.rs index 0373245..6a21fcb 100644 --- a/lightning-c-bindings/src/lightning/util/logger.rs +++ b/lightning-c-bindings/src/lightning/util/logger.rs @@ -88,6 +88,21 @@ impl Level { pub extern "C" fn Level_clone(orig: &Level) -> Level { orig.clone() } +/// Checks if two Levels contain equal inner contents. +/// This ignores pointers and is_owned flags and looks at the values in fields. +#[no_mangle] +pub extern "C" fn Level_eq(a: &Level, b: &Level) -> bool { + if &a.to_native() == &b.to_native() { true } else { false } +} +/// Checks if two Levels contain equal inner contents. +#[no_mangle] +pub extern "C" fn Level_hash(o: &Level) -> u64 { + // Note that we'd love to use std::collections::hash_map::DefaultHasher but it's not in core + #[allow(deprecated)] + let mut hasher = core::hash::SipHasher::new(); + std::hash::Hash::hash(&o.to_native(), &mut hasher); + std::hash::Hasher::finish(&hasher) +} /// Returns the most verbose logging level. #[must_use] #[no_mangle] @@ -108,6 +123,8 @@ pub struct Logger { /// Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed. pub free: Option, } +unsafe impl Send for Logger {} +unsafe impl Sync for Logger {} use lightning::util::logger::Logger as rustLogger; impl rustLogger for Logger {