private static byte[] KeyAsByteArray(rd_kafka_message msg) { byte[] keyAsByteArray = null; if (msg.key != IntPtr.Zero) { keyAsByteArray = new byte[(int)msg.key_len]; Marshal.Copy(msg.key, keyAsByteArray, 0, (int)msg.key_len); } return(keyAsByteArray); }
private static byte[] ValueAsByteArray(rd_kafka_message msg) { byte[] valAsByteArray = null; if (msg.val != IntPtr.Zero) { valAsByteArray = new byte[(int)msg.len]; Marshal.Copy(msg.val, valAsByteArray, 0, (int)msg.len); } return(valAsByteArray); }
static void DeliveryReportCallback(IntPtr rk, ref rd_kafka_message rkmessage, IntPtr opaque) { // msg_opaque was set by Topic.Produce var gch = GCHandle.FromIntPtr(rkmessage._private); var deliveryCompletionSource = (TaskCompletionSource<DeliveryReport>) gch.Target; gch.Free(); if (rkmessage.err != 0) { deliveryCompletionSource.SetException( RdKafkaException.FromErr( rkmessage.err, Marshal.PtrToStringAnsi(rkmessage.payload))); } deliveryCompletionSource.SetResult(new DeliveryReport() { Offset = rkmessage.offset, Partition = rkmessage.partition }); }