Beispiel #1
0
 private static void AddFieldToSystemProperty(bool condition, EventData.SystemPropertiesCollection systemProperties, string propertyName, object value)
 {
     if (condition)
     {
         systemProperties[propertyName] = value;
     }
 }
Beispiel #2
0
 public BACNetIoTHubMessage(BACNetTelemetryMsg bacNetMsg,
                            EventData.SystemPropertiesCollection systemProperties,
                            IDictionary <string, object> properties)
 {
     BACNetMsg        = bacNetMsg;
     SystemProperties = systemProperties;
     Properties       = properties;
 }
        internal static IEnumerable <EventData> ReadAvroStreamToEventHubData(this Stream stream, string partitionKey)
        {
            using var reader = DataFileReader <GenericRecord> .OpenReader(stream);

            while (reader.HasNext())
            {
                GenericRecord genericAvroRecord = reader.Next();

                var body            = genericAvroRecord.GetValue <byte[]>(nameof(EventData.Body));
                var sequenceNumber  = genericAvroRecord.GetValue <long>(nameof(EventData.SystemProperties.SequenceNumber));
                var enqueuedTimeUtc = genericAvroRecord.GetValue <string>(nameof(EventData.SystemProperties.EnqueuedTimeUtc)).ParseTime();
                var offset          = genericAvroRecord.GetValue <string>(nameof(EventData.SystemProperties.Offset));

                var systemPropertiesCollection = new EventData.SystemPropertiesCollection(
                    sequenceNumber: sequenceNumber, enqueuedTimeUtc: enqueuedTimeUtc,
                    offset: offset, partitionKey: partitionKey);
                genericAvroRecord
                .GetValue <Dictionary <string, object> >(nameof(EventData.SystemProperties))
                .Foreach(x => systemPropertiesCollection.Add(x.Key, x.Value));

                IEnumerator <Field> avroSchemaField = genericAvroRecord.Schema.GetEnumerator();
                while (avroSchemaField.MoveNext())
                {
                    var currentAvroSchemaField = avroSchemaField.Current;
                    var currentFieldName       = currentAvroSchemaField.Name;

                    if (currentFieldName == nameof(EventData.Body))
                    {
                        continue;
                    }
                    if (currentFieldName == nameof(EventData.Properties))
                    {
                        continue;
                    }
                    if (currentFieldName == nameof(EventData.SystemProperties))
                    {
                        continue;
                    }

                    if (genericAvroRecord.TryGetValue(currentFieldName, out object prop))
                    {
                        systemPropertiesCollection[currentFieldName] = prop;
                    }
                }

                EventData eventData = new(body)
                {
                    SystemProperties = systemPropertiesCollection
                };

                genericAvroRecord
                .GetValue <Dictionary <string, object> >(nameof(EventData.Properties))
                .Foreach(eventData.Properties.Add);

                yield return(eventData);
            }
        }
    }
Beispiel #4
0
        public static string Dump(EventData.SystemPropertiesCollection d)
        {
            string r = "SystemProperties:";

            if (d == null)
            {
                r += "(null)";
            }
            else
            {
                foreach (var p in d)
                {
                    r += " k: " + p.Key.ToString() + " vt: " + p.Value.GetType().ToString() + " v: " + p.Value.ToString();
                }
            }
            return(r);
        }