|
22 | 22 | use std::ffi::{CString, NulError}; |
23 | 23 |
|
24 | 24 | use suricata_sys::sys::{ |
25 | | - SCJbClose, SCJbGetMark, SCJbOpenObject, SCJbRestoreMark, SCJbSetFormatted, SCJbSetString, |
26 | | - SCJsonBuilder, SCJsonBuilderMark, |
| 25 | + SCJbClose, SCJbGetMark, SCJbOpenObject, SCJbRestoreMark, SCJbSetFloat, SCJbSetFormatted, |
| 26 | + SCJbSetInt, SCJbSetString, SCJbSetUint, SCJsonBuilder, SCJsonBuilderMark, |
27 | 27 | }; |
28 | 28 |
|
29 | 29 | // TODO: Map suricata::jsonbuilder::JsonBuilder errors as well, |
@@ -97,6 +97,33 @@ impl JsonBuilder { |
97 | 97 | } |
98 | 98 | } |
99 | 99 |
|
| 100 | + pub fn set_uint(&mut self, key: &str, val: u64) -> Result<&mut Self, Error> { |
| 101 | + let key = CString::new(key)?; |
| 102 | + if unsafe { SCJbSetUint(self.jb, key.as_ptr(), val) } { |
| 103 | + Ok(self) |
| 104 | + } else { |
| 105 | + Err(Error::Other) |
| 106 | + } |
| 107 | + } |
| 108 | + |
| 109 | + pub fn set_int(&mut self, key: &str, val: i64) -> Result<&mut Self, Error> { |
| 110 | + let key = CString::new(key)?; |
| 111 | + if unsafe { SCJbSetInt(self.jb, key.as_ptr(), val) } { |
| 112 | + Ok(self) |
| 113 | + } else { |
| 114 | + Err(Error::Other) |
| 115 | + } |
| 116 | + } |
| 117 | + |
| 118 | + pub fn set_float(&mut self, key: &str, val: f64) -> Result<&mut Self, Error> { |
| 119 | + let key = CString::new(key)?; |
| 120 | + if unsafe { SCJbSetFloat(self.jb, key.as_ptr(), val) } { |
| 121 | + Ok(self) |
| 122 | + } else { |
| 123 | + Err(Error::Other) |
| 124 | + } |
| 125 | + } |
| 126 | + |
100 | 127 | pub fn set_formatted(&mut self, formatted: &str) -> Result<&mut Self, Error> { |
101 | 128 | let formatted = CString::new(formatted)?; |
102 | 129 | if unsafe { SCJbSetFormatted(self.jb, formatted.as_ptr()) } { |
|
0 commit comments