void BlabbleCall::OnCallState(pjsua_call_id call_id, pjsip_event *e) { pjsua_call_info info; if (pjsua_call_get_info(call_id, &info) == PJ_SUCCESS) { if (info.state == PJSIP_INV_STATE_DISCONNECTED) { RemoteEnd(info); } else if (info.state == PJSIP_INV_STATE_CALLING) { if (on_call_ringing_) on_call_ringing_->InvokeAsync("", FB::variant_list_of(BlabbleCallWeakPtr(get_shared()))); BlabbleAccountPtr p = parent_.lock(); if (p) p->OnCallRingChange(get_shared(), info); } else if (info.state == PJSIP_INV_STATE_CONFIRMED) { if (on_call_connected_) on_call_connected_->InvokeAsync("", FB::variant_list_of(BlabbleCallWeakPtr(get_shared()))); BlabbleAccountPtr p = parent_.lock(); if (p) p->OnCallRingChange(get_shared(), info); } } }
void CRUAuditRefreshTaskExecutor::Work() { switch (GetState()) { case EX_START: // MAIN PROCESS { // This state only logs the opening message Start(); break; } case EX_PROLOGUE: // MAIN PROCESS { // This state just starts a transaction Prologue(); break; } case EX_PURGE_DATA: // MAIN PROCESS { RUASSERT(FALSE == IsTransactionOpen()); // Execute purgedata from the MV (with indexes) PurgeData(); break; } case EX_REMOTE_START: { // this state starts up the table lock protocol // and starts a transaction RemoteStart(); break; } case EX_RECOMPUTE: // REMOTE PROCESS { // This state execute an internal refresh recompute statement Recompute(); break; } case EX_REFRESH: // REMOTE PROCESS { // This state execute an internal refresh statement // It may be a multi delta refresh or a single delta refresh Refresh(); break; } case EX_POPINDEX: // REMOTE PROCESS { RUASSERT(FALSE == IsTransactionOpen()); PopulateIndexes(); break; } case EX_REMOTE_END: // REMOTE PROCESS { RemoteEnd(); break; } case EX_EPILOGUE: // MAIN PROCESS { // Update all meta-data concerning the mv and used tables objects Epilogue(); break; } default: RUASSERT(FALSE); } }