-
Die
vorliegende Erfindung betrifft einen Informationsserver und ein
Verfahren zur Anordnung von Karussellinformation, insbesondere wenn
eine zusätzliche
Datei aus einer Folge einer Transportstromrepräsentation eines Datei-Karussells
eingefügt
und wobei die Art des Karussells definiert werden kann.
-
Es
wurde vorgeschlagen einen Informationsserver zum Bereitstellen von
Information in ausgewählten Kanälen eines
Transportstroms bereitzustellen. Zum Beispiel können verschiedene Datendateien
in spezifischen Kanälen
eines Transportstroms derart bereitgestellt werden, um Videodaten
und dergleichen zu senden.
-
Es
wird nun vorgeschlagen, dass eine Anzahl verschiedener Datendateien
in einer Abfolge in der Art eines Karussells übertragen werden können. Jedoch
würdigt
die vorliegende Anwendung die Notwendigkeit einer gewissen Flexibilität des Inhalts
der Seiten des Karussells. Insbesondere ist es nach vorliegender
Erfindung vorgeschlagen, dass es möglich sein sollte eine Datei
in ein anderweitig vorbestimmtes Karussell einzufügen. Unglücklicherweise
ist es durch eine Wirkungsweise der Übertragung, welche von den
original Karussell-Dateien zur Nutzladung für den Transportstrom auftritt,
nicht möglich
lediglich zusätzliche
Nutzladungs-Information einzufügen
ohne den Gesamttransportstrom zu unterbrechen.
-
Die
US 5,805,825 beschreibt
ein asymmetrisches Kommunikationsprotokoll, das eine halbzuverlässige Übertragung
mit verbesserter Verfügbarkeit
bereitstellt. Die Nachrichten werden einem Ablaufplanungs-Sender
zugeführt,
welcher die Daten für
eine spezifizierte Zeitperiode wiederholt erneut sendet. Mehrfachnachrichten
werden in einem Datei-Karussell mit jeder Nachricht, die mit jedem
Umlauf des Karussells übertragen
wird, angeordnet. Die Nachrichten werden entfernt so wie sie überholt
sind. Die Clients, die der Sendung später beitreten, setzen fort
zu den Daten im Karussell Zugang zu haben.
-
Nach
vorliegender Erfindung ist ein Verfahren zum Ausgeben der Dateien
eines Datei-Karussells
bereitgestellt, wobei das Verfahren aufweist:
Definieren jeder
Seite des Karussells mit einem Referenznamen;
Definieren einer
oder mehreren Dateiadressen für
jeden Referenznamen;
Zuordnen einer Eigenschaft zu jedem Referenznamen,
um die Art der Ausgabe zu definieren; und
sequentielles Referenzieren
zu den Seiten des Karussells und Ausgeben der durch die Adressen
identifizierten Dateien entsprechend den Eigenschaften, die mit
den jeweiligen Seiten assoziiert sind.
-
Nach
vorliegender Erfindung ist auch ein Informationsserver für die Ausgabe
der Dateien eines Datei-Karussells bereitgestellt, wobei der Informationsserver
umfasst:
ein Register für
die Definition jeder Seite des Karussells mit einem Referenznamen,
für die
Definition einer oder mehreren Dateiadressen für jeden Referenznamen und für die Zuteilung
einer Eigenschaft zu jedem Referenznamen, um die Art der Ausgabe
für diese
Seite zu definieren; und
einen Karussellerzeuger für eine sequenzielle
Referenzierung auf die Seiten des Karussells und für die Ausgabe
der Dateien, die durch die Adressen entsprechend den Eigenschaften
identifiziert sind, die mit den jeweiligen Seiten assoziiert sind.
-
Auf
diese Weise kann ein Benutzer den Aufbau eines Datei-Karussells
einfach definieren.
-
Vorzugsweise
beinhalten die Eigenschaften eine normale Eigenschaft für die Anzeige,
dass nur die durch die Adresse angesprochene Datei für die zugehörige Seite
für jede
Runde des Karussells ausgegeben wird und eine zyklische Eigenschaft
für die
Anzeige beinhalten, dass für
jede Runde des Karussells eine fortlaufend folgende Datei von den
Dateiadressen, die für
die zugehörende
Seite gelistet sind, ausgegeben wird.
-
Die
Eigenschaften können
auch eine unverzügliche
Eigenschaft beinhalten, die für
die Anzeige vorgesehen sind, dass die durch die Dateiadresse adressierte
Datei nicht nur dann ausgegeben wird, wenn das Karussell den zugehörenden Referenznamen
erreicht, sondern dass die durch die Dateiadresse adressierte Datei
für diesen
zugehörigen Referenznamen
ebenso ausgegeben wird, wann immer der Inhalt der Dateiadresse aktualisiert
wird.
-
Auf
diese Weise kann jede Seite des Karussells einfach definiert werden,
nicht nur in Bezug auf ihren Inhalt, sondern auch bezüglich wie
es bei jeder Umlaufrunde des Karussells ausgegeben wird.
-
Die
vorliegende Erfindung wird aus der nachfolgenden Beschreibung, die
nur auf Beispielsbasis angegeben ist, mit den beigefügten Zeichnungen
klarer verstanden, in welchen:
-
1 ein
sendendes Netzwerk darstellt, in welchem die vorliegende Erfindung
beherbergt werden kann;
-
2 den
Play-Out-Abschnitt eines Informationsservers darstellt, in welchem
die vorliegende Erfindung beherbergt werden kann;
-
3 eine
Anordnung des Informationsservers darstellt, in welchem die vorliegende
Erfindung beherbergt werden kann;
-
4A und
B einen Informationsserver darstellen, in welchem die vorliegende
Erfindung beherbergt werden kann;
-
5 ein
Objekt/Datei-Karussell darstellt;
-
6 eine
Anreihung von angenommenen Zeitschlitzen zum Bestimmen der Priorität von Datenvorgängen darstellt;
-
7 den
Aufbau von DVB-Abschnitten von Dateien darstellt; und
-
8 eine
Abhängigkeitsanordnung
für die
Datenübertragungen
darstellt.
-
Die
folgende Beschreibung betrifft einen Informationsserver, auf den
die vorliegende Erfindung angewendet werden kann. Insbesondere ist
eine Aufbauanordnung für
einen DVB-konformen Datenserver, genannt Informationsserver, der
fähig ist
DVB-konforme Transportströme zu erzeugen,
die die DSMCC-Daten und die Objekt-Karusselle enthalten. Zusätzlich ist
der Informationsserver zum Unterstützen der dynamischen Aktualisierung
des Inhalts im Inneren eines DSMCC-Daten- und Objekt-Karussells vorgesehen,
während
es ausströmt.
-
1 zeigt
einen Teil eines DVB-Systems, in welchem der Informationsserver
beherbergt ist. Jedoch sollte es geschätzt werden, dass der Informationsserver
auch in anderen DVB-Netzwerken beherbergt werden kann, zum Beispiel
verkabelten und terrestrischen, und kann auch in anderen Nicht-DVB-Netzwerken
beherbergt werden.
-
Ein
Play-Out-Abschnitt 2 kann eine Anzahl von Video/Audio-Quellen 4,
wie auch von Live-Quellen 6 beherbergen. Die Daten von
diesen Quellen, beispielsweise in Form von MPEG2-Transportstrompaketen, werden
in einen Multiplexer 8 eingespeist und von dem Play-Out-Abschnitt 2 ausgegeben.
Der gemultiplexte Datenstrom wird in einen Modulator 10 zur Übertragung
eingespeist, in diesem Beispiel von einem Satellit 12. Das
Signal wird dann von der Konfigurationsbox 14 eines Fernsehers 16 empfangen.
-
Die
Signale von einer Anzahl von anderen Modulatoren 10', 10'' etc. können zusammen eingespeist und
zum Satellit 12 übertragen
werden.
-
In
diesem System ist es auch möglich
einen Informationsserver 18 bereitzustellen. Genau wie
die Video/Audio-Quellen 4, 6, stellt der Informationsserver 18 die
Daten bereit, beispielsweise in Form von MPEG2-Transportstrompaketen,
dem Multiplexer 8 zum Einfügen in den Datenstrom für die Übertragung.
Der Informationsserver kann verwendet werden jegliche Arten von
Daten zu senden, aber insbesondere MHEG5-Anwendungen, HTML-Seiten, Java-Anwendungen;
IRD-Software-Aktualisierungen und andere Datendienste in Form von
DSMCC-Objekten auf Datei-Karussellen. Wie dargestellt, ist der Informationsserver 18 mit
einem Host 20 ausgestattet, welcher zum Steuern des Verhaltens
des Informationsservers 18 benutzt wird, zusammen mit dem
Inhalt und der Art der Datenausgabe des Informationsservers 18.
-
Der
Informationsserver 18 wird durch den Hostcomputer gesteuert,
der einiges Steuernetzwerk verwendet, solches wie TCP/IP über das
Ethernet. Die erzeugten Transportströme werden über eine Art Strömungsnetzwerk
heraus gespielt, solches wie Ethernet, DVB ASI, DVB LVDS oder ATM
zu den Empfängern (PC's, STB's etc.).
-
2 stellt
die gesamte Aufbauarchitektur des Informationsservers dar.
-
Ein
API-Server 22 empfängt
die Steuerungssignale und die Daten von einem externen Hostrechner. Die
Daten werden zu einer Speichereinheit 24 für eine nachfolgende
Wiedergewinnung übertragen.
Zumindest ein Stromgenerator 26 ist für die Ausgabe eines MPEG2-Datenstroms
vorgesehen. Somit empfängt
der API-Server im Betrieb die Daten, beispielsweise eine Serie von
Bildern, und überträgt die Daten
dieser Bilder zum Speicher 24. Jeder von den Stromgeneratoren 26 erzeugt,
gesteuert von dem API-Server 22,
einen Datenstrom, basierend auf einer Beschreibung des Karussells.
Insbesondere empfängt
der API-Server 22 die Steuerung von einem externen Hostrechner
und, umgekehrt, steuert geeignet die Stromgeneratoren 26.
Wie später
beschrieben wird, können
die Stromgeneratoren 24 derartige Karussellerzeuger aufweisen,
um die Daten von dem Speicher 24 in korrekter Reihenfolge
zu übertragen.
-
Die
Zweckbestimmung des API-Servers ist eine Software-Schnittstelle
bereitzustellen, die ferntechnisch einem Hostcomputer (z.B. einem
PC) über
TCP/IP zugänglich
ist. Die Software-Schnittstelle ist unter Verwendung eines RPC-Protokolls
realisiert und versorgt den Benutzer des Informationsservers mit
einem Satz von Software-Abstraktionen,
die dem Benutzter ermöglichen
Objekt- und Datei-Karusselle in einer Weise zu definieren, die unabhängig von
dem Transportbitstrom ist, die aber eher auf die konzeptionelle
Aufbauanordnung der Karusselle fokussiert ist, angefangen von dem
Inhalt, der durch die Karusselle gesendet werden muss.
-
Zusätzlich verwaltet
der API-Server die Inhaltdaten, welche auf der Inhaltplatte des
Informtionsservers vorhanden sind.
-
Von
einem architekurtechnischen Gesichtspunkt aus, ist der API-Server
als ein Einzel-Thread-Prozess realisiert, der zwei Hauptmodule enthält: eine „RPC-Schicht" und eine „API-Implementierung". Die „RPC-Schicht" verwaltet die Steuernetzwerkverbindung
mit einem oder mehreren Hostcomputern. Jede Verbindung wir eine
Sitzung (Session) genannt. Sie empfängt die RPC-Anfragen von der
Hostcomputer-Sitzung, erstellt eine serielle Reihenfolge der Anfragen,
prüft ob
sie gültig
sind, entordnet die Daten (Argumente) für die Anfragen, ruft einen
geeigneten Eingangspunkt in der „API-Implementierung" auf, empfängt das
Ergebnis (oder den Fehler) von der API-Implementierung, ordnet die
empfangenen Ergebnisse in eine RPC-Antwort ein und sendet schließlich die
Antwort zurück
zum Hostcomputer. Die API-Implementierung stellt einen Satz von Funktionen
bereit, die die Funktionalität
des Informationsservers API umsetzen. Sie interagiert mit der Inhaltplatte,
liest/schreibt Daten in diese Platte und prüft die Gültigkeit der Argumente von
jedem API-Anruf.
-
Die Übertragung
der Ströme
von den Stromgeneratoren 26 zum Multiplexer des Play-Out-Abschnitts 2 kann
eine Anzahl verschiedener Formen annehmen. Es wird vorgeschlagen,
dass die Strömung
als eine separate Einheit dem Informationsserver bereitzustellen
sei. Somit kann die Strömung
ausgewählt
werden aus, beispielsweise, DVB-ASI via einer PRISM-Schaltung (wie
durch Sony Digital Network Solutions Japan produziert), DVB-LVDS,
ATM oder das Ethernet.
-
Es
wird vorgeschlagen, dass der Informationsserver als ein standardisierter
4U 19 Zoll Rack-Schrankeinbau bereitgestellt wird. Das Steuernetzwerk
zwischen dem Hostcomputer und dem Informationsserver kann, zum Beispiel,
Ethernet oder ATM sein.
-
3 zeigt
wie ein Hostcomputer verwendet werden kann, um beliebige Anzahl
von Informationsservern zu steuern, wobei jeder eine Anzahl von
Strömen
produziert.
-
4 zeigt weitere Details des Informationsservers
mit Bezug zu nur einem Stromgenerator. Der API-Server 22 enthält das RPC
(Remote Procedure Call) Protokoll. das den Zugang zu den API's durch den Hostcomputer
ermöglicht.
Es ist auch möglich,
dass die Steuer-API's
mit IIOP laufen können,
da dies populärer wird.
Somit empfängt
der API-Server 22 die Daten und die Steuerung von dem entfernten
Hostcomputer. Der API-Server 22 läuft auch unter einer Betriebssystem-Abstraktionsschicht
oder OSAL. Das ist vorgesehen, um dem Informationsserver zu ermöglichen
unter einer Anzahl verschiedener Betriebssysteme zu laufen. Insbesondere
ist es, um den Informationsserver anzupassen auf verschiedenen Betriebssystemen
zu laufen, nur notwendig die OSAL auszutauschen.
-
Der
Stromgenerator 26 ist befähigt rohe Transportstromdaten
auszugeben. Insbesondere unter der Anweisung des API-Servers 22 ruft
der Stromgenerator 26 die Daten von dem Speicher 24 lediglich
ab und gibt sie ohne jegliches Wissen über deren Inhalt aus. Jedoch
ist es auch beabsichtigt, dass der Stromgenerator 26 befähigt sein
soll Karusselle aufzubauen, zum Beispiel die DSMCC-Objekt-Karusselle
und DSMCC-Daten-Karusselle. Daher beinhaltet der Stromgenerator 26 zumindest
einen Karussellerzeuger 28.
-
4B stellt
einen Stromgenerator dar. Der Stromgenerator ist für die dynamische
Bildung des Transport-Bitstroms zuständig, angefangen mit der konzeptionellen
Beschreibung des Daten/Objekt-Karussells. Die Aufbauarchitektur
des Stromgenerators besteht aus einer Anzahl von im Wettbewerb zueinander
laufenden Threads. Es gibt folgende Threads:
- 1.
SGMain: dieser Thread ist zuständig
für die
Kommunikation mit dem API-Server. Er empfängt Anweisungen von dem API-Server
ein Objekt-Karussell zu starten oder zu stoppen, ein Karussell aus
einem laufenden Strom fallen zu lassen oder etwas von dem Inhalt
im Inneren eines laufenden Stroms zu aktualisieren. Zusätzlich ist
der SGMain-Thread
auch für
die Verwaltung anderer Threads zuständig. Das verwirklicht das Starten/Stoppen
dieser Threads und die Steuerung derer Synchronisation.
- 2. Karussellerzeuger (CB): dieser Thread ist zuständig zum
Aufbauen der (binären)
DSMCC-Abschnitte, die das Objekt-Karussell bilden. Der CB-Thread
empfängt
die Karussellbeschreibung von dem SGMain-Thread. Sobald die DSMCC-Abschnitte
aufgebaut sind, werden sie als Payloads dem Mux-Thread geliefert
(siehe unten). Der CB-Thread kommuniziert auch mit dem SI-Thread,
um die korrekte Serviceinformation in die Tabellen einzufügen, die
durch den SI-Thread verwaltet werden.
- 3. SI: dieser Thread ist für
die Erzeugung und Aktualisierung der Serviceinformations(SI)-Tabellen
zuständig.
Er baut dynamisch die MPEG2-Abschnitte auf, die diese SI-Tabellen
ausmachen, und liefert die Abschnitte dem Mux-Thread als Payloads.
Gegenwärtig
werden zwei Tabellen durch den SI-Thread verwaltet: PAT und PMT.
Der CB-Thread [SI-Tread]
empfängt
Anfragen von dem CB-Thread, um die Programmnummern in dem PMT zu
reservieren, die PID's
für das
Karussell zu reservieren und Beschreibungen für den PMT hinzuzufügen oder
zu löschen,
die benötigt
werden, um das Karussell zu identifizieren.
- 4. Mux: dieser Thread empfängt
Payloads von dem CB- und SI-Thread und multiplext den Payload in
die MPEG2-Transport-Strompakete. Zusätzlich kommuniziert der Mux-Thread
mit dem physikalischen Vorrichtungstreiber, um die Transport-Strompakete über die
physikalische Schnittstelle Ethernet, ASI, ATM heraus zu pumpen.
-
Jede
Komponente in dem Stromgenerator (SGMain, SI, Karussellerzeuger,
Mux) ist ein separater Thread, der gleichzeitig mit den anderen
Threads läuft.
Der SI, Karussellerzeuger arbeiten in einem „Push/Schiebe" Betriebsmodus. Sie
berechnen Teile des Transport-Bitstroms und schieben sie voran zum Mux.
Der Mux-Thread arbeitet in einem „Pull/Zug" Betriebsmodus. Sobald die Daten entweder
von dem SI oder von den Karussellerzeuger verfügbar sind, zieht er diese Daten
aus und startet das Multiplexen der Payloads in die Transport-Strompakete.
-
Jeder
Karussellerzeuger 28 ist befähigt ein Karussell von Informationen
aufzubauen, beispielsweise, wie in 5 dargestellt.
Der Karussellerzeuger baut die Transport-Stromdaten geeignet zum Übertragen
in einer Rotation einer Serie von DSMCC-Dateien auf. Zum Beispiel kann jede
Seite, wie in 5 dargestellt, MHEG- oder HTML-Dateien
oder Java-Anwendungen aufweisen. Als ein Ergebnis beinhaltet der
durch den Stromgenerator produzierte Strom jede von diesen Seiten
der Reihe nach.
-
Es
ist für
den Karussellerzeuger auch möglich
Unter-Karusselle aufzubauen, derart dass bei jeder Rotation des
Hauptkarussells von Seiten eine spezifische Seite selbst durch eine
Serie von Unter-Seiten rotiert.
-
Da
jeder Ausgabe-Strom eine Anzahl verschiedener Karusselle enthalten
kann, kann auch eine Anzahl verschiedener Karussellerzeuger 28 bereitgestellt
werden. Der Multiplexer/Verpacker 30 ordnet die Daten von
verschiedenen Karussellerzeugern 28 in den Ausgabestrom
ein.
-
Wie
in 4A und B gezeigt, benutzt der Stromgenerator 26 auch
die Betriebssystem-Abstraktionsschicht. Außerdem benutzt er eine Treiber-Abstraktionsschicht.
Auf diese Weise, wie mit dem Betriebssystem, kann der Ausgabetreiber
ohne einer Änderung
des Gesamtaufbaus des Informationsservers geändert werden. Statt dessen
ist es lediglich notwendig die Treiberausführung zu ändern.
-
Der
Treiber 32 liefert die Transport-Stromdaten zu einer DVB-Kodierschaltung.
-
Jeder
von den Karussellerzeugern 28 kann mit seinen eigenen Daten
operieren, wobei der Multiplexer die Ablaufkoordination zwischen
den verschiedenen Karussellen des Transportstroms handhabt.
-
Die
Karussellerzeuger haben effektiv deren eigene Speicher. In der Tat,
nachdem die Seiten des Karussells aus den Daten von dem Speicher 24 aufgebaut
sind, können
die Transport-Stromdaten dieser Seiten durch die Karussellerzeuger
gespeichert werden. Auf diese Weise, wenn eine Seite eines Karussells
unter der Anweisung des API-Servers
von dem Hostcomputer geändert
wird, kann es unnötig
sein die Daten des ganzen Karussells neu zu berechnen, sondern nur
der von geänderten
Seiten. Sogar wenn die Daten einer Seite abhängig von anderen Seiten sind,
wird es vorgeschlagen eine Abhängigkeitsstruktur
derart einzugliedern, dass, noch einmal, es notwendig ist die Daten
für die
Seiten, welche eine Änderung
erfordern und nicht für
alle Seiten neu zu berechnen.
-
Jeder
Karussellerzeuger 28 liest den Inhalt und Inhaltsbeschreibungen,
setzt die DSMCC-Objekt-Karusselle zusammen und bereitet geeignete
DSI, DII oder DDB-Abschnitte
vor.
-
Der
SI-Tabellen-Manager 34 ist zum Verwalten der PAT/PMT-Abschnitte,
Programmnummern und PID's
vorgesehen. Der Multiplexer/Verpacker 30 ist zum Aufspalten
der Abschnitte in Pakete und zum Zusammensetzen der Pakete in die
Schlitze für
den Treiber 32 vorgesehen.
-
Wie
oben erwähnt,
beinhaltet der Informationsserver vorzugsweise eine Betriebssystem-Abstraktionsschicht
OSAL. Das kann eine objektorientierte, C++ basierende Klassenbibliothek
sein. Die OSAL wird vorgeschlagen, die eine API-Abstraktion bereitstellt, die einige
von den wichtigsten Betriebssystem-Diensten abstrahiert, die durch
verschiedene Betriebssysteme wie Windows 95, Windows NT, UNIX, LINUX
etc. angeboten werden. Es wird vorgeschlagen, dass die OSAL Abstraktionen
für die
Threads, Semaphore, Dateien, Dateiordner, Prozessoren, Dateisystem
unabhängige
Pfadnamen und Interprozess-Nachrichten-Warteschlangen bereitstellt.
-
Die
OSAL-Thread-Abstraktion unterstützt
die Erschaffung und Vernichtung unabhängiger Ausführungs-Einheiten innerhalb
des Adressraums eines einzelnen Prozesses. Die Thread-Ablaufplanung
folgt einem einfachen Prioritätsschema,
das auf einer diskreten Anzahl von Prioritätsklassen basiert.
-
Die
OSAL-Semaphor-Abstraktion unterstützt den Intra-Prozess, gebundene
und ungebundene Zähler-Semaphore
und die verknüpften
Warte/Signal Vorgänge,
die zum Synchronisieren des Ausführungszustands
verschiedener Threads benutzt werden können.
-
Die
OSAL-Daten/Datenordner-Abstraktionen stellen ein einfaches virtuelles
Dateisystem mit einer hierarchischen Ordnerstruktur und Lese/Ausführe Datei/Dateiordner
Erlaubnisszuteilungen. Die Dateisystem unabhängigen Pfadnamen stellen ein
Operationssystem unabhängiges
Namenschema bereit, das auf verschiedene physikalische Dateisystem-Anordnungen
abgebildet werden kann. Vorgänge
werden zum Erzeugen/Löschen
von Dateien, Lesen/Schreiben von Byte-Folgen von/in Dateien, Positionieren
auf einer spezifischen Bytenummer und Abfragen der Größe einer
Datei bereitgestellt. Vorgänge
an einem Ordner beinhalten Erzeugen/Löschen und Wiederholung an den
bestimmenden Dateien/Dateiordnern.
-
Die
OSAL-Prozess-Abstraktion kann das Konzept virtueller Adressräume und
Kode/Daten-Segmente unterstützen,
die benötigt
werden ein Teil des Adressraums zu sein. Vorgänge können bereitgestellt werden, um
einen Prozess zu Starten/Stoppen und seinen Status (laufend, beendet)
abzufragen.
-
Die
OSAL-Warteschlangen-Abstraktion kann ein Mittel zum Ausführen der
Inter/Prozesskommunikation bereitstellen, die auf den Byte orientierten,
erst-rein-erstraus Nachrichten-Warteschlangen basieren. Vorgänge können bereitgestellt
werden, um Bytestrings variabler Länge in oder aus der Warteschlange
einzufügen
oder abzufragen und die Gesamtanzahl von in jeder Warteschlange
verfügbaren
Nachrichten/Bytes zu überprüfen.
-
Jede
von den OSAL-Abstraktionen kann durch eine unterschiedliche, streng
geschriebene C++ Handle-Klasse unterstützt werden. Die Handle-Klassen
liefern eine objektorientierte Sicht auf die Betriebssystem-Abstraktionen.
Dank den streng geschriebenen Anwendungen, die im oberen Bereich
von OSAL geschrieben sind, profitiert die API von der stringenten Überprüfung zur Übersetzungszeit
(Kompilierungszeit). Instanzen von Handle-Klassen repräsentieren
Betriebssystem abhängige
Einheiten und Betriebssystem-Dienste werden als Methoden der Handle-Klassen repräsentiert.
Die Umsetzung der Handle-Klassen ist leichgewichtig, effizient und übertragbar
quer über
alle Plattformen, die den ANSI C++ Standard unterstützen, weil
sie eine Tieflevel-API verwendet, deren Ausführung Betriebssystem (Windows
95, Windows NT, Unix) spezifisch ist. In den meisten Fällen bildet
die Tieflevel-API direkt auf die Dienste ab, die durch das darunter
liegende Betriebssystem unterstützt
sind, so dass der durch die OSAL erzeugter Overhead minimal ist.
-
Die
OSAL-Klassenbibliothek und API können
verwendet werden, um eine Quer-Plattform-Ausführung eines
DVB-konformen Datensendeservers zu bilden, der die Lieferung von
HTML-, Java-, MHEG-Anwendungen und anderer Daten via DSMCC-Objekt- und Datei-Karusselle
unterstützt.
Die Thread-Abstraktion kann benutzt werden (a) mehrfache Threads,
die den Bitstrom des DSMCC-Objekt-Karussells aus den Inhaltdaten
erzeugen, (b) einen Thread, der zur Erzeugung der DVB-Service-Information abgeleitet
wird, und (c) einen Thread, der die DSMCC-Abschnitte und Tabellendaten
in die Transportstrompakete multiplext, zu unterstützen. Die
Semaphor-Abstraktion
wird benutzt die Synchronisation zwischen diesen Threads zu verwirklichen. Die
Datei- und Ordner-Abstraktionen werden benutzt den Zugang zum durchgehenden
Inhalt auf dem Dateisystem des Servers zu verwirklichen. Die Prozess-Abstraktion wird
benutzt einen Prozess, der für
die Netzwerk-Kommunikation reserviert wird und einen anderen Prozess,
der das Erzeugen der ausgehenden Transportströme des Servers handhabt, umzusetzen.
Die Reihen-Abstraktion wird verwendet, um die Kommunikation zwischen
dem Netzwerk-Stapelspeicher und der Erzeugung des Bitstroms umzusetzen.
Mit Hilfe der OSAL-Klassenbibliothek und der API läuft der
Datensende-Serveranwendungs-Kode unmodifiziert auf jedem von den
Betriebssystemen, auf dem die OSAL derzeit unterstützt wird.
-
Wie
oben erklärt,
kann jeder Stromgenerator 26 eine Anzahl von Karussellerzeugern 28 haben.
Es kann oft gewünscht
sein, dass die Seiten eines Karussells öfter übertragen werden sollen, als
die Seiten eines anderen Karussells. Um das zu tun kann der Multiplexer/Verpacker 30 in
den Transportstrom Pakete eines Karussells öfter als andere einbringen.
Anhand eines Beispiels, wenn es nur zwei Karusselle gibt und das
eine die dreifache Gewichtung des anderen hat, teilt beim Füllen der
Transportstrom-Pakete
der Multiplexer/Verpacker 75% der Gewichtung dem einen Karussell
zu und wird drei Pakete mit den Daten von diesem Karussell für jeden
einen Paket füllen,
der mit den Daten des anderen Karussells gefüllt wird.
-
Unglücklicherweise
ist dieses System rein rechnerisch teuer, wenn Änderungen an der Art der Daten gemacht
werden, die im Transportstrom übertragen
werden. Zum Beispiel, für
das oben angegebene Beispiel, wenn ein drittes Karussell mit einer
gleichen Wichtigkeit wie das Karussell von unterer Wichtigkeit,
das bereits verwendet wird, hinzugefügt wird, dann muss das System
neu berechnen, dass den drei Karussellen jeweils 60%, 20% und 20%
der Übertragungszeit
gegeben werden soll. Mit anderen Worten, wann immer die Wichtigkeit
des Karussells geändert
wird oder Karusselle hinzugefügt
oder gelöscht
werden, muss die Zuteilung der Proportionen, die durch den Multiplexer/Verpacker 30 ausgeführt wird,
neu berechnet werden.
-
In
dem Informationsserver wird ein neuer Algorithmus zum Ablaufplanen
der Pakete vorgeschlagen.
-
Mit
Bezug auf 6 wird eine Datenanreihung zum
Zuteilen der Proportionen der Wichtigkeit verschiedener Datenquellen
dargestellt.
-
Sie
ist als eine Serie von angenommenen Zeitschlitzen t eingerichtet.
Jeder Zeitschlitz der Anreihung erlaubt die Registrierung einer
oder mehrerer Datenquellen, beispielsweise Karusselle, der Rohdaten
von dem Speicher 24 etc.. Bei der Zuteilung einer relativen
Priorität
zu jeder Datenquelle, die auf der angenommenen Frequenz basiert,
können
für verschiedene
Datenquellen die Prioritäten
einfach gesetzt werden.
-
Im
dargestellten Beispiel ist der Datenquelle 1 die Priorität „4" zugeteilt worden
und deshalb kommt sie alle vier angenommene Zeitschlitze vor. In
gleicher Weise ist der Datenquelle 2 eine Priorität von „3" gegeben und der
Datenquelle 3 eine Priorität
von „2" gegeben worden.
Der Multiplexer/Verpacker 30 bildet dann die MPEG-Pakete
durch eine sequentielle Abfolge der Datenquellen, die entlang der
Anreihung genannt sind, wobei jegliche leeren angenommenen Zeitschlitze
ignoriert werden. Zum Beispiel, wenn man den in 6 dargestellten
Datenquellen folgt, füllt
er ein Paket mit Daten der Datenquelle 1, dann ein Paket mit den
Daten der Datenquelle 2, dann ein Paket mit den Daten der Datenquelle
3, dann ein Paket mit den Daten der Datenquelle 1 etc.. Auf diese
Weise werden die Daten der Datenquelle 1 drei mal übertragen
für alle
viermalige Übertragung der
von der Datenquelle 2 und für
alle sechsmalige Übertragung
der von der Datenquelle 3.
-
Bei
der Verwendung der Anreihung, wie oben beschrieben, wird keine Neuberechnung
erforderlich, wenn Datenquellen hinzugefügt oder gelöscht werden oder wenn die Priorität einer
Datenquelle geändert
wird. Zum Beispiel, wenn die Datenquelle 3 entfernt wird, wird die
relative Priorität
zwischen den Datenquellen 1 und 2 beibehalten. In gleicher Weise,
wenn eine vierte Datenquelle mit einer sehr hohen Priorität übertragen
wird, zum Beispiel Zuteilung „1", dann sogar obwohl
die Datenquellen 1, 2 und 3 alle mit der halben Frequenz übertragen
werden, als vorher, bleiben deren relative Prioritäten und
Frequenzen die gleichen. Somit ist das System der Prioritätssetzung
der Datenvorgänge
rein rechnerisch effizienter gemacht.
-
Bei
der Benutzung dieses Systems in den Stromgeneratoren 26 des
beschriebenen Informationsservers ist es dann einfach verschiedenen
Datenquellen Bandbreiten zuzuteilen, solchen wie den verschiedenen Karussellerzeugern 28.
Jedoch ist es gleichermaßen
auf die Zuteilung der Prozessorzeit einer CPU anwendbar. Insbesondere
können
verschiedenen Aufgaben/Aufträgen,
die eine Ausführung
erfordern, die Prioritäten zugeteilt
werden, auf die gleiche Weise, wie die Bandbreite zugeteilt wird.
-
Es
wird vorgeschlagen, dass die Fähigkeit
Ressourcen zu erhalten, beispielsweise die Prozessausführung oder
die Bandbreite, nicht nur auf einer proportionalen Teilung der Ressourcen
zu basieren braucht, sondern auch auf einer Latenzzeit des anfänglichen
Zugangs. Mit anderen Worten, einige Prozesse können ein dringenderes Handeln
erfordern, als andere. Zum Beispiel, die niedrige Latenzzeit-Zuteilung
der CPU-Prozesszeit
ist wichtig für
die Sicherstellung eines reibungslosen Betriebs der Multimedien-Anwendungen.
Wo zwei Prozessen, beispielsweise einer Textverarbeitung und einer
Videoanzeige, eine vorbestimmte Proportion der Prozessorzeit zugeteilt
wird, kann es immer noch so sein, dass es wichtiger ist der Videoanzeige
einen schnelleren Zugang zur Prozessausführung zu gewähren.
-
Um
diesem Bedarf Rechnung zu tragen, kann jedem Ressourcen-Verbraucher
oder Datenvorgang ein zusätzlicher
Parameter zugeordnet werden, ob dies eine Datenprozessausführung oder
Datenübertragung
ist. Dieser Parameter wird beabsichtigt die Latenz des Ressourcenzugangs
zu definieren.
-
Deshalb
wird jeder Ressource oder einem Datenvorgang ein Latenzwert gegeben,
derart, dass eine Anzahl von Ressource-Verbrauchern verglichen werden
kann, um zu bestimmen welcher zuerst durchgeführt werden soll oder, auf die
gleiche Weise, eine Anzahl von Ressource-Verbrauchern kann verglichen
werden, um zu sehen welcher zuerst übertragen werden soll. Im Falle
des oben diskutierten Informationsservers, wenn es ein sehr wichtiges
Stück von
Information gibt, welches so schnell wie möglich übertragen und empfangen werden
soll, kann der geeigneten Datenquelle ein sehr hoher Latenzwert
vergeben werden, derart, dass diese Daten so schnell wie möglich durch
den Multiplexer/Verpacker 30 in den Datenstrom eingefügt werden.
-
In
den oben beschriebenen Karussellerzeugern 28 bildet jeder
Karussellerzeuger eine Vielzahl von DVB-Abschnitten zum Beliefern
des Multiplexers/Verpackers 30. Diese Abschnitte beinhalten
die Daten, die das Karussell von diesem spezifischen Karussellerzeuger
repräsentieren.
Es ist gewünscht,
dass der Informationsserver oder der Karussellerzeuger selbst fähig sein
soll eine oder mehrere Seiten innerhalb seines Karussells zu ändern oder
auszutauschen. Jedoch, wie oben erklärt, wenn ein Karussellerzeuger 28 ein
geeignetes Karussell aus den Daten im Speicher 24 aufgebaut
hat, werden diese Daten nicht neu berechnet, sondern lediglich für eine zyklische Übertragung
gespeichert. Um eine Seite oder eine Datei im Karussell zu ändern ist es
möglich
alle Daten für
dieses Karussell neu zu berechnen. Jedoch kann das in einer unerwünschten
Verzögerung
resultieren, bevor das neue Karussell übertragen wird.
-
7 zeigt
den Prozess der Datenumsetzung, der durch den Karussellerzeuger
durchgeführt
wird. Die Datendateien haben Kopfabschnitte, die innen hinzugefügt werden,
um BIOP's als einen
Teil eines DSMCC-Objekt-Karussells zu bilden. Diese sind dann zusammen
gruppiert, um die Module für
das DSMCC-Daten-Karussell zu bilden, welche dann der Reihe nach
in DVB-Abschnitte zum Passieren zum Multiplexer aufgeteilt werden.
-
Wie
anzuerkennen ist, wenn die Datei 1 geändert wird, dann wird der BIOP
der Datei 1 auch geändert, zusammen
mit den resultierenden Modulen und Abschnitten. Jedoch werden die
BIOP's der Dateien
2 und 3 unverändert
bleiben. Deshalb ist es nach einer Änderung an der Datei 1 nicht
notwendig für
den Karussellerzeuger die BIOP's
der Dateien 2 und 3 neu zu berechnen.
-
Um
dem Karussellerzeuger 28 zu ermöglichen die unnötige Berechnung
zu vermeiden, wird ein Abhängigkeitsmechanismus
vorgeschlagen. Durch die Verwendung von diesem Mechanismus ist es
möglich
die Bitstrom-Repräsentation
eines DSMCC-Objekt-Karussells
durch Verwendung von Aktualisierungen nur seiner bildenden Bestandteile,
d.h. Dateien, Dateiordner etc.. schnell zu aktualisieren.
-
Die
Abhängigkeits-Struktur
wird im Karussellerzeuger durch eine Serie von Knoten und Zeigern
eingerichtet. Insbesondere besteht das Abhängigkeits-Netzwerk aus zwei
Typen von Einheiten, nämlich
aus (a) den Abhängigkeitsknoten,
die die Zeiger, genannt Inhalts-Referenzen, in die spezifischen
Unterteile der Bitstrom-Repräsentation
des DSMCC-Objekt-Karussells speichern, und (b) den Abhängigkeits-Verknüpfungen, die
anzeigen, wie ein Satz von Inhalts-Referenzen verwendet wird einen
anderen Satz von Inhalts-Referenzen zu berechnen. Die Abhängigkeits-Knoten
selbst kommen in zwei Typen vor, nämlich (1) Primärknoten,
die die Inhalts-Referenzen auf die bildenden Bestandteile (z.B.
die DSMCC-Datei und Ordner-Objekte) eines DSMCC-Objekt-Karussells enthalten und (2)
berechnete Knoten, die die Übertragungen
auf die anderen Inhalts-Referenzen anderer Knoten beinhalten. Eine Übertragung
ist auf einen Satz von Inhalts-Referenzen und Ergebnissen in einem
Satz neuer Inhalts-Referenzen angepasst, die auf die neuen Teile
des DSMCC-Objekt-Karussell-Bitstroms zeigen.
-
Da
ein Karussellerzeuger die geeigneten Daten aufbaut, werden die Abhängigkeits-Verknüpfungen
so gespeichert, um anzugeben wie ein Teil des DSMCC-Objekt-Karussell-Bitstroms
(z.B. ein Modul) zu einem anderen Stück des Bitstroms (z.B. der
komprimierten Entsprechung des gleichen Moduls) führt. Die
Abhängigkeits-Verknüpfungen
werden eingerichtet, wenn die Übertragungen
durch die berechneten Knoten des Abhängigkeits-Netzwerks ausgeführt werden.
Insbesondere wenn eine Übertragung
eines Abhängigkeitsknotens
die Inhalts-Referenzen verwendet, die mit einem anderen Knoten verknüpft sind
(entweder ein Primärknoten
oder ein berechneter Knoten) wird eine Abhängigkeit zwischen dem benutzten
Knoten und dem einen, der die Übertragung
berechnet, eingerichtet. Eine Abhängigkeits-Verknüpfung wird
mit Bezug auf den verwendeten Knoten gespeichert, wobei sie den
Knoten anzeigt, für
den sie benutzt wurde.
-
Die
Abhängigkeits-Verknüpfungen
erlauben dem Abhängigkeitsmechanismus
schnell den Satz von Übertragungen
zu bestimmen, die neu anzupassen sind, um einen neuen Bitstrom neu
zu berechnen, wenn bildende Bestandteile des Objekt-Karussells sich ändern, d.h.
wenn die Daten der Primärknoten
sich verändern.
-
Wenn
eine Aktualisierung ausgeführt
wird, werden einige von DSMCC-Datei- und Ordner-Objekten verändert. Als
ein Ergebnis werden auch die Primärknoten, die diese Änderungen
betreffen, verändert.
Für diese
Primärknoten,
für welche
eine Änderung
eingetreten ist, werden die Abhängigkeits-Verknüpfungen,
die mit diesen Primärknoten
verknüpft
sind, verfolgt, um jegliche resultierende berechnete Knoten zu markieren.
Dort wo ein berechneter Knoten erreicht wird, wird die Abhängigkeits-Verknüpfung dieses
berechneten Knotens verwendet, um sich wieder vorwärts zu jeglichen
weiteren berechneten Knoten zu bewegen. Alle berechneten Knoten,
welche auf diese Weise erreicht werden, werden gelöscht, zusammen
mit jeglichen Vorwärts-Abhängigkeits-Verknüpfungen.
Als ein Resultat hat das Abhängigkeits-Netzwerk
bestimmte verknüpfte
berechnete Knoten leer. Der Karussellerzeuger wiederholt deshalb
den Original-Berechnungsprozess für jene berechneten Knoten,
welche nun leer sind. Als ein Ergebnis, wenn die berechneten Knoten
deren Übertragungen
neu anwenden, um einen neuen Satz von Inhalts-Referenzen neu zu
berechnen, werden die Abhängigkeits-Verknüpfungen
erneut von den Knoten eingerichtet, auf die sie sich bezogen haben.
-
Dort
wo die Primärknoten
nicht verändert
oder berechnete Knoten nicht gelöscht
worden sind, kann dann ein nacheinander folgend berechneter Knoten
lediglich zurück
auf die unveränderten
Primär-
oder berechnete Knoten Bezug nehmen. Deshalb, wenn ein berechneter
Knoten nur auf die unveränderten
Primär- oder
berechnete Knoten bezogen ist, kann er direkt verwendet werden,
ohne seine Übertragung
neu anzuwenden. Solange wie die Inhalts-Referenzen, von denen das
Ergebnis abhängt,
sich nicht ändern,
kann das Ergebnis in einem aktualisierten Bitstrom direkt neu verwendet
werden, ohne es neu berechnet zu haben. Da die Teile eines Karussells,
welche nicht durch eine Aktualisierung betroffen sind, bereits in
dem Abhängigkeits-Netzwerk gespeichert
sind, erlaubt das Abhängigkeits-Netzwerk
die schnelle Aktualisierung des Inhalts eines DSMCC-Objekt-Karussells.
-
Auf
diese Weise kann der Abhängigkeitsmechanismus
verwendet werden, um Bitstrom-Repräsentationen von DSMCC-Abschnitten
auszubilden, die die Objekt-Karusselle
ausmachen. Die Bitstrom-Repräsentationen
bestehen aus einer Liste von Inhalts-Referenzen, die auf verschiedene
Abschnitte zeigen. Die Inhalts-Referenzen werden zum Multiplexer
durchgepasst, der die DSMCC-Abschnitte in einen MPEG-Transportstrom verpackt.
Der Mechanismus kann verwendet werden, um die modifizierten DSMCC-Abschnitte
neu zu berechnen, wenn die bildenden Teile des DSMCC-Objekt-Karussells
(z.B. Dateien und Ordner) sich ändern. Es
ist auch möglich
die Technik auf die DSMCC-Datei-Karusselle anzuwenden.
-
Das
ist in 8 dargestellt. Insbesondere bei einer Veränderung
des Primärknotens
n4 und einer Bezugnahme auf die Abhängigkeits-Verknüpfung ist
es offensichtlich, dass der Inhalt des berechneten Knotens n7 auch
geändert
werden muss. Bei der Bezugnahme auf die Abhängigkeits-Verknüpfung für den berechneten Knoten
n7 ist es dann auch klar, dass der Inhalt des berechneten Knotens
n8 auch geändert
werden muss. Mit dem gelöschten
Inhalt der berechneten Knoten n7 und n8 und mit dem Primärknoten
n4, der die neuen Inhalts-Referenzen enthält, wird der berechnete Knoten
n7 mit Hilfe der Inhalts-Referenzen der Primärknoten n4 und n5 neu berechnet.
Die Inhalts-Referenzen für
den berechneten Knoten n8 können
dann aus den Inhalts-Referenzen der berechneten Knoten n6 und n7
neu berechnet werden. Es wird gesehen, dass in diesem Prozess es
nicht notwendig ist die Inhalts-Referenzen für den berechneten Knoten n6
neu zu berechnen.
-
Für jeden
Stromgenerator 26 des Informationsservers ist es wünschenswert
eine weitere Flexibilität bei
der Aktualisierung der DSMCC-Datei-Objekte, die durch den Transportstrom
zu übertragen
sind, bereitzustellen.
-
Wie
oben diskutiert, beinhaltet dieser Stromgenerator 26 einen
oder mehrere Karussellerzeuger 28 und einen Multiplexer/Verpacker 30 zum
Ausbauen des resultierenden MPEG-Transportstroms. Außerdem wird
das Abhängigkeits-Netzwerk
in den Prozess der Berechnung der erforderlichen DSMCC-Abschnitte
eines DSMCC-Objekt-Karussells,
genannt Payloads, die den Bitstrom auf dem DSMCC-Level bilden eingebaut.
-
Es
ist erwünscht
ein „heißes Einfügen" der DSMCC-Datei-Objekte
bereitzustellen. Das ist ein so schnell wie mögliches Außerband-Einfügen eines
DSMCC-Datei-Objektes
in den gesendeten Bitstrom.
-
Wie
oben erklärt,
sobald die erforderlichen DSMCC-Abschnitte eines DSMCC-Objekt-Karussells
für ein
Karussell berechnet worden sind, werden sie lediglich gespeichert
und zyklisch neu übertragen.
Es wäre deshalb
nicht erwünscht
lediglich ein DSMCC-Datei-Objekt in die Objekte des Karussells heiß einzufügen, da der
Bitstrom des DSMCC-Levels dann neu kalkuliert werden müsste. Andererseits,
wird das bloße Einfügen der
DSMCC-Abschnitte für
ein heißes
Einfügen
in den bereits eingerichteten Bitstrom wahrscheinlich die Übertragung
des DSMCC-Objekt-Karussells beschädigen.
-
Der
Multiplexer durchläuft
wiederholend eine Schleife durch die Listte der berechneten Payloads
und spaltet die Payloads dynamisch in die MPEG2-Transportstrom-Pakete für die Übertragung
auf. Um das „heiße Einfügen" der DSMCC-Datei-Objekte
zu ermöglichen
werden „Einfügungspunkte" innerhalb der Payload-Liste des
kompletten Satzes von DSMCC-Abschnitten für das Objekt-Karussell definiert.
Diese „Einfügungspunkte" sind Stellenmarkierer
dafür,
wo der Multiplexer zusätzliche
Payloads für
ein Außerband-DSMCC-Datei-Objekt sicher
einfügen
kann.
-
Somit
ist der Payload für
die Außerband-Aktualisierung
berechnet und zum Multiplexer durchgeleitet. Der Multiplexer wartet
dann bis der nächste
markierte „Einfügungspunkt" verfügbar wird
und lügt
dann den Außerband-Payload
ein. Der Effekt hiervon ist die Übertragung
der restlichen Karusselldaten zu verzögern, aber nicht mit seinem
Inhalt störend
zu interagieren.
-
Wie
oben erwähnt,
ist es auch wünschenswert
eine zyklische Aktualisierung eines einzelnen DSMCC-Datei-Objektes
bereitzustellen. Mit anderen Worten, für jede Umlaufrunde der Karussell-Sendung
kann eine verschiedene Version einer speziofischen DSMCC-Datei übertragen
werden.
-
Mit
Bezug auf das oben beschriebene Abhängigkeits-Netzwerk wird die
zyklische Aktualisierung durch einen separaten Knoten im Abhängigkeits-Netzwerk
erreicht, der verwendet wird die Payloads für jede Version der DSMCC-Objekte
zu berechnen. Die komplette Liste der Payloads wird dem Multiplexer
präsentiert,
aber diese Liste ist intern in einer solchen Weise organisiert,
dass sie den nächsten
Payload-Wert liefert, wann immer der Multiplexer ihn im nächsten Zyklus
des Objekt-Karussells anfordert. Dieser Mechanismus ist extrem effizient,
da anstatt der Berechnung einer aktualisierten Version des DSMCC-Objektes
für jede
Karussellumlaufrunde ein Zeiger lediglich den passenden Payload
anzeigt.
-
Es
ist wünschenswert,
dass die Auswahl der DSMCC-Datei-Objekte mit Bezug auf die Sendeordnung, Sendefrequenz
und heiße
Aktualisierung durch den Benutzer verwirklicht wird. Um das zu tun
wird vorgeschlagen, dass die Daten auf die Art der unten angegebenen
Tabelle eingeben werden. Tabelle
1
-
Wie
zu sehen ist, besteht die Tabelle aus drei Spalten. Die erste Spalte
listet den Referenznamen eines DSMCC-Datei-Objektes auf, wie er
durch den Empfänger
der Sendung gehandhabt wird. Die komplette Liste der Referenznamen
bildet den virtuellen Namenraum, den der Empfänger handhabt. Die zweite Spalte spezifiziert
die Eigenschaft der Einheit, die durch den Referenznamen referenziert
ist. Es wird vorgeschlagen drei Eigenschaften, nämlich normal, zyklisch und
unverzüglich
bereitzustellen. Das wird unten beschrieben. Die dritte Spalte spezifiziert
eine Liste von Vollnamen, mit anderen Worten, einen physikalischen
Dateinamen.
-
Die
Eigenschaft „normal" meint, dass die
referenzierte Seite immer die gelistete Datei ausgeben wird. Andererseits,
für die
Eigenschaft „zyklisch", kann die Tabelle
mehr als einen Vollnamen enthalten, derart dass in jedem Karussellzyklus
der nächste
für diese
Seite gelistete Vollname eingeschlossen wird. Die Eigenschaft „unverzüglich" hat normalerweise
die gleiche Wirkung, wie „normal" darin, dass eine
einzelne Datei für
diese Seite übertragen
wird. Jedoch, wenn eine referenzierte Seite die Eigenschaft „unverzüglich" hat, wird, sobald eine
Aktualisierung für
diese Seite empfangen ist, die Seite als ein „heißes Einfügen" eingefügt, aber wird dann bis zu ihrer
normalen Position in dem Karussell nicht wieder erscheinen.
-
Für das oben
angegeben Beispiel definiert die Karussell-Konfigurations-Tabelle
ein logisches Karussell, bestehend aus 3 Seiten, genannt: Seite
1, Seite 2, Seite 3. Die Sendeordnung wird durch die erste Spalte definiert,
d.h. – Seite
1 – Seite
2 – Seite
3 – Seite
2 und dann zurück
zur Seite 1. Jedoch für
die zyklischen Seiten in jedem Zyklus des Karussells wird die nächste Einheit
von der Liste der Vollnamen (dritte Spalte) genommen werden. Folglich
wird von dem inhaltlichen Gesichtpunkt aus die Karussellordnung
sein: /sports/intro-/news/einheit 1-/Glücksspiel/Pferde-/news/einheit
5-/sports/intro-/news/einheit 2-Glücksspiel/Pferde-/news/einheit
6-/sports/intro-/news/einheit
3-/Glücksspiel/Pferde-/news/einheit
5-/sports/intro-/news/einheit 4-/Glücksspiel/Pferde-/news/einheit
6...
-
Der
Eingabe der Daten für
die Karussell-Konfigurations-Tabelle folgend berechnet ein geeigneter
Karussellerzeuger den erforderlichen DSMCC-Abschnitt entsprechend
dem oben diskutierten Abhängigkeits-Netzwerk.
Insbesondere werden die Seiten, die durch die Referenznamen definiert
sind, als Primärknoten
ausgewählt.
Wenn eine Seite als zyklisch zu sein definiert ist, dann wählt der
Karussellerzeuger äquivalente
Duplikat-Seiten,
die jedem Objekt des Zyklus entsprechen. Der Karussellerzeuger berechnet
dann geeignete Module für
die Seiten. Vorzugsweise, beim Berechnen der Module, werden die äquivalenten
zyklischen Seiten separaten Modulen derart zugewiesen, dass jede
zyklische Neuberechnung bei einem Minimum gehalten wird. In gleicher
Weise werden Seiten, die die Eigenschaft „unverzüglich" haben, separaten Modulen zugeordnet,
um so deren Einfügen,
wenn notwendig zu verbessern.