virtual internal TheThing.TheThingSubscription GetSubscriptionInfo(bool?bGeneralize) { TheThingReference thingReference; var tThing = GetThing(); if (tThing != null) { thingReference = new TheThingReference(tThing); if (bGeneralize == true) { thingReference.ThingMID = null; } } else { thingReference = new TheThingReference() { ThingMID = (bGeneralize == false && TheCommonUtils.CGuid(this.ThingMID) != Guid.Empty) ? (Guid?)TheCommonUtils.CGuid(this.ThingMID) : null, EngineName = this.EngineName, DeviceType = this.DeviceType, FriendlyName = this.FriendlyName, PropertiesToMatch = TheSenderThing.CStringToDict(this.PropertiesToMatch), }; } var sub = new TheThing.TheThingSubscription { SubscriptionId = this.cdeMID, AddThingIdentity = this.AddThingIdentity, SamplingWindow = this.ChangeBufferTimeBucketSize, ContinueMatching = this.ContinueMatching, CooldownPeriod = this.ChangeBufferLatency, ThingReference = thingReference, EventFormat = this.EventFormat, ForceAllProperties = this.ForceAllProperties, ForceConfigProperties = this.ForceConfigProperties, IgnoreExistingHistory = this.IgnoreExistingHistory, IgnorePartialFailure = this.IgnorePartialFailure, KeepDurableHistory = this.KeepDurableHistory, MaxHistoryCount = this.MaxHistoryCount, MaxHistoryTime = this.MaxHistoryTime, PartitionKey = this.PartitionKey, PreserveOrder = this.PreserveOrder, PropertiesExcluded = TheCommonUtils.CStringToList(this.PropertiesExcluded, ','), PropertiesIncluded = TheCommonUtils.CStringToList(this.PropertiesIncluded, ','), SendInitialValues = this.SendInitialValues, SendUnchangedValue = this.SendUnchangedValue, StaticProperties = TheSenderThing.CStringToDict(this.StaticProperties), TargetName = this.TargetName, TargetType = this.TargetType, TargetUnit = this.TargetUnit, TokenExpirationInHours = this.TokenExpirationInHours, }; return(sub); }
// Override if new properties in a derived class need to be initialized from a TheThingSubscription internal void Initialize(TheThing.TheThingSubscription subscription) { cdeMID = subscription.SubscriptionId ?? Guid.Empty; AddThingIdentity = subscription.AddThingIdentity ?? false; this.ChangeBufferTimeBucketSize = subscription.SamplingWindow ?? 0; ContinueMatching = subscription.ContinueMatching ?? false; ChangeBufferLatency = subscription.CooldownPeriod ?? 0; EngineName = subscription.ThingReference?.EngineName; DeviceType = subscription.ThingReference?.DeviceType; if (!string.IsNullOrEmpty(subscription.ThingReference?.ID)) { if (subscription.ThingReference.ThingMID == null) { var matchingThing = subscription.ThingReference?.GetMatchingThing(); if (matchingThing != null) { subscription.ThingReference.ThingMID = matchingThing.cdeMID; } } if (subscription.ThingReference.PropertiesToMatch == null) { subscription.ThingReference.PropertiesToMatch = new Dictionary <string, object>(); } subscription.ThingReference.PropertiesToMatch[nameof(subscription.ThingReference.ID)] = subscription.ThingReference.ID; } FriendlyName = subscription.ThingReference?.FriendlyName; EventFormat = subscription.EventFormat; ThingMID = subscription.ThingReference?.ThingMID?.ToString(); TargetName = subscription.TargetName; TargetType = subscription.TargetType; TargetUnit = subscription.TargetUnit; StaticProperties = CDictToString(subscription.StaticProperties); PropertiesExcluded = TheCommonUtils.CListToString(subscription.PropertiesExcluded, ","); PropertiesIncluded = TheCommonUtils.CListToString(subscription.PropertiesIncluded, ","); PropertiesToMatch = CDictToString(subscription.ThingReference?.PropertiesToMatch); ForceAllProperties = subscription.ForceAllProperties; ForceConfigProperties = subscription.ForceConfigProperties; IgnoreExistingHistory = subscription.IgnoreExistingHistory; IgnorePartialFailure = subscription.IgnorePartialFailure ?? false; KeepDurableHistory = subscription.KeepDurableHistory ?? false; MaxHistoryCount = subscription.MaxHistoryCount ?? 0; MaxHistoryTime = subscription.MaxHistoryTime ?? 0; PreserveOrder = subscription.PreserveOrder ?? false; PartitionKey = subscription.PartitionKey; SendInitialValues = subscription.SendInitialValues; SendUnchangedValue = subscription.SendUnchangedValue ?? false; TokenExpirationInHours = subscription.TokenExpirationInHours; }