Freigeben über


Lebenszyklus eines Telefoniedienstanbieters

Dieses Thema enthält eine allgemeine Übersicht über TSP-Vorgänge.

Eine Sitzung ist die Zeit, in der eine bestimmte Konfiguration gültig bleibt und Telefonievorgänge ausgeführt werden. Ein Dienstanbieter kann viele Sitzungen zwischen dem zeitpunkt des ersten Ladens und dem zeitpunkt der endgültigen Freigabe unterstützen. Für jede Sitzung verhandelt TAPI die Version der Schnittstelle, startet die Sitzung, führt Vorgänge aus und beendet schließlich die Sitzung. Der Dienstanbieter darf keine Informationen von einer Sitzung zur nächsten aufbewahren.

Nachdem die Schnittstellenversion bekannt ist, ruft TAPI die funktion TSPI_providerInit auf, um alle Betriebsparameter festzulegen. Der Dienstanbieter wird sichergestellt, dass alle Konfigurationsinformationen in der Registrierung stabil sind, wenn die TSPI_providerInit-Funktion aufgerufen wird. Die meisten Dienstanbieter lesen zu diesem Zeitpunkt alle Konfigurationsinformationen.

Normale Vorgänge können in beliebiger Reihenfolge fortgesetzt werden, nachdem der Dienstanbieter initialisiert wurde.

TAPI verhandelt gerätespezifische Informationen auf Gerätebasis. TAPI und der Dienstanbieter committen auf eine Version, wenn ein Gerät geöffnet wird.

Der Dienstanbieter kann Anforderungen zum Auswählen und Abbrechen von Erweiterungsversionen empfangen. Während eine Erweiterungsversion ausgewählt ist, funktioniert das Gerät streng nach dieser gerätespezifischen Erweiterungsversion.

Die Aushandlung einer gerätespezifischen Erweiterungsversion kann mehrmals erfolgen, sowohl vor als auch nach dem Öffnen des Geräts. TAPI übergibt einen Versionsbereich, und der Dienstanbieter wählt einen Wert aus diesem Bereich aus und gibt diesen zurück. Normalerweise hat der Dienstanbieter gerätespezifische Erweiterungen deaktiviert.

Dadurch werden sowohl TAPI als auch der Dienstanbieter für den Betrieb auf dieser Erweiterungsversionsebene committen, bis die Auswahl abgebrochen wird. Während der Zeit, in der eine gerätespezifische Erweiterung wirksam ist, sollte der Versuch, eine Erweiterungsversionsebene auszuhandeln, nur die derzeit geltende Versionsebene zulassen. Nachdem die gerätespezifische Erweiterung abgebrochen wurde, kann eine andere Version ausgehandelt und ausgewählt werden.

Telefonvorgänge innerhalb des Öffnen/Schließen-Paars sind in der folgenden Abbildung dargestellt. Einige dieser Vorgänge sind synchron, andere sind asynchron. Wenn ein Vorgang asynchron abgeschlossen wird, kann ein anderer Vorgang angefordert werden, bevor der erste Abschluss gemeldet wird. Daher können sich Vorgänge in beliebiger Weise überschneiden. Der Dienstanbieter muss schließlich den Abschluss für alle angeforderten asynchronen Vorgänge melden. Das Schließen eines Telefons erzwingt den Abschluss ausstehender asynchroner Vorgänge (möglicherweise mit einer Fehleranzeige).

Der Lebenszyklus für Leitungsgeräte ähnelt dem Lebenszyklus von Telefonen, mit der Ausnahme, dass Leitungen über eigene Aushandlungs-, Initialisierungs-, Öffnen- und Schließenverfahren verfügen. Vorgänge für geöffnete Zeilen werden durch ein eigenes Open/Close-Paar klammert. Dieses Paar befindet sich wiederum in einer Klammer zwischen demselben Initialisierungs-/Herunterfahren-Paar wie das Telefon Öffnen/Schließen.

Die Lebenszyklen von Aufrufen sind streng zwischen dem Öffnen/Schließen der Zeile, die sie enthält, in Klammern gesetzt. Die Lebensdauer von Anrufen kann auf verschiedene Arten beginnen:

  • Wird von TAPI über Funktionen wie lineMakeCall, lineSetupTransfer oder lineSetupConference angefordert.
  • Spontan entstanden beim Dienstanbieter als neue eingehende Anrufe, vom Benutzer initiierte Anrufe an einem angeschlossenen Telefontelefon oder Anrufe, die als Nebeneffekt anderer Vorgänge wie das Anhalten eines vorhandenen Anrufs generiert wurden.

Die Lebensdauer unterschiedlicher Aufrufe innerhalb derselben Leitung kann sich in beliebiger Weise überlappen. Alle Aufrufe beenden ihre Lebensdauer, wenn die TSPI-Funktion TSPI_lineCloseCall aufgerufen wird. Der Lebenszyklus mehrerer Aufrufe ist in der folgenden Abbildung dargestellt.

Lebenszyklen von Anrufen, die sich überschneiden

