<div dir="ltr">Hi,<div><br></div><div>Can someone please provide some info on this?</div><div><br></div><div>Thankyou</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, May 10, 2019 at 12:55 PM Nitish Saboo <<a href="mailto:nitish.saboo55@gmail.com">nitish.saboo55@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div>Hi,</div><div><br></div><div>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.</div><div><br></div><div>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.</div><div><br></div><div>Following is my Go code:</div><div><br></div><div>func (obj Syslogparser) initialise{</div><div><br></div><div><span style="white-space:pre-wrap">      </span>X := C.CString(obj.X)</div><div><span style="white-space:pre-wrap">    </span>defer C.free(unsafe.Pointer(X))</div><div><span style="white-space:pre-wrap">  </span>Y := C.CString(obj.Y)</div><div><span style="white-space:pre-wrap">    </span>defer C.free(unsafe.Pointer(Y))</div><div><span style="white-space:pre-wrap">  </span>C.initialize_engine(X, Y, (C.key_value_cb)(unsafe.Pointer(C.callOnMeGo_cgo))); </div><div>}</div><div><br></div><div>And following is my C method 'initialize_engine':</div><div><br></div><div>int initialize_engine(const gchar* X, const gchar* Y, key_value_cb cb) // cb is callback function</div><div>{</div><div>  module_path = _module_path;</div><div>  app_startup();</div><div>  msg_init(TRUE);</div><div><br></div><div>  configuration = cfg_new(0x0302);</div><div>  plugin_load_module("basicfuncs", configuration, NULL);</div><div>  plugin_load_module("syslogformat", configuration, NULL);</div><div><br></div><div>  pattern_db_global_init();</div><div><br></div><div>  if(patterndb != NULL){</div><div>    pattern_db_free(patterndb);</div><div>  }</div><div>  patterndb = pattern_db_new();</div><div>  pattern_db_reload_ruleset(patterndb, configuration, filename);</div><div>  pattern_db_set_emit_func(patterndb, pdbtool_pdb_emit_accumulate, cb);</div><div><br></div><div>  return 0;</div><div>}</div><div><br></div><div><br></div><div><br></div><div>My queries:</div><div><br></div><div>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 ?</div><div><br></div><div>2)Can I make two independent instances of syslog-ng engines?</div><div><br></div><div>3)How can I call two instances of syslog-ng engines independently from my Go code?</div><div><br></div><div>Thanks</div><div><br></div></div></div>
</blockquote></div>