示例#1
0
        /// <summary>
        /// Füllt eine Auswahlliste mit Erweiterungen.
        /// </summary>
        /// <param name="target">Die zu befüllende Liste.</param>
        /// <param name="details">Die Schaltfläche zur Pflege der Detailparameter.</param>
        /// <param name="type">Die Art der Erweiterung.</param>
        private void Fill(ComboBox target, Button details, PipelineTypes type)
        {
            // Remember
            m_ProviderSelection.Add(type, new ProviderUI(type, target, details));

            // Connect
            details.Tag = type;
            target.Tag  = type;

            // Request
            List <ProviderSelector> providers;

            if (s_Types.TryGetValue(type, out providers))
            {
                target.Items.AddRange(providers.ToArray());
            }

            // Check for done
            target.Enabled  = (target.Items.Count > 0);
            details.Enabled = false;
            if (!target.Enabled)
            {
                return;
            }

            // Forget about sorting
            target.Sorted = false;

            // Add a null option
            target.Items.Insert(0, Properties.Resources.Select_NoAction);

            // Pre select
            target.SelectedIndex = 0;
        }
示例#2
0
 /// <summary>
 /// Erzeugt eine neue Verwaltung.
 /// </summary>
 /// <param name="type">Die konkrete Art der Erweiterung.</param>
 /// <param name="selector">Die Liste mit allen Erweiterungen.</param>
 /// <param name="details">Die Schaltfläche für die Pflege der Parameter.</param>
 public ProviderUI(PipelineTypes type, ComboBox selector, Button details)
 {
     // Remember
     m_TypePrefix = ProfileParameter.GetPrefixForExtensionParameter(type);
     Selector     = selector;
     Details      = details;
 }
示例#3
0
        public Task <TResult> Ask <TResult>(IQuery <TResult> query, CancellationToken cancellationToken = default)
        {
            EnsureNotDisposed();

            var handlerType = PipelineTypes.GetForQuery(query.GetType());
            var handler     = (IQueryPipeline <TResult>)_scope.GetService(handlerType);

            return(handler.GetResponse(query, cancellationToken));
        }
示例#4
0
        public Task Send(ICommand command, CancellationToken cancellationToken = default)
        {
            EnsureNotDisposed();

            var executorType = PipelineTypes.GetForCommand(command.GetType());
            var executor     = (ICommandPipeline)_scope.GetService(executorType);

            return(executor.Send(command, cancellationToken));
        }
        /// <summary>
        /// Aktualisiert die Aktionslisten des DVB Empfangs.
        /// </summary>
        /// <param name="graph">Der DirectShow Graph für den DVB Empfang.</param>
        /// <param name="profile">Das verwendete Geräteprofil.</param>
        /// <param name="types">Die gewünschte Aktivierung.</param>
        void IPipelineExtension.Install( DataGraph graph, Profile profile, PipelineTypes types )
        {
            // Validate
            if (graph == null)
                throw new ArgumentNullException( "graph" );
            if (profile == null)
                throw new ArgumentNullException( "profile" );

            // Check supported types
            if ((types & PipelineTypes.DVBS2) != 0)
                graph.TunePipeline.AddPreProcessing( ActivateS2 );
        }
示例#6
0
        public Task Send(INotification notification, CancellationToken cancellationToken = default)
        {
            if (_disposed)
            {
                throw Error.Disposed(nameof(Emitter));
            }

            var publisherType = PipelineTypes.GetForNotification(notification.GetType());
            var publisher     = (INotificationPipeline)_scope.GetService(publisherType);

            return(publisher?.Publish(notification, cancellationToken) ?? TaskUtils.CompletedTask);
        }
        /// <summary>
        /// Aktualisiert die Aktionslisten des DVB Empfangs.
        /// </summary>
        /// <param name="graph">Der DirectShow Graph für den DVB Empfang.</param>
        /// <param name="profile">Das verwendete Geräteprofil.</param>
        /// <param name="types">Die gewünschte Aktivierung.</param>
        void IPipelineExtension.Install( DataGraph graph, Profile profile, PipelineTypes types )
        {
            // Validate
            if (graph == null)
                throw new ArgumentNullException( "graph" );
            if (profile == null)
                throw new ArgumentNullException( "profile" );

            // Check supported types
            if ((types & PipelineTypes.SignalInformation) != 0)
                graph.SignalPipeline.AddPostProcessing( TransformSignal );
        }
