전화 통신 서비스 공급자의 수명 주기

이 항목에서는 TSP 작업에 대한 개략적인 검토를 제공합니다.

세션은 특정 구성이 유효한 상태로 유지되고 전화 통신 작업이 수행되는 시간입니다. 서비스 공급자는 처음 로드된 시간과 마지막으로 해제된 시간 사이에 많은 세션을 지원할 수 있습니다. 각 세션에 대해 TAPI는 인터페이스 버전을 협상하고, 세션을 시작하고, 작업을 수행하고, 결국 세션을 종료합니다. 서비스 공급자는 한 세션에서 다음 세션으로 정보를 유지해서는 안됩니다.

인터페이스 버전을 알고 나면 TAPI는 TSPI_providerInit 함수를 호출하여 모든 운영 매개 변수를 설정합니다. 서비스 공급자는 TSPI_providerInit 함수가 호출될 때 레지스트리의 모든 구성 정보가 안정적인지 확인합니다. 대부분의 서비스 공급자는 해당 시간에 모든 구성 정보를 읽습니다.

일반 작업은 서비스 공급자가 초기화된 후 순서대로 진행할 수 있습니다.

TAPI는 디바이스별로 디바이스별 정보를 협상합니다. TAPI 및 서비스 공급자는 디바이스를 열 때 버전에 커밋합니다.

서비스 공급자는 확장 버전을 선택하고 취소하라는 요청을 받을 수 있습니다. 확장 버전을 선택하는 동안 디바이스는 해당 디바이스별 확장 버전에 따라 엄격하게 작동합니다.

디바이스별 확장 버전 협상은 디바이스가 열리기 전과 후에 여러 번 발생할 수 있습니다. TAPI는 버전 범위를 전달하고 서비스 공급자는 이 범위의 값을 선택하고 반환합니다. 일반적으로 서비스 공급자는 디바이스별 확장을 사용하지 않도록 설정합니다.

이렇게 하면 선택 영역이 취소될 때까지 TAPI와 서비스 공급자가 모두 해당 확장 버전 수준에서 작동하도록 커밋됩니다. 디바이스별 확장이 적용되는 동안 확장 버전 수준을 협상하려는 시도는 현재 적용 중인 버전 수준만 허용해야 합니다. 디바이스별 확장이 취소된 후 다른 버전을 협상하고 선택할 수 있습니다.

열기/닫기 쌍 내의 전화 작업은 다음 그림에 나와 있습니다. 이러한 작업 중 일부는 동기식이고 다른 작업은 비동기식입니다. 작업이 비동기적으로 완료되면 첫 번째 보고가 완료되기 전에 다른 작업을 요청할 수 있습니다. 따라서 작업은 어떤 식으로든 겹칠 수 있습니다. 서비스 공급자는 요청된 모든 비동기 작업에 대한 완료를 보고해야 합니다. 휴대폰을 닫으면 미해결 비동기 작업이 완료됩니다("실패" 표시가 표시될 수 있음).

회선 디바이스의 수명 주기는 휴대폰의 수명 주기와 유사합니다. 단, 회선에는 자체 협상, 초기화, 열기 및 닫기 절차가 있습니다. 열린 줄에 대한 작업은 자체 열기/닫기 쌍으로 대괄호로 묶입니다. 이 쌍은 휴대폰 열기/닫기와 동일한 초기화/종료 쌍 간에 차례로 대괄호로 묶입니다.

호출의 수명 주기는 호출이 포함된 줄의 열기/닫기 사이에 엄격하게 대괄호로 묶입니다. 호출 수명은 다음과 같은 여러 가지 방법으로 시작할 수 있습니다.

  • lineMakeCall, lineSetupTransfer 또는 lineSetupConference와 같은 함수를 통해 TAPI에서 요청됩니다.
  • 서비스 공급자에서 새 수신 전화, 연결된 전화 핸드셋에서 사용자가 시작한 통화 또는 기존 통화를 보류하는 것과 같은 다른 작업의 부작용으로 생성된 통화로 자발적으로 시작되었습니다.

동일한 줄 내의 고유 호출 수명은 어떤 방식으로든 서로 겹칠 수 있습니다. 모든 호출은 TSPI 함수 TSPI_lineCloseCall 호출될 때 수명을 종료합니다. 다음 그림에서는 여러 호출의 수명 주기를 보여 줍니다.

겹치는 호출의 수명 주기

