pub struct Client { /* private fields */ }Implementations§
Source§impl Client
impl Client
Sourcepub fn new(cfg: Config) -> Result<Self, Box<dyn Error>>
pub fn new(cfg: Config) -> Result<Self, Box<dyn Error>>
Examples found in repository?
examples/test_sdk.rs (lines 18-23)
11async fn main() {
12 let dimensions: HashMap<String, String> = [
13 ("service".into(), "api".into()),
14 ("region".into(), "eu".into()),
15 ]
16 .into();
17
18 let client = Client::new(Config {
19 api_key: API_KEY.into(),
20 sli_id: SLI_ID.into(),
21 base_url: BASE_URL.into(),
22 ..Default::default()
23 })
24 .unwrap();
25
26 println!("LevelOps SDK test — boucle toutes les secondes. Ctrl+C pour arrêter.");
27 let mut i = 0u64;
28 loop {
29 i += 1;
30 let latency = rand_range(20, 500);
31
32 // Usage direct
33 let mut fields = HashMap::new();
34 fields.insert("result".into(), serde_json::Value::String("ok".into()));
35 fields.insert("latency_ms".into(), serde_json::Value::Number(latency.into()));
36
37 client
38 .record(Event {
39 fields,
40 dimensions: dimensions.clone(),
41 ..Default::default()
42 })
43 .await
44 .unwrap();
45 println!("[{i}] record() envoyé");
46
47 // Usage measure (simulation latence)
48 let extra_fields: HashMap<String, serde_json::Value> =
49 [("service_version".into(), serde_json::Value::String("1.0".into()))].into();
50 client
51 .measure(
52 |ctx| async move {
53 sleep(Duration::from_millis(rand_range(50, 300))).await;
54 ctx.set_result(if rand_bool(0.9) { "ok" } else { "error" });
55 Ok(())
56 },
57 MeasureOpts::new(dimensions.clone()).fields(extra_fields),
58 )
59 .await
60 .unwrap();
61 println!("[{i}] measure() terminé");
62
63 sleep(Duration::from_secs(1)).await;
64 }
65}Sourcepub async fn record(&self, event: Event) -> Result<(), Box<dyn Error>>
pub async fn record(&self, event: Event) -> Result<(), Box<dyn Error>>
Examples found in repository?
examples/test_sdk.rs (lines 38-42)
11async fn main() {
12 let dimensions: HashMap<String, String> = [
13 ("service".into(), "api".into()),
14 ("region".into(), "eu".into()),
15 ]
16 .into();
17
18 let client = Client::new(Config {
19 api_key: API_KEY.into(),
20 sli_id: SLI_ID.into(),
21 base_url: BASE_URL.into(),
22 ..Default::default()
23 })
24 .unwrap();
25
26 println!("LevelOps SDK test — boucle toutes les secondes. Ctrl+C pour arrêter.");
27 let mut i = 0u64;
28 loop {
29 i += 1;
30 let latency = rand_range(20, 500);
31
32 // Usage direct
33 let mut fields = HashMap::new();
34 fields.insert("result".into(), serde_json::Value::String("ok".into()));
35 fields.insert("latency_ms".into(), serde_json::Value::Number(latency.into()));
36
37 client
38 .record(Event {
39 fields,
40 dimensions: dimensions.clone(),
41 ..Default::default()
42 })
43 .await
44 .unwrap();
45 println!("[{i}] record() envoyé");
46
47 // Usage measure (simulation latence)
48 let extra_fields: HashMap<String, serde_json::Value> =
49 [("service_version".into(), serde_json::Value::String("1.0".into()))].into();
50 client
51 .measure(
52 |ctx| async move {
53 sleep(Duration::from_millis(rand_range(50, 300))).await;
54 ctx.set_result(if rand_bool(0.9) { "ok" } else { "error" });
55 Ok(())
56 },
57 MeasureOpts::new(dimensions.clone()).fields(extra_fields),
58 )
59 .await
60 .unwrap();
61 println!("[{i}] measure() terminé");
62
63 sleep(Duration::from_secs(1)).await;
64 }
65}Sourcepub async fn measure<F, Fut>(
&self,
f: F,
opts: MeasureOpts,
) -> Result<(), Box<dyn Error>>
pub async fn measure<F, Fut>( &self, f: F, opts: MeasureOpts, ) -> Result<(), Box<dyn Error>>
Measure execution time via an async closure.
client.measure(|ctx| async move {
ctx.set_result("ok");
Ok(())
}, MeasureOpts::new([("service", "api")])).await?;Examples found in repository?
examples/test_sdk.rs (lines 51-58)
11async fn main() {
12 let dimensions: HashMap<String, String> = [
13 ("service".into(), "api".into()),
14 ("region".into(), "eu".into()),
15 ]
16 .into();
17
18 let client = Client::new(Config {
19 api_key: API_KEY.into(),
20 sli_id: SLI_ID.into(),
21 base_url: BASE_URL.into(),
22 ..Default::default()
23 })
24 .unwrap();
25
26 println!("LevelOps SDK test — boucle toutes les secondes. Ctrl+C pour arrêter.");
27 let mut i = 0u64;
28 loop {
29 i += 1;
30 let latency = rand_range(20, 500);
31
32 // Usage direct
33 let mut fields = HashMap::new();
34 fields.insert("result".into(), serde_json::Value::String("ok".into()));
35 fields.insert("latency_ms".into(), serde_json::Value::Number(latency.into()));
36
37 client
38 .record(Event {
39 fields,
40 dimensions: dimensions.clone(),
41 ..Default::default()
42 })
43 .await
44 .unwrap();
45 println!("[{i}] record() envoyé");
46
47 // Usage measure (simulation latence)
48 let extra_fields: HashMap<String, serde_json::Value> =
49 [("service_version".into(), serde_json::Value::String("1.0".into()))].into();
50 client
51 .measure(
52 |ctx| async move {
53 sleep(Duration::from_millis(rand_range(50, 300))).await;
54 ctx.set_result(if rand_bool(0.9) { "ok" } else { "error" });
55 Ok(())
56 },
57 MeasureOpts::new(dimensions.clone()).fields(extra_fields),
58 )
59 .await
60 .unwrap();
61 println!("[{i}] measure() terminé");
62
63 sleep(Duration::from_secs(1)).await;
64 }
65}pub async fn flush(&self) -> Result<(), Box<dyn Error>>
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for Client
impl !UnwindSafe for Client
impl Freeze for Client
impl Send for Client
impl Sync for Client
impl Unpin for Client
impl UnsafeUnpin for Client
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more