Exemple #1
0
        /// <summary>
        /// Registriert eine neue Entschlüsselungsregel.
        /// </summary>
        /// <param name="group">Die neue Regel.</param>
        /// <param name="inherited">Alle Zähler höherer Ebene.</param>
        private void RegisterDecryption(DecryptionGroup group, HashSet <Guid> inherited)
        {
            // Create the new counter
            var counter = RegisterDecryption(group.MaximumParallelSources);

            // Remember
            inherited.Add(counter);

            // Process all resources
            if (group.ScheduleResources != null)
            {
                foreach (var resource in group.ScheduleResources.Select(r => Resources.FirstOrDefault(p => ReferenceEquals(p.Resource, r))))
                {
                    if (resource != null)
                    {
                        resource.DecryptionCounters.UnionWith(inherited);
                    }
                }
            }

            // Forward
            if (group.DecryptionGroups != null)
            {
                foreach (var subGroup in group.DecryptionGroups)
                {
                    RegisterDecryption(subGroup, inherited);
                }
            }

            // Reset
            inherited.Remove(counter);
        }
        /// <summary>
        /// Meldet komplete Entschlüsselungsregeln an.
        /// </summary>
        /// <param name="group">Eine neue Regel.</param>
        /// <exception cref="ArgumentNullException">Die Regel ist ungültig.</exception>
        public void Add(DecryptionGroup group)
        {
            // Check
            group.Validate();

            // Remember
            m_Decryption.Add(group);
        }
Exemple #3
0
            /// <summary>
            /// Meldet komplete Entschlüsselungsregeln an.
            /// </summary>
            /// <param name="group">Eine neue Regel.</param>
            /// <exception cref="ArgumentNullException">Die Regel ist ungültig.</exception>
            public void Add(DecryptionGroup group)
            {
                // Not allowed
                if (m_CurrentPlan != null)
                {
                    throw new NotSupportedException("Add");
                }

                // Forward
                m_Resources.Add(group);
            }
        public void Decryption_Group_May_Allow_Using_Two_Resources_At_The_Same_Time()
        {
            // Create recordings
            var plan1 = RecordingDefinition.Create( false, "test", Guid.NewGuid(), null, SourceMock.Source1Group1Pay, TimeBias.AddHours( 1 ), TimeSpan.FromMinutes( 100 ) );
            var plan2 = RecordingDefinition.Create( false, "test", Guid.NewGuid(), null, SourceMock.Source4Group1Pay, TimeBias.AddHours( 2 ), TimeSpan.FromMinutes( 100 ) );

            // Create group
            var group =
                new DecryptionGroup
                {
                    ScheduleResources = new[] { PayTVDevice1, PayTVDevice2 },
                    MaximumParallelSources = 2,
                };

            // Create component under test
            var cut = new RecordingScheduler( StringComparer.InvariantCultureIgnoreCase ) { PayTVDevice1, PayTVDevice2, plan1, plan2, group };

            // Process
            var schedules = cut.GetSchedules( TimeBias ).ToArray();

            // Validate
            Assert.AreEqual( 2, schedules.Length, "Schedules" );
            Assert.IsFalse( schedules[0].StartsLate, "Late 1" );
            Assert.IsFalse( schedules[1].StartsLate, "Late 2" );
        }
            /// <summary>
            /// Meldet komplete Entschlüsselungsregeln an.
            /// </summary>
            /// <param name="group">Eine neue Regel.</param>
            /// <exception cref="ArgumentNullException">Die Regel ist ungültig.</exception>
            public void Add( DecryptionGroup group )
            {
                // Not allowed
                if (m_CurrentPlan != null)
                    throw new NotSupportedException( "Add" );

                // Forward
                m_Resources.Add( group );
            }
 /// <summary>
 /// Meldet komplete Entschlüsselungsregeln an.
 /// </summary>
 /// <param name="group">Eine neue Regel.</param>
 /// <exception cref="ArgumentNullException">Die Regel ist ungültig.</exception>
 public void Add(DecryptionGroup group)
 {
     // Forward
     Resources.Add(group);
 }