1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
//! Tea Project WaSCC Actor Utility Supporting Binary and Sorted Vector Key-Value Pair and Macros //! to Build Nats Message Actor Handler //! //!WaSCC Actors are supposed to be stateless. Global variable and any kind of storage across handler //! calls are not recommended (although technically doable). Host provided key-value pair is one of //! the handy storage shared across handler functions. WaSCC provided Redis provider and a sample //! key-value pair provider. //! //! There are a few reasons I cannot use them: //! //! - Redis is over kill. //! - Existing key-value pair provider use `String`, I prefer to use `Vec<u8>` //! - I need a `Sorted Vec` value type besides the 4 existing types. //! - Writing the code direct call from actor is kind of cumbersome. Need an additional actor utility //! layer in between. //! //! There is one more important reason for this later: To use macro to make Nats message actor handler //! code clean. See README.md for code sample. //! //!The actor handler code will look like this //! ``` //! actor_handlers!{ //! codec::messaging::OP_DELIVER_MESSAGE => handle_nats_message, //! codec::core::OP_HEALTH_REQUEST => health //! } //! actor_messaging_handlers!{ //! ("http", _, "bootstrap", "sync_from_other_actor",..) => sync_from_other_actor, //! ("http", _, "api", "request_active_nodes",..) => request_active_nodes, //! //code snipet... //! } //! ``` //! Please note the "`_`" act as the "`*`" in the Nats subscription wildcard as well as the "`..`" act //! as "`>`" in Nats subject. Think about writing code to handle those `*` and `>` wildcard without the macro. //! So I made this library to scrach on my own itch. It can probably help you as well. //! //! # About the Tea Project //! //! Tea Project (Trusted Execution & Attestation) is a Wasm runtime build on top of RoT(Root of Trust) //! from both trusted hardware environment and blockchain technologies. Developer, Host and Consumer //! do not have to trust any others to not only protecting privacy but also preventing cyber attacks. //! The execution environment under remoted attestation can be verified by blockchain consensys. //! Crypto economy is used as motivation that hosts are willing run trusted computing nodes. This //! platform can be used by CDN providers, IPFS Nodes or existing cloud providers to enhance existing //! infrastructure to be more secure and trustless. //! //! Introduction [blog post](https://medium.com/@pushbar/0-of-n-cover-letter-of-the-trusted-webassembly-runtime-on-ipfs-12a4fd8c4338) //! //! Project [repo](http://github.com/tearust). More and more repo will be exposed soon. //! //! Yet to come //! project site [( not completed yet) http://www.t-rust.com/](http://www.t-rust.com/) //! //! Contact: kevin.zhang.canada_at_gmail_dot_com. //! //! We are just started, all kinds of help are welcome! //! pub extern crate wascc_actor; // pub use wascc_actor::prelude::{ // codec, HandlerResult, // }; #[macro_use] mod macros; pub mod actor_kvp; #[cfg(test)] mod test { #[macro_use] use super::{actor_messaging_handlers}; }