Exemplo n.º 1
0
        public bool WaitFor(TimeSpan?timeout, params CallState[] states)
        {
            if (Array.Exists(states, s => State == s))
            {
                return(true);
            }

            if (!timeout.HasValue)
            {
                timeout = TimeSpan.FromMilliseconds(-1);
            }

            bool ret = false;
            CancellationTokenSource cancelDelay = new CancellationTokenSource();

            Client.ClientCallback disconnectedCallback = c =>
            {
                cancelDelay.Cancel();
            };
            StateChangeCallback stateChangeCallback = (a, c, e, p) =>
            {
                ret = Array.Exists(states, s => p.CallState == s);
                cancelDelay.Cancel();
            };

            API.API.Client.OnDisconnected += disconnectedCallback;
            OnStateChange += stateChangeCallback;

            Task.Delay(timeout.Value, cancelDelay.Token).Wait();

            OnStateChange -= stateChangeCallback;
            API.API.Client.OnDisconnected -= disconnectedCallback;

            return(ret);
        }
Exemplo n.º 2
0
 public void SetStateChangeCallback(StateChangeCallback action)
 {
     stateChangeCallback += action;
 }