示例#1
0
        /// <summary>
        /// Wählt eine neue Quellgruppe aus.
        /// </summary>
        /// <param name="location">Der Ursprung der Quellgruppe.</param>
        /// <param name="group">Die eigentliche Quellgruppe.</param>
        private void PrepareReceiver(TLocationType location, TSourceGroupType group)
        {
            // Create once
            if (Receiver != null)
            {
                return;
            }

            // Create receiver
            var receiver = new DataGraph();

            try
            {
                // Load device data
                receiver.CaptureInformation          = FindFilter(Aspect_CaptureName, Aspect_CaptureMoniker, false);
                receiver.TunerInformation            = FindFilter(Aspect_TunerName, Aspect_TunerMoniker, true);
                receiver.DisableCIResetOnTuneFailure = m_disableEncryption;
                receiver.DVBType = DVBType;

                // Load optional data
                int value;
                if (int.TryParse(GetParameter(BDAEnvironment.MiniumPATCountName), out value))
                {
                    if (value >= 0)
                    {
                        receiver.Configuration.MinimumPATCount = value;
                    }
                }
                if (int.TryParse(GetParameter(BDAEnvironment.MinimumPATCountWaitName), out value))
                {
                    if (value >= 0)
                    {
                        receiver.Configuration.MinimumPATCountWaitTime = value;
                    }
                }

                // Configure pipeline
                foreach (var item in Pipeline)
                {
                    item.CreateExtension <IPipelineExtension>().Install(receiver, Profile, item.SupportedOperations);
                }

                // Time to create the graph
                receiver.Create(location, group);

                // Activate it
                receiver.Start();
            }
            catch
            {
                // Cleanup
                receiver.Dispose();

                // Forward
                throw;
            }

            // Remember
            Receiver = receiver;
        }