Condividi tramite


Ciclo di vita di un provider di servizi di telefonia

In questo argomento viene fornita una revisione generale delle operazioni TSP.

Una sessione è il tempo durante il quale una particolare configurazione rimane valida e vengono eseguite le operazioni di telefonia. Un provider di servizi può supportare molte sessioni tra il primo caricamento e il momento in cui viene infine liberato. Per ogni sessione, TAPI negozia la versione dell'interfaccia, avvia la sessione, esegue operazioni e infine arresta la sessione. Il provider di servizi non deve conservare le informazioni da una sessione alla successiva.

Dopo che la versione dell'interfaccia è nota, TAPI chiama la funzione TSPI_providerInit per impostare tutti i parametri operativi. Il provider di servizi garantisce che tutte le informazioni di configurazione nel Registro di sistema siano stabili quando viene chiamata la funzione TSPI_providerInit . La maggior parte dei provider di servizi legge tutte le informazioni di configurazione in quel momento.

Le normali operazioni possono procedere in qualsiasi ordine, dopo l'inizializzazione del provider di servizi.

TAPI negozia informazioni specifiche del dispositivo per ogni dispositivo. TAPI e il provider di servizi eseguono il commit in una versione all'apertura di un dispositivo.

Il provider di servizi può ricevere richieste per selezionare e annullare le versioni dell'estensione. Mentre è selezionata una versione dell'estensione, il dispositivo opera rigorosamente in base alla versione dell'estensione specifica del dispositivo.

La negoziazione di una versione dell'estensione specifica del dispositivo può verificarsi più volte, sia prima che dopo l'apertura del dispositivo. TAPI passa un intervallo di versioni e il provider di servizi sceglie e restituisce un valore da questo intervallo. In genere, il provider di servizi ha estensioni specifiche del dispositivo disabilitate.

Questo esegue il commit sia di TAPI che del provider di servizi di operare a tale livello di versione dell'estensione fino a quando la selezione non viene annullata. Durante il tempo in cui è attiva un'estensione specifica del dispositivo, un tentativo di negoziare un livello di versione dell'estensione deve consentire solo il livello di versione attualmente attivo. Dopo l'annullamento dell'estensione specifica del dispositivo, è possibile negoziare e selezionare una versione diversa.

Le operazioni telefoniche all'interno della coppia Apri/Chiudi sono illustrate nella figura seguente. Alcune di queste operazioni sono sincrone, altre sono asincrone. Se un'operazione viene completata in modo asincrono, è possibile richiedere un'altra operazione prima del completamento del primo report. Pertanto, le operazioni possono sovrapporsi in qualsiasi modo. Il provider di servizi deve infine segnalare il completamento per qualsiasi operazione asincrona richiesta. La chiusura di un telefono forza il completamento delle operazioni asincrone in sospeso (possibilmente con un'indicazione di "errore").

Il ciclo di vita per i dispositivi line è simile al ciclo di vita per i telefoni, ad eccezione del fatto che le righe dispongono di una propria negoziazione, inizializzazione, apertura e chiusura. Le operazioni sulle linee aperte sono racchiuse tra parentesi separate dalla coppia Apri/Chiudi . Questa coppia è a sua volta racchiusa tra la stessa coppia di inizializzazione/arresto del telefono Aperto/Chiudi.

I cicli di vita delle chiamate sono racchiusi rigorosamente tra l'apertura e la chiusura della riga che li contiene. La durata delle chiamate può iniziare in diversi modi:

  • Richiesto da TAPI tramite funzioni come lineMakeCall, lineSetupTransfer o lineSetupConference.
  • Originato spontaneamente nel provider di servizi come nuove chiamate in ingresso, chiamate avviate dall'utente su un portatile telefonico collegato o chiamate generate come effetto collaterale di altre operazioni, ad esempio l'inserimento di una chiamata esistente in attesa.

Le durate di chiamate distinte all'interno della stessa riga possono sovrapporsi in qualsiasi modo. Tutte le chiamate terminano la durata al momento in cui viene richiamata la funzione TSPI TSPI_lineCloseCall . Il ciclo di vita di diverse chiamate è illustrato nella figura seguente.

cicli di vita delle chiamate sovrapposte

