*/
use std;
-use crate::json::*;
+use crate::jsonbuilder::{JsonBuilder, JsonError};
use super::template::TemplateTransaction;
-fn log_template(tx: &TemplateTransaction) -> Option<Json> {
- let js = Json::object();
+fn log_template(tx: &TemplateTransaction, js: &mut JsonBuilder) -> Result<(), JsonError> {
if let Some(ref request) = tx.request {
- js.set_string("request", request);
+ js.set_string("request", request)?;
}
if let Some(ref response) = tx.response {
- js.set_string("response", response);
+ js.set_string("response", response)?;
}
- return Some(js);
+ Ok(())
}
#[no_mangle]
-pub extern "C" fn rs_template_logger_log(tx: *mut std::os::raw::c_void) -> *mut JsonT {
+pub extern "C" fn rs_template_logger_log(tx: *mut std::os::raw::c_void, js: &mut JsonBuilder) -> bool {
let tx = cast_pointer!(tx, TemplateTransaction);
- match log_template(tx) {
- Some(js) => js.unwrap(),
- None => std::ptr::null_mut(),
- }
+ log_template(tx, js).is_ok()
}
SCLogNotice("JsonTemplateLogger");
LogTemplateLogThread *thread = thread_data;
- json_t *js = CreateJSONHeader(p, LOG_DIR_PACKET, "template-rust", NULL);
+ JsonBuilder *js = CreateEveHeader(p, LOG_DIR_PACKET, "template-rust", NULL);
if (unlikely(js == NULL)) {
return TM_ECODE_FAILED;
}
- json_t *template_js = rs_template_logger_log(tx);
- if (unlikely(template_js == NULL)) {
+ jb_open_object(js, "template");
+ if (!rs_template_logger_log(tx, js)) {
goto error;
}
- json_object_set_new(js, "template", template_js);
+ jb_close(js);
MemBufferReset(thread->buffer);
- OutputJSONBuffer(js, thread->templatelog_ctx->file_ctx, &thread->buffer);
- json_decref(js);
+ OutputJsonBuilderBuffer(js, thread->templatelog_ctx->file_ctx, &thread->buffer);
+ jb_free(js);
return TM_ECODE_OK;
error:
- json_decref(js);
+ jb_free(js);
return TM_ECODE_FAILED;
}