syndicate-rs/syndicate/src/lib.rs

84 lines
2.4 KiB
Rust
Raw Permalink Normal View History

#![doc = include_str!("../README.md")]
2022-01-19 13:40:50 +00:00
#![feature(min_specialization)]
#[doc(inline)]
pub use preserves::value;
2021-08-19 19:47:20 +00:00
#[doc(inline)]
pub use preserves;
2021-09-20 13:10:31 +00:00
#[doc(inline)]
pub use preserves_schema;
pub mod actor;
2020-05-11 18:51:04 +00:00
pub mod bag;
pub mod dataflow;
2020-05-11 18:51:04 +00:00
pub mod dataspace;
pub mod during;
pub mod error;
2021-08-14 01:25:31 +00:00
#[doc(hidden)]
pub mod pattern;
pub mod relay;
2021-07-15 07:13:31 +00:00
pub mod rewrite;
pub mod supervise;
2021-08-11 22:03:43 +00:00
pub mod schemas {
2021-08-14 01:25:31 +00:00
//! Auto-generated codecs for [Syndicate protocol
//! schemas](https://git.syndicate-lang.org/syndicate-lang/syndicate-protocols/src/branch/main/schemas).
2021-08-11 22:03:43 +00:00
include!(concat!(env!("OUT_DIR"), "/src/schemas/mod.rs"));
}
2020-05-11 18:51:04 +00:00
pub mod skeleton;
2021-07-15 07:13:31 +00:00
pub mod sturdy;
2022-01-19 13:40:50 +00:00
pub mod trace;
2020-05-11 18:51:04 +00:00
#[doc(inline)]
2021-07-15 07:13:31 +00:00
pub use during::entity;
2022-01-19 13:40:50 +00:00
/// Sets up [`tracing`] logging in a reasonable way.
///
/// Useful at the top of `main` functions.
pub fn convenient_logging() -> actor::ActorResult {
2022-01-19 13:40:50 +00:00
let filter = match std::env::var(tracing_subscriber::filter::EnvFilter::DEFAULT_ENV) {
Err(std::env::VarError::NotPresent) =>
tracing_subscriber::filter::EnvFilter::default()
.add_directive(tracing_subscriber::filter::LevelFilter::INFO.into()),
_ =>
tracing_subscriber::filter::EnvFilter::try_from_default_env()?,
};
let subscriber = tracing_subscriber::fmt()
.with_ansi(true)
.with_thread_ids(true)
.with_max_level(tracing::Level::TRACE)
.with_env_filter(filter)
.with_writer(std::io::stderr)
.finish();
tracing::subscriber::set_global_default(subscriber)
.expect("Could not set tracing global subscriber");
Ok(())
}
/// Retrieve the version of the Syndicate crate.
pub fn syndicate_package_version() -> &'static str {
env!("CARGO_PKG_VERSION")
}
preserves_schema::define_language!(language(): Language<actor::AnyValue> {
syndicate: schemas::Language,
});
#[cfg(test)]
mod protocol_test {
use crate::*;
use preserves::value::{BytesBinarySource, BinarySource, IOValueDomainCodec, ViaCodec, IOValue};
use preserves_schema::Deserialize;
#[test] fn decode_sync() {
2024-02-05 22:40:44 +00:00
let input_str = "[[2 <S #:[0 11]>]]";
let mut src = BytesBinarySource::new(input_str.as_bytes());
let mut r = src.text::<IOValue, _>(ViaCodec::new(IOValueDomainCodec));
let packet: schemas::protocol::Packet<IOValue> = schemas::protocol::Packet::deserialize(&mut r).unwrap();
println!("{:?}", packet);
}
}