Hi,

Can someone please provide some info on this?

Thankyou

On Fri, May 10, 2019 at 12:55 PM Nitish Saboo <nitish.saboo55@gmail.com> wrote:
Hi,

I have installed syslog-ng on my Linux box and I am planning you use syslog-ng parser and wanted to initialise it's engine for parsing the data.

so initialise() method in my Go code calls  C code that is wrapper around syslog-ng C header files. So ,I am making use of cgo.

Following is my Go code:

func (obj Syslogparser) initialise{

X := C.CString(obj.X)
defer C.free(unsafe.Pointer(X))
Y := C.CString(obj.Y)
defer C.free(unsafe.Pointer(Y))
C.initialize_engine(X, Y, (C.key_value_cb)(unsafe.Pointer(C.callOnMeGo_cgo))); 
}

And following is my C method 'initialize_engine':

int initialize_engine(const gchar* X, const gchar* Y, key_value_cb cb) // cb is callback function
{
  module_path = _module_path;
  app_startup();
  msg_init(TRUE);

  configuration = cfg_new(0x0302);
  plugin_load_module("basicfuncs", configuration, NULL);
  plugin_load_module("syslogformat", configuration, NULL);

  pattern_db_global_init();

  if(patterndb != NULL){
    pattern_db_free(patterndb);
  }
  patterndb = pattern_db_new();
  pattern_db_reload_ruleset(patterndb, configuration, filename);
  pattern_db_set_emit_func(patterndb, pdbtool_pdb_emit_accumulate, cb);

  return 0;
}



My queries:

1)What is pattern_db_global_init, 'patterndb = pattern_db_new()', 'pattern_db_reload_ruleset', 'pattern_db_set_emit_func' doing in the following case ?

2)Can I make two independent instances of syslog-ng engines?

3)How can I call two instances of syslog-ng engines independently from my Go code?

Thanks