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
use std::ffi::CString;
use newrelic_sys as ffi;
use crate::transaction::Transaction;
pub struct Segment {
pub inner: *mut ffi::newrelic_segment_t,
}
impl Segment {
pub fn start_custom_segment(transaction: &Transaction, name: &str) -> Self {
let c_name = CString::new(name);
let c_category = CString::new("Custom");
let inner = unsafe {
ffi::newrelic_start_segment(
transaction.inner,
c_name.unwrap().as_ptr(),
c_category.unwrap().as_ptr(),
)
};
Segment { inner }
}
pub fn end_segment(mut self, transaction: &Transaction) {
unsafe {
ffi::newrelic_end_segment(transaction.inner, &mut self.inner);
}
}
}