Rust cat binding.
NB: This crate is mostly created for Nodejs's Native Addons(using neon) currently.
extern crate cat_rs as cat;
use cat::logEvent;
use cat::CatClient;
use cat::CatTransaction;
let mut cat = CatClient::new("test");
cat.init()?
let mut tr = CatTransaction::new("foo", "bar")
tr.log("test", "it", "0", "");
tr.complete();
Ok(())
- cat transaction exported to nodejs.
cat.rs:
use cat_rs::{self, CatTransaction};
use neon::prelude::*;
declare_types! {
pub class JsCatTransaction for CatTransaction {
init(mut ctx) {
let _type = ctx.argument::<JsString>(0)?.value();
let _name = ctx.argument::<JsString>(1)?.value();
let trans = CatTransaction::new(_type, _name);
Ok(trans)
}
method complete(mut ctx) {
let mut this = ctx.this();
let guard = ctx.lock();
{
let mut trans = this.borrow_mut(&guard);
trans.complete();
}
Ok(ctx.undefined().upcast())
}
method log(mut ctx) {
let _type = ctx.argument::<JsString>(0)?.value();
let _name = ctx.argument::<JsString>(0)?.value();
let _stat = ctx.argument::<JsString>(0)?.value();
let _data = ctx.argument::<JsString>(0)?.value();
{
let mut this = ctx.this();
let guard = ctx.lock();
let mut trans = this.borrow_mut(&guard);
trans.log(_type, _name, _stat, _data);
}
Ok(ctx.undefined().upcast())
}
}
}
- register this class
lib.rs
use cat::JsCatTransaction;
register_module!(mut ctx, {
ctx.export_class::<JsCatTransaction>("NodeCatTransaction")?;
})