MakeCall/CloseCall 쌍과 같이 TAPI에서 호출이 시작 될 수 있습니다. 호출은 서비스 공급자에서도 시작됩니다. 서비스 공급자는 TAPI 제공 콜백 프로시저에 LINE_NEWCALL 메시지와 함께 이를 알릴 수 있습니다. 이러한 경우 TAPI는 호출에서 발생하는 후속 콜백 보고 이벤트에 포함된 호출에 대한 식별자를 반환합니다. TAPI에서 수명이 시작되는 호출의 경우 이 식별자는 호출을 만드는 TSPI 작업에 포함됩니다.

호출의 수명을 시작하는 모든 작업은 TAPI 및 서비스 공급자가 새 호출에 대한 식별자를 교환합니다. TAPI가 시작된 호출의 경우 TAPI는 식별자를 전달하고 서비스 공급자의 식별자를 반환 매개 변수로 받습니다. 서비스 공급자에서 호출이 시작되는 경우 서비스 공급자는 해당 식별자를 TAPI에 전달하고 TAPI 식별자를 반환 매개 변수로 받습니다.

다음 그림에서는 서비스 공급자 설치, 구성 및 제거에 대한 매우 높은 수준의 보기를 제공합니다. 여러 세션에 걸쳐 있는 수명 주기 시퀀스입니다. 이러한 작업의 일반적인 수명 주기는 다음 시계열과 함께 표시될 수 있습니다.

서비스 공급자 설치, 구성 및 제거

일반적인 설치 및 제거 수명 주기가 여러 세션에 걸쳐 표시됩니다. 설치제거 프로시저에 대한 호출은 엄격하게 페어링되며 겹치지 않습니다. 구성 프로시저에 대한 호출은 이 쌍 내에서 여러 번 발생할 수 있습니다. 일반적으로 서비스 공급자는 설치 절차의 내부 부작용으로 라인 및 전화 항목을 만듭니다. 구성 프로시 저는 다른 시간에 호출하여 기존 설정을 변경할 수 있습니다. 다른 TSPI 함수가 허용되기 전에 설치 절차를 수행해야 합니다. 이상적인 시나리오에서는 모든 세션이 설치/제거 프로시저 쌍 내에 엄격하게 중첩됩니다.

함수는 특정 디바이스가 아닌 서비스 공급자 자체와 상호 작용할 TSPI_providerInstall, TSPI_providerConfig 및 TSPI_providerRemove. 여러 세션에서 유지되는 정적 구성 정보에 영향을 미치며 다른 작업을 진행하려면 이 정보가 있어야 합니다. 따라서 다른 모든 작업은 TSPI_providerInstall 호출과 일치하는 TSPI_providerRemove 완료 사이에 중첩됩니다. 이러한 두 작업은 일반적으로 서비스 공급자의 다른 부하 또는 컴퓨터의 다른 부팅에서 매우 멀리 떨어져 발생합니다. Config 함수를 외부에서 호출하는 것은 선택 사항입니다. 설치 프로시저는 자체 구성 동작 외에 구성 동작을 포함해야 하기 때문입니다. 외부에서 호출하는 일반적인 이유는 기존 구성을 수정하기 위한 것입니다.

TSPI_providerRemove 작업 완료 개념에는 미묘한 차이가 있습니다. 전화 통신 작업(세션)이 진행 중인 경우에도 사용자가 전화 통신 서비스와 함께 제공된 전화 통신 제어판 유틸리티를 실행하여 서비스 공급자 구성을 변경할 수 있도록 하는 것이 좋습니다. 따라서 TSPI_providerConfigTSPI_providerRemove 사양 모두 처리 중인 세션이 있는 동안 호출을 허용합니다. 그러나 전화 통신 작업이 종료되고 다시 시작될 때까지 구성 변경 내용을 지연해야 합니다. 따라서 엄밀히 말하면 모든 세션 외부에서 TSPI_providerConfig 또는 TSPI_providerRemove 작업이 완료됩니다. 프로시저 호출이 약간 다른 순서로 표시되더라도 작업의 중첩은 그림과 같습니다. 사용자에게 대화 상자로 알림을 받아야 하지만 작업이 진행되는 동안 서비스 공급자가 단순히 구성 또는 제거 를 허용하지 않도록 허용됩니다. 최소한 작업의 하위 집합을 허용하는 보다 사용자에게 친숙한 구현이 선호됩니다.

이러한 설치, 구성제거 작업은 모두 실행 중인 전화 통신 애플리케이션에 신호를 보내는 부작용을 가지며, 이로 인해 결국 전화 통신 서비스 사용이 종료됩니다. 이렇게 하면 서비스 공급자에 대한 모든 미해결 세션이 종료됩니다. 이는 서비스 공급자가 새 세션이 시작될 때 새 레지스트리 구성을 읽어야 한다는 것을 의미합니다. 작업이 진행 중인 동안 구성 또는 제거 로 인해 보류 중인 모든 변경 내용이 적용됩니다.