Ein Aufruf kann wie im MakeCall/CloseCall-Paar gezeigt in TAPI entstehen. Ein Anruf kann auch vom Dienstanbieter stammen. Der Dienstanbieter kündigt dies mit einer LINE_NEWCALL Nachricht an eine von TAPI bereitgestellte Rückrufprozedur an. In einem solchen Fall gibt TAPI seinen Bezeichner für den Aufruf zurück, der in nachfolgenden Rückrufen enthalten ist, die Ereignisse melden, die während des Aufrufs auftreten. Bei Aufrufen, deren Lebensdauer von TAPI stammt, ist dieser Bezeichner im TSPI-Vorgang enthalten, der den Aufruf erstellt.

Alle Vorgänge, die die Lebensdauer eines Aufrufs starten, führen dazu, dass TAPI und der Dienstanbieter Bezeichner für den neuen Aufruf austauschen. Bei TAPI-ausgehenden Aufrufen übergibt TAPI den Bezeichner und empfängt den Bezeichner des Dienstanbieters als Rückgabeparameter. Wenn der Aufruf vom Dienstanbieter stammt, übergibt der Dienstanbieter seinen Bezeichner an TAPI und empfängt den TAPI-Bezeichner als Rückgabeparameter.

Die folgende Abbildung bietet eine sehr allgemeine Übersicht über die Installation, Konfiguration und Entfernung von Dienstanbietern. Lebenszyklussequenzen, die sich über viele Sitzungen erstrecken. Der typische Lebenszyklus für diese Vorgänge kann mit der folgenden Zeitlinie angezeigt werden.

Installation, Konfiguration und Entfernung von Dienstanbietern

Der typische Installations- und Entfernungslebenszyklus wird über mehrere Sitzungen hinweg angezeigt. Aufrufe der Install - und Remove-Prozeduren sind streng gekoppelt und überschneiden sich nicht. Aufrufe der Config-Prozedur können innerhalb dieses Paars mehrmals erfolgen. Eine wird in der Regel vom Dienstanbieter als interner Nebeneffekt des Installationsvorgangs durchgeführt, um Zeilen- und Telefoneinträge zu erstellen. Die Config-Prozedur kann zu anderen Zeiten aufgerufen werden, um ein vorhandenes Setup zu ändern. Die Installationsprozedur muss ausgeführt werden, bevor eine andere TSPI-Funktion zulässig ist. Im idealen Szenario sind alle Sitzungen streng innerhalb des Installations-/ Entfern-Prozedurpaars geschachtelt.

Die Funktionen TSPI_providerInstall, TSPI_providerConfig und TSPI_providerRemove mit dem Dienstanbieter selbst und nicht mit einem bestimmten Gerät interagieren. Sie wirken sich auf statische Konfigurationsinformationen aus, die über mehrere Sitzungen hinweg bestehen und vorhanden sein müssen, damit alle anderen Vorgänge fortgesetzt werden können. Daher werden alle anderen Vorgänge zwischen dem Aufruf von TSPI_providerInstall und dem Abschluss der übereinstimmenden TSPI_providerRemove geschachtelt. Diese beiden Vorgänge erfolgen in der Regel sehr weit voneinander entfernt, höchstwahrscheinlich in einer anderen Last des Dienstanbieters oder einem anderen Start des Computers. Das externe Aufrufen der Config-Funktion ist optional, da die Installationsprozedur zusätzlich zu ihrer eigenen das Config-Verhalten einschließen muss. Der übliche Grund für den externen Aufruf ist das Ändern einer vorhandenen Konfiguration.

In das Konzept des Abschlusses eines TSPI_providerRemove Vorgangs ist eine Subtilität eingebettet. Es ist wünschenswert, dem Benutzer zu ermöglichen, das mit dem Telefoniedienst bereitgestellte Hilfsprogramm Telefonie Systemsteuerung auszuführen, um Dienstanbieterkonfigurationen zu ändern, auch wenn Telefonievorgänge (Sitzungen) ausgeführt werden. Folglich ermöglichen sowohl die TSPI_providerConfig - als auch TSPI_providerRemove Spezifikationen den Aufruf, während eine ausstehende Sitzung vorhanden ist. Alle Änderungen an der Konfiguration müssen jedoch verzögert werden, bis Telefonievorgänge heruntergefahren und neu gestartet werden. Daher erfolgt streng genommen der Abschluss jedes TSPI_providerConfig oder TSPI_providerRemove Vorgangs außerhalb einer Sitzung. Die Schachtelung von Aktionen ist wie in der Abbildung dargestellt, auch wenn die Prozeduraufrufe möglicherweise in einer etwas anderen Reihenfolge angezeigt werden. Es ist für einen Dienstanbieter zulässig, die Konfiguration oder Das Entfernen einfach zu verbieten, während Vorgänge ausgeführt werden, obwohl der Benutzer über ein Dialogfeld benachrichtigt werden sollte. Eine benutzerfreundlichere Implementierung, die mindestens eine Teilmenge von Vorgängen zulässt, wird bevorzugt.

Diese Install-, Config- und Remove-Vorgänge haben alle den Nebeneffekt, dass alle ausgeführten Telefonieanwendungen signalisiert werden, was schließlich dazu führt, dass sie ihre Nutzung des Telefoniediensts herunterfahren. Zusammen enden damit alle ausstehenden Sitzungen für Dienstanbieter. Dies bedeutet für Dienstanbieter, dass sie die neue Registrierungskonfiguration lesen müssen, wenn neue Sitzungen beginnen. Alle Änderungen, die aufgrund einer Konfiguration oder eines Entfernens ausstehen, während Vorgänge ausgeführt wurden, werden wirksam.