internal AcdConferenceServicesAnchor(string conferenceUri, ApplicationEndpoint endpoint, AcdLogger logger) { _endpoint = endpoint; _logger = logger; _conferenceUri = conferenceUri; _state = ConferenceServicesAnchorState.Idle; _conversation = new Conversation(endpoint); _conversation.Impersonate("sip:" + Guid.NewGuid() + "@" + endpoint.DefaultDomain, null, null); _conversation.ApplicationContext = this; }
/// <summary> /// Updates the state of the current AcdConferenceServicesAnchor /// </summary> private void UpdateState(ConferenceServicesAnchorState state) { ConferenceServicesAnchorState previousState = _state; lock (_syncRoot) { switch (state) { case ConferenceServicesAnchorState.Idle: _state = state; break; case ConferenceServicesAnchorState.Establishing: if (_state == ConferenceServicesAnchorState.Idle) { _state = state; } break; case ConferenceServicesAnchorState.Established: if (_state == ConferenceServicesAnchorState.Establishing) { _state = state; } break; case ConferenceServicesAnchorState.Terminating: if ((_state != ConferenceServicesAnchorState.Terminating) && (_state != ConferenceServicesAnchorState.Terminated)) { _state = state; } break; case ConferenceServicesAnchorState.Terminated: if (_state == ConferenceServicesAnchorState.Terminating) { _state = state; } break; } } EventHandler <ConferenceServicesAnchorStateChangedEventArgs> handler = this.StateChanged; if (handler != null) { handler(this, new ConferenceServicesAnchorStateChangedEventArgs(previousState, state)); } }
internal ConferenceServicesAnchorStateChangedEventArgs(ConferenceServicesAnchorState previousState, ConferenceServicesAnchorState newState) { _previousState = previousState; _newState = newState; }