public IAsyncResult BeginSetAudioConnected(bool value, bool switchTransmission, AsyncCallback callback) { AssertSessionNotDeleted(); AsyncNoResult ar = new AsyncNoResult(callback); if (value && switchTransmission) { _loginSession.SetTransmissionMode(TransmissionMode.Single, Key); } if (AlreadyDone(value, AudioState)) { ar.CompletedSynchronously = true; ar.SetComplete(); return(ar); } if (value) { var request = new vx_req_session_media_connect_t(); request.session_handle = _sessionHandle; VxClient.Instance.BeginIssueRequest(request, result => { try { VxClient.Instance.EndIssueRequest(result); ar.SetComplete(); } catch (Exception e) { VivoxDebug.Instance.VxExceptionMessage($"{request.GetType().Name} failed: {e}"); ar.SetComplete(e); if (VivoxDebug.Instance.throwInternalExcepetions) { throw; } return; } }); AudioState = ConnectionState.Connecting; return(ar); } else { _loginSession.ClearTransmittingChannel(Channel); var request = new vx_req_session_media_disconnect_t(); request.session_handle = _sessionHandle; VxClient.Instance.BeginIssueRequest(request, result => { try { VxClient.Instance.EndIssueRequest(result); ar.SetComplete(); } catch (Exception e) { VivoxDebug.Instance.VxExceptionMessage($"{request.GetType().Name} failed: {e}"); ar.SetComplete(e); if (VivoxDebug.Instance.throwInternalExcepetions) { throw; } return; } }); AudioState = ConnectionState.Disconnecting; return(ar); } }
internal static global::System.Runtime.InteropServices.HandleRef getCPtr(vx_req_session_media_connect_t obj) { return((obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr); }