static VOID onConnectionStateChange()

in main/AppCommon.c [104:140]


static VOID onConnectionStateChange(UINT64 userData, RTC_PEER_CONNECTION_STATE newState)
{
    STATUS retStatus = STATUS_SUCCESS;
    PStreamingSession pStreamingSession = (PStreamingSession) userData;
    PAppConfiguration pAppConfiguration;

    CHK((pStreamingSession != NULL) && (pStreamingSession->pAppConfiguration != NULL), STATUS_INTERNAL_ERROR);

    pAppConfiguration = pStreamingSession->pAppConfiguration;
    DLOGI("New connection state %u", newState);

    switch (newState) {
        case RTC_PEER_CONNECTION_STATE_CONNECTED:
            ATOMIC_STORE_BOOL(&pAppConfiguration->peerConnectionConnected, TRUE);
            CVAR_BROADCAST(pAppConfiguration->cvar);
            if (STATUS_FAILED(retStatus = logSelectedIceCandidatesInformation(pStreamingSession->pPeerConnection))) {
                DLOGW("Failed to get information about selected Ice candidates: 0x%08x", retStatus);
            }
            break;
        case RTC_PEER_CONNECTION_STATE_FAILED:
            // explicit fallthrough
        case RTC_PEER_CONNECTION_STATE_CLOSED:
            // explicit fallthrough
        case RTC_PEER_CONNECTION_STATE_DISCONNECTED:
            ATOMIC_STORE_BOOL(&pStreamingSession->terminateFlag, TRUE);
            CVAR_BROADCAST(pAppConfiguration->cvar);
            // explicit fallthrough
        default:
            ATOMIC_STORE_BOOL(&pAppConfiguration->peerConnectionConnected, FALSE);
            CVAR_BROADCAST(pAppConfiguration->cvar);
            break;
    }

CleanUp:

    CHK_LOG_ERR((retStatus));
}