Skip to content

Commit 975e8da

Browse files
committed
rust/ffi: add number setters to jsonbuilder wrapper
1 parent 14c5054 commit 975e8da

1 file changed

Lines changed: 29 additions & 2 deletions

File tree

rust/ffi/src/jsonbuilder.rs

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
use std::ffi::{CString, NulError};
2323

2424
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,
2727
};
2828

2929
// TODO: Map suricata::jsonbuilder::JsonBuilder errors as well,
@@ -97,6 +97,33 @@ impl JsonBuilder {
9797
}
9898
}
9999

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+
100127
pub fn set_formatted(&mut self, formatted: &str) -> Result<&mut Self, Error> {
101128
let formatted = CString::new(formatted)?;
102129
if unsafe { SCJbSetFormatted(self.jb, formatted.as_ptr()) } {

0 commit comments

Comments
 (0)