示例#8
0
        /// <summary>
        /// Aktualisiert die Aktionslisten des DVB Empfangs.
        /// </summary>
        /// <param name="graph">Der DirectShow Graph für den DVB Empfang.</param>
        /// <param name="profile">Das verwendete Geräteprofil.</param>
        /// <param name="types">Die gewünschte Aktivierung.</param>
        void IPipelineExtension.Install(DataGraph graph, Profile profile, PipelineTypes types)
        {
            // Validate
            if (graph == null)
            {
                throw new ArgumentNullException("graph");
            }
            if (profile == null)
            {
                throw new ArgumentNullException("profile");
            }

            // Check supported types
            if ((types & PipelineTypes.CICAM) != 0)
            {
                // Load static settings
                m_suppress     = AdditionalFilterSelector.GetSuppression(PipelineTypes.CICAM, profile.Parameters);
                m_hasBeenReset = (m_suppress != SuppressionMode.None);

                // Analyse settings
                if (!bool.TryParse(profile.Parameters.GetParameter(PipelineTypes.CICAM, AdditionalFilterSelector.CancelEncryptionOnChangedStream), out m_disableOnChange))
                {
                    m_disableOnChange = false;
                }
                if (!int.TryParse(profile.Parameters.GetParameter(PipelineTypes.CICAM, AdditionalFilterSelector.DelayOnChangedStream), out m_changeDelay))
                {
                    m_changeDelay = 0;
                }

                // Register in pipeline
                graph.DecryptionPipeline.AddPostProcessing(Decrypt);

                // Check for additional filter
                var filterDisplayName = profile.Parameters.GetParameter(PipelineTypes.CICAM, AdditionalFilterSelector.FilterName);
                if (!string.IsNullOrEmpty(filterDisplayName))
                {
                    // Load moniker - if available
                    var filterMoniker = profile.Parameters.GetParameter(PipelineTypes.CICAM, AdditionalFilterSelector.FilterMoniker);

                    // Remember position of our extension
                    m_filterIndex = graph.AdditionalFilterInformations.Count;

                    // Register in graph
                    graph.AdditionalFilterInformations.Add(DeviceAndFilterInformations.Cache.AllFilters.FindFilter(filterDisplayName, filterMoniker));
                }
            }
        }
示例#9
0
        /// <summary>
        /// Aktualisiert die Aktionslisten des DVB Empfangs.
        /// </summary>
        /// <param name="graph">Der DirectShow Graph für den DVB Empfang.</param>
        /// <param name="profile">Das verwendete Geräteprofil.</param>
        /// <param name="types">Die gewünschte Aktivierung.</param>
        void IPipelineExtension.Install(DataGraph graph, Profile profile, PipelineTypes types)
        {
            // Validate
            if (graph == null)
            {
                throw new ArgumentNullException("graph");
            }
            if (profile == null)
            {
                throw new ArgumentNullException("profile");
            }

            // Check supported types
            if ((types & PipelineTypes.CICAM) != 0)
            {
                graph.DecryptionPipeline.AddPostProcessing(Decrypt);
            }
        }
示例#10
0
        /// <summary>
        /// Aktualisiert die Aktionslisten des DVB Empfangs.
        /// </summary>
        /// <param name="graph">Der DirectShow Graph für den DVB Empfang.</param>
        /// <param name="profile">Das verwendete Geräteprofil.</param>
        /// <param name="types">Die gewünschte Aktivierung.</param>
        void IPipelineExtension.Install(DataGraph graph, Profile profile, PipelineTypes types)
        {
            // Validate
            if (graph == null)
            {
                throw new ArgumentNullException("graph");
            }
            if (profile == null)
            {
                throw new ArgumentNullException("profile");
            }

            // Check supported types
            if ((types & PipelineTypes.DiSEqC) != 0)
            {
                graph.TunePipeline.AddPreProcessing(ApplyDiSEqC);
            }
        }
示例#11
0
        /// <summary>
        /// Aktualisiert die Aktionslisten des DVB Empfangs.
        /// </summary>
        /// <param name="graph">Der DirectShow Graph für den DVB Empfang.</param>
        /// <param name="profile">Das verwendete Geräteprofil.</param>
        /// <param name="types">Die gewünschte Aktivierung.</param>
        void IPipelineExtension.Install(DataGraph graph, Profile profile, PipelineTypes types)
        {
            // Validate
            if (graph == null)
            {
                throw new ArgumentNullException("graph");
            }
            if (profile == null)
            {
                throw new ArgumentNullException("profile");
            }

            // Check supported types
            if ((types & PipelineTypes.SignalInformation) != 0)
            {
                graph.SignalPipeline.AddPostProcessing(TransformSignal);
            }
        }
 /// <summary>
 /// Ermittelt einen Parameter.
 /// </summary>
 /// <param name="parameters">Die Liste der zu verwendenden Parameter.</param>
 /// <param name="type">Die Art der Erweiterung, die einen Sonderwert sucht.</param>
 /// <param name="name">Der Name des Parameters.</param>
 /// <returns>Die gewünschten Informationen.</returns>
 /// <exception cref="ArgumentNullException">Ein Parameter wurde nicht angegeben.</exception>
 public static string GetParameter(this IEnumerable <ProfileParameter> parameters, PipelineTypes type, string name)
 {
     // Forward
     if (string.IsNullOrEmpty(name))
     {
         throw new ArgumentNullException("name");
     }
     else
     {
         return(parameters.GetParameter(string.Format("{0}{1}", ProfileParameter.GetPrefixForExtensionParameter(type), name)));
     }
 }
