3
3
#![ allow( non_snake_case) ]
4
4
include ! ( concat!( env!( "OUT_DIR" ) , "/bindings.rs" ) ) ;
5
5
6
- use std:: ffi:: c_void ;
6
+ use std:: ffi:: * ;
7
7
8
8
fn evt_api_call_wrapper ( evt_context : Box < evt_context_t > ) -> ( evt_status_t , Box < evt_context_t > ) {
9
9
let raw_pointer = Box :: into_raw ( evt_context) ;
@@ -17,11 +17,13 @@ fn evt_api_call_wrapper(evt_context: Box<evt_context_t>) -> (evt_status_t, Box<e
17
17
( result, out_context)
18
18
}
19
19
20
- fn evt_open ( config : * mut c_void ) -> Option < evt_handle_t > {
20
+ pub fn evt_open ( config : CString ) -> Option < evt_handle_t > {
21
+ let config_bytes = config. to_bytes_with_nul ( ) . to_vec ( ) ;
22
+
21
23
let context: Box < evt_context_t > = Box :: new ( evt_context_t {
22
24
call : evt_call_t_EVT_OP_OPEN,
23
25
handle : 0 ,
24
- data : config ,
26
+ data : config_bytes . as_ptr ( ) as * mut c_void ,
25
27
result : 0 ,
26
28
size : 0 ,
27
29
} ) ;
@@ -48,28 +50,41 @@ pub fn evt_close(handle: &evt_handle_t) -> evt_status_t {
48
50
result
49
51
}
50
52
51
- #[ cfg( test) ]
52
- mod tests {
53
- use super :: * ;
54
-
55
- #[ test]
56
- fn test_open_close ( ) {
57
- let config = r#"{
58
- "eventCollectorUri": "http://localhost:64099/OneCollector/track",
59
- "cacheFilePath":"hackathon_storage.db",
60
- "config":{"host": "*"},
61
- "name":"Rust-API-Client-0",
62
- "version":"1.0.0",
63
- "primaryToken":"99999999999999999999999999999999-99999999-9999-9999-9999-999999999999-9999",
64
- "maxTeardownUploadTimeInSec":5,
65
- "hostMode":false,
66
- "traceLevelMask": 4294967295,
67
- "minimumTraceLevel":0,
68
- "sdkmode":0,
69
- "compat": {"customTypePrefix": "compat_event"}
70
- }"# ;
71
-
72
- let result = evt_open ( config. as_ptr ( ) as * mut c_void ) ;
73
- assert_eq ! ( result, Some ( 0 ) ) ;
74
- }
53
+ pub fn evt_upload ( handle : & evt_handle_t ) -> evt_status_t {
54
+ let context: Box < evt_context_t > = Box :: new ( evt_context_t {
55
+ call : evt_call_t_EVT_OP_UPLOAD,
56
+ handle : * handle,
57
+ data : std:: ptr:: null_mut ( ) ,
58
+ result : 0 ,
59
+ size : 0 ,
60
+ } ) ;
61
+
62
+ evt_api_call_wrapper ( context) . 0
63
+ }
64
+
65
+ pub fn evt_flush ( handle : & evt_handle_t ) -> evt_status_t {
66
+ let context: Box < evt_context_t > = Box :: new ( evt_context_t {
67
+ call : evt_call_t_EVT_OP_FLUSH,
68
+ handle : * handle,
69
+ data : std:: ptr:: null_mut ( ) ,
70
+ result : 0 ,
71
+ size : 0 ,
72
+ } ) ;
73
+
74
+ evt_api_call_wrapper ( context) . 0
75
+ }
76
+
77
+ pub fn evt_log ( handle : & evt_handle_t , data : & mut [ evt_prop ] ) -> evt_status_t {
78
+ let data_len = data. len ( ) as u32 ;
79
+ let data_pointer = data. as_mut_ptr ( ) as * mut c_void ;
80
+
81
+ let context: Box < evt_context_t > = Box :: new ( evt_context_t {
82
+ call : evt_call_t_EVT_OP_LOG,
83
+ handle : * handle,
84
+ data : data_pointer,
85
+ result : 0 ,
86
+ size : data_len,
87
+ } ) ;
88
+
89
+ evt_api_call_wrapper ( context) . 0
75
90
}
0 commit comments