Пример #1
0
 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);
 }
Пример #2
0
 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);
 }
Пример #3
0
        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
            });
        }