internal void Init(RdKafkaType type, IntPtr config, Config.LogCallback logger) { logger = logger ?? ((string handle, int level, string fac, string buf) => { var now = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture); Console.WriteLine($"{level}|{now}|{handle}|{fac}| {buf}"); }); LogDelegate = (IntPtr rk, int level, string fac, string buf) => { // The log_cb is called very early during construction, before // SafeKafkaHandle or any of the C# wrappers are ready. // So we can't really pass rk on, just pass the rk name instead. var name = Marshal.PtrToStringAnsi(LibRdKafka.name(rk)); logger(name, level, fac, buf); }; LibRdKafka.conf_set_log_cb(config, LogDelegate); StatsDelegate = (IntPtr rk, IntPtr json, UIntPtr json_len, IntPtr opaque) => { OnStatistics?.Invoke(this, Marshal.PtrToStringAnsi(json)); return 0; }; LibRdKafka.conf_set_stats_cb(config, StatsDelegate); handle = SafeKafkaHandle.Create(type, config); callbackCts = new CancellationTokenSource(); callbackTask = StartCallbackTask(callbackCts.Token); }
internal static SafeKafkaHandle Create(RdKafkaType type, IntPtr config) { var errorStringBuilder = new StringBuilder(512); var skh = LibRdKafka.kafka_new(type, config, errorStringBuilder, (UIntPtr) errorStringBuilder.Capacity); if (skh.IsInvalid) { throw new InvalidOperationException(errorStringBuilder.ToString()); } return skh; }
internal static SafeKafkaHandle Create(RdKafkaType type, IntPtr config) { var errorStringBuilder = new StringBuilder(512); var skh = LibRdKafka.kafka_new(type, config, errorStringBuilder, (UIntPtr)errorStringBuilder.Capacity); if (skh.IsInvalid) { throw new InvalidOperationException(errorStringBuilder.ToString()); } return(skh); }
public static SafeKafkaHandle Create(RdKafkaType type, IntPtr config) { var errorStringBuilder = new StringBuilder(LibRdKafka.MaxErrorStringLength); var skh = LibRdKafka.kafka_new(type, config, errorStringBuilder, (UIntPtr)errorStringBuilder.Capacity); if (skh.IsInvalid) { LibRdKafka.conf_destroy(config); throw new InvalidOperationException(errorStringBuilder.ToString()); } return(skh); }
internal void Init(RdKafkaType type, IntPtr config, Config.LogCallback logger) { ErrorDelegate = (IntPtr rk, ErrorCode err, string reason, IntPtr opaque) => { OnError?.Invoke(this, new ErrorArgs() { ErrorCode = err, Reason = reason }); }; LibRdKafka.conf_set_error_cb(config, ErrorDelegate); if (logger == null) { logger = ((string handle, int level, string fac, string buf) => { var now = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); Console.WriteLine($"{level}|{now}|{handle}|{fac}| {buf}"); }); } LogDelegate = (IntPtr rk, int level, string fac, string buf) => { // The log_cb is called very early during construction, before // SafeKafkaHandle or any of the C# wrappers are ready. // So we can't really pass rk on, just pass the rk name instead. var name = Marshal.PtrToStringAnsi(LibRdKafka.name(rk)); logger(name, level, fac, buf); }; LibRdKafka.conf_set_log_cb(config, LogDelegate); StatsDelegate = (IntPtr rk, IntPtr json, UIntPtr json_len, IntPtr opaque) => { OnStatistics?.Invoke(this, Marshal.PtrToStringAnsi(json)); return(0); }; LibRdKafka.conf_set_stats_cb(config, StatsDelegate); handle = SafeKafkaHandle.Create(type, config); callbackCts = new CancellationTokenSource(); callbackTask = StartCallbackTask(callbackCts.Token); }
internal static extern SafeKafkaHandle rd_kafka_new( RdKafkaType type, IntPtr conf, StringBuilder errstr, UIntPtr errstr_size);
internal static SafeKafkaHandle kafka_new(RdKafkaType type, IntPtr conf, StringBuilder errstr, UIntPtr errstr_size) => _new(type, conf, errstr, errstr_size);
public static extern IntPtr rd_kafka_new(RdKafkaType type, IntPtr conf, IntPtr errstr, int errstr_size);
internal static extern SafeKafkaHandle rd_kafka_new( RdKafkaType type, IntPtr conf, StringBuilder errstr, UIntPtr errstr_size);
internal static SafeKafkaHandle kafka_new(RdKafkaType type, IntPtr conf, StringBuilder errstr, UIntPtr errstr_size) => _new(type, conf, errstr, errstr_size);
public static extern IntPtr rd_kafka_new(RdKafkaType type, IntPtr conf, IntPtr errstr, int errstr_size);