Una chiamata può avere origine in TAPI, come illustrato con la coppia MakeCall/CloseCall . Una chiamata può avere origine anche nel provider di servizi. Il provider di servizi lo annuncia con un messaggio di LINE_NEWCALL a una procedura di callback fornita da TAPI. In tal caso, TAPI restituisce il relativo identificatore per la chiamata, incluso nei callback successivi che segnalano eventi che si verificano nella chiamata. Nel caso delle chiamate la cui durata ha origine in TAPI, questo identificatore è incluso nell'operazione TSPI che crea la chiamata.

Tutte le operazioni che avviano la durata di una chiamata generano tapi e provider di servizi che scambiano identificatori per la nuova chiamata. Nel caso di chiamate TAPI originate, TAPI passa il relativo identificatore e riceve l'identificatore del provider di servizi come parametro restituito. Nel caso in cui la chiamata abbia origine nel provider di servizi, il provider di servizi passa il relativo identificatore a TAPI e riceve l'identificatore TAPI come parametro restituito.

La figura seguente offre una visione molto generale dell'installazione, della configurazione e della rimozione del provider di servizi; sequenze del ciclo di vita che si estendono su molte sessioni. Il ciclo di vita tipico per queste operazioni può essere visualizzato con la riga di tempo seguente.

installazione, configurazione e rimozione del provider di servizi

Viene visualizzato il tipico ciclo di vita di installazione e rimozione, che si estende su più sessioni. Le chiamate alle procedure Installa e Rimuovi sono strettamente abbinate e non si sovrappongono. Le chiamate alla procedura di configurazione possono essere eseguite più volte all'interno di questa coppia. Uno viene in genere eseguito dal provider di servizi come effetto collaterale interno della procedura di installazione per creare voci di riga e telefono. La routine Config può essere chiamata in altri momenti per modificare un'installazione esistente. La procedura di installazione deve essere eseguita prima che sia consentita qualsiasi altra funzione TSPI. Nello scenario ideale tutte le sessioni sono strettamente annidate all'interno della coppia di procedure Install/Remove .

Le funzioni TSPI_providerInstall, TSPI_providerConfig e TSPI_providerRemove interagire con il provider di servizi stesso anziché con qualsiasi dispositivo specifico. Influiscono sulle informazioni di configurazione statiche che sopravvivono in più sessioni e devono essere presenti per qualsiasi altra operazione. Di conseguenza, tutte le altre operazioni vengono annidate tra la chiamata di TSPI_providerInstall e il completamento del TSPI_providerRemove corrispondente. Queste due operazioni si verificano in genere molto distanti, molto probabilmente in un carico diverso del provider di servizi o in un avvio diverso del computer. La chiamata alla funzione Config esternamente è facoltativa, perché la procedura di installazione è necessaria per includere il comportamento config oltre al proprio. Il motivo consueto per chiamarlo esternamente consiste nel modificare una configurazione esistente.

C'è una sottigliezza incorporata nel concetto di completamento di un'operazione di TSPI_providerRemove . È consigliabile consentire all'utente di eseguire l'utilità di telefonia Pannello di controllo fornita con il servizio di telefonia per modificare le configurazioni del provider di servizi, anche quando sono in corso le operazioni di telefonia (sessioni). Di conseguenza, le specifiche TSPI_providerConfig e TSPI_providerRemove consentono la chiamata mentre è presente una sessione in sospeso. Tuttavia, è necessario ritardare le modifiche apportate alla configurazione fino a quando le operazioni di telefonia non vengono arrestate e riavviate. Pertanto, in modo rigoroso, il completamento di qualsiasi operazione di TSPI_providerConfig o TSPI_providerRemove avviene all'esterno di qualsiasi sessione. L'annidamento delle azioni è illustrato nella figura, anche se le chiamate alle procedure possono apparire in un ordine leggermente diverso. È consentito a un provider di servizi di non consentire semplicemente la configurazione o la rimozione mentre sono in corso operazioni, anche se l'utente deve ricevere una notifica con una finestra di dialogo. È preferibile un'implementazione più intuitiva che consenta almeno un subset di operazioni.

Queste operazioni di installazione, configurazione e rimozione hanno tutti l'effetto collaterale della segnalazione di tutte le applicazioni di telefonia in esecuzione, che alla fine comportano l'arresto dell'uso del servizio di telefonia. Insieme, questa operazione termina tutte le sessioni in sospeso per i provider di servizi. Ciò indica ai provider di servizi che devono leggere la nuova configurazione del Registro di sistema all'inizio delle nuove sessioni. Tutte le modifiche in sospeso a causa di una configurazione o di rimozione mentre le operazioni erano in corso diventano effettive.