/// <summary>
        /// Übermittelt eine SI Tabelle zur Bearbeitung.
        /// </summary>
        /// <param name="table">Die neu empfangene SI Tabelle mit Teildaten zu einem Modul.</param>
        public void AddPartialModule(Tables.OpenTV table)
        {
            // See if module should be processed
            lock (m_Enabled)
                if (m_Enabled.Count > 0)
                    if (!m_Enabled.ContainsKey(table.ModuleIdentifier))
                        return;

            // The new module
            Module module;

            // Check for module manager inside collection
            lock (m_Modules)
                if (!m_Modules.TryGetValue(table.ModuleIdentifier, out module))
                {
                    // Create new
                    module = new Module();

                    // Connect
                    module.OnModuleComplete += ForwardComplete;

                    // Remember
                    m_Modules[table.ModuleIdentifier] = module;
                }

            // Forward
            module.AddPartialModule(table);
        }
        /// <summary>
        /// Wird aufgerufen, wenn ein Modul komplettiert wurde.
        /// </summary>
        /// <param name="lastTable">Die letzte SI Tabelle des Moduls.</param>
        /// <param name="module">Das fertiggestellte Modul.</param>
        private void ForwardComplete(Tables.OpenTV lastTable, Module module)
        {
            // Check for interested client
            Module.CompleteHandler callback = OnModuleComplete;

            // Report to client
            if (null != callback) callback(lastTable, module);
        }