示例#13
0
        /// <summary>
        /// Aktualisiert die Aktionslisten des DVB Empfangs.
        /// </summary>
        /// <param name="graph">Der DirectShow Graph für den DVB Empfang.</param>
        /// <param name="profile">Das verwendete Geräteprofil.</param>
        /// <param name="types">Die gewünschte Aktivierung.</param>
        void IPipelineExtension.Install( DataGraph graph, Profile profile, PipelineTypes types )
        {
            // Validate
            if (graph == null)
                throw new ArgumentNullException( "graph" );
            if (profile == null)
                throw new ArgumentNullException( "profile" );

            // Check supported types
            if ((types & PipelineTypes.CICAM) != 0)
            {
                // Load static settings
                m_suppress = AdditionalFilterSelector.GetSuppression( PipelineTypes.CICAM, profile.Parameters );
                m_hasBeenReset = (m_suppress != SuppressionMode.None);

                // Analyse settings
                if (!bool.TryParse( profile.Parameters.GetParameter( PipelineTypes.CICAM, AdditionalFilterSelector.CancelEncryptionOnChangedStream ), out m_disableOnChange ))
                    m_disableOnChange = false;
                if (!int.TryParse( profile.Parameters.GetParameter( PipelineTypes.CICAM, AdditionalFilterSelector.DelayOnChangedStream ), out m_changeDelay ))
                    m_changeDelay = 0;

                // Register in pipeline
                graph.DecryptionPipeline.AddPostProcessing( Decrypt );

                // Check for additional filter
                var filterDisplayName = profile.Parameters.GetParameter( PipelineTypes.CICAM, AdditionalFilterSelector.FilterName );
                if (!string.IsNullOrEmpty( filterDisplayName ))
                {
                    // Load moniker - if available
                    var filterMoniker = profile.Parameters.GetParameter( PipelineTypes.CICAM, AdditionalFilterSelector.FilterMoniker );

                    // Remember position of our extension
                    m_filterIndex = graph.AdditionalFilterInformations.Count;

                    // Register in graph
                    graph.AdditionalFilterInformations.Add( DeviceAndFilterInformations.Cache.AllFilters.FindFilter( filterDisplayName, filterMoniker ) );
                }
            }
        }
示例#14
0
 /// <summary>
 /// Pflegt die zusätzlichen Parameter dieser Erweiterung.
 /// </summary>
 /// <param name="parent">Das übergeordnete Oberflächenelement.</param>
 /// <param name="parameters">Die Liste der Parameter.</param>
 /// <param name="type">Die Art der Erweiterung, deren Parameter gepflegt werden sollen.</param>
 void IPipelineParameterExtension.Edit( Control parent, List<ProfileParameter> parameters, PipelineTypes type )
 {
     // Show dialog
     using (var dialog = new AdditionalFilterSelector( parameters ))
         if (dialog.ShowDialog( parent ) == DialogResult.OK)
             dialog.Update( parameters );
 }
示例#15
0
 /// <summary>
 /// Meldet die interne Kennung für Erweiterungsparameter einer bestimmten Art.
 /// </summary>
 /// <param name="type">Die Art der Erweiterung.</param>
 /// <returns>Der zu verwendende Namenspräfix.</returns>
 internal static string GetPrefixForExtensionParameter(PipelineTypes type)
 {
     // Create
     return(string.Format("#ExtParam#{0}_", type));
 }
示例#16
0
 /// <summary>
 /// Ermittelt alle Erweiterungsinstanzen einer bestimmten Art.
 /// </summary>
 /// <param name="forType">Die gewünschte Art von Erweiterung.</param>
 /// <returns>Eine Auflistung aller Erweiterungen dieser Art.</returns>
 public IEnumerable<PipelineItem> GetPipelineItems( PipelineTypes forType )
 {
     // Report
     return Pipeline.Where( p => (p.SupportedOperations & forType) != 0 );
 }
        /// <summary>
        /// Ermittelt die Art der Unterdrückung der CI/CAM Initialisierung.
        /// </summary>
        /// <param name="type">Die Art der Erweiterung, die im Namen zu berücksichtigen ist.</param>
        /// <param name="parameters">Die Liste aller Parameter.</param>
        /// <returns>Der aktuell gültige Parameter.</returns>
        internal static SuppressionMode GetSuppression( PipelineTypes? type, IEnumerable<ProfileParameter> parameters )
        {
            // Load native
            string setting;
            if (type.HasValue)
                setting = parameters.GetParameter( type.Value, ResetSuppressionMode );
            else
                setting = parameters.GetParameter( ResetSuppressionMode );

            // Convert
            if (!string.IsNullOrEmpty( setting ))
                try
                {
                    // Convert
                    return (SuppressionMode) Enum.Parse( typeof( SuppressionMode ), setting );
                }
                catch
                {
                    // Ignore any error - would prefer a TryParse...
                }

            // Default
            return SuppressionMode.None;
        }
 /// <summary>
 /// Erzeugt eine neue Kennzeichnung.
 /// </summary>
 /// <param name="types">Die von dieser Klasse unterstützten Aufgabenarten.</param>
 /// <param name="displayName">Eine Beschreibung für diese Klasse.</param>
 public PipelineAttribute(PipelineTypes types, string displayName)
 {
     // Remember
     DisplayName = displayName;
     Types       = types;
 }
 /// <summary>
 /// Erzeugt eine neue Kennzeichnung.
 /// </summary>
 /// <param name="types">Die von dieser Klasse unterstützten Aufgabenarten.</param>
 /// <param name="displayName">Eine Beschreibung für diese Klasse.</param>
 public PipelineAttribute( PipelineTypes types, string displayName )
 {
     // Remember
     DisplayName = displayName;
     Types = types;
 }
示例#20
0
 internal void SortPipelines()
 {
     PipelineTypes = PipelineTypes.OrderBy(t => t.BlockAttribute.Order).ToList();
 }
 /// <summary>
 /// Meldet die interne Kennung für Erweiterungsparameter einer bestimmten Art.
 /// </summary>
 /// <param name="type">Die Art der Erweiterung.</param>
 /// <returns>Der zu verwendende Namenspräfix.</returns>
 internal static string GetPrefixForExtensionParameter( PipelineTypes type )
 {
     // Create
     return string.Format( "#ExtParam#{0}_", type );
 }
示例#22
0
 /// <summary>
 /// Pflegt die zusätzlichen Parameter dieser Erweiterung.
 /// </summary>
 /// <param name="parent">Das übergeordnete Oberflächenelement.</param>
 /// <param name="parameters">Die Liste der Parameter.</param>
 /// <param name="type">Die Art der Erweiterung, deren Parameter gepflegt werden sollen.</param>
 void IPipelineParameterExtension.Edit(Control parent, List <ProfileParameter> parameters, PipelineTypes type)
 {
     // Show dialog
     using (var dialog = new AdditionalFilterSelector(parameters))
         if (dialog.ShowDialog(parent) == DialogResult.OK)
         {
             dialog.Update(parameters);
         }
 }
示例#23
0
        /// <summary>
        /// Aktualisiert die Aktionslisten des DVB Empfangs.
        /// </summary>
        /// <param name="graph">Der DirectShow Graph für den DVB Empfang.</param>
        /// <param name="profile">Das verwendete Geräteprofil.</param>
        /// <param name="types">Die gewünschte Aktivierung.</param>
        void IPipelineExtension.Install( DataGraph graph, Profile profile, PipelineTypes types )
        {
            // Validate
            if (graph == null)
                throw new ArgumentNullException( "graph" );
            if (profile == null)
                throw new ArgumentNullException( "profile" );

            // Check supported types
            if ((types & PipelineTypes.CICAM) != 0)
                graph.DecryptionPipeline.AddPostProcessing( Decrypt );
        }
示例#24
0
 /// <summary>
 /// Ermittelt alle Erweiterungsinstanzen einer bestimmten Art.
 /// </summary>
 /// <param name="forType">Die gewünschte Art von Erweiterung.</param>
 /// <returns>Eine Auflistung aller Erweiterungen dieser Art.</returns>
 public IEnumerable <PipelineItem> GetPipelineItems(PipelineTypes forType)
 {
     // Report
     return(Pipeline.Where(p => (p.SupportedOperations & forType) != 0));
 }