コード例 #1
0
        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);
        }
コード例 #2
0
        // 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;
        }