コード例 #1
0
 protected virtual void OnCallStartStop(CallStartStopEventArgs e)
 {
     if (CallStartStop != null)
     {
         CallStartStop(this, e);
     }
 }
コード例 #2
0
        public void ProcessSIPpacket(string[] packet, Phone p)
        {
            CallStartStopEventArgs e = new CallStartStopEventArgs();

            switch (p.State)
            {
            case PhoneState.Idle:
                if (packet[0].Contains("200") && GetCseq(packet).Contains("INVITE"))
                {
                    p.StartTime = DateTime.Now;

                    p.State = PhoneState.Dialog;

                    e.PhoneState = p.State;
                    e.Queue      = p.Queue;
                    OnCallStartStop(e);
                }
                if (packet[0].Contains("180"))
                {
                    ThreadStart soundThreadStart = new ThreadStart(playSound);
                    Thread      soundThread      = new Thread(soundThreadStart);
                    soundThread.Start();
                }
                break;

            case PhoneState.Dialog:
                if (packet[0].Contains("BYE"))
                {
                    p.StopTime = DateTime.Now;
                    TimeSpan duration = p.StopTime.Subtract(p.StartTime);
                    Phone.log.Log(string.Format("{0, -10} | {1:hh:mm:ss.fff tt} | {2:hh:mm:ss.fff tt} | {3:hh\\:mm\\:ss\\.fff}", (p.Queue + 1).ToString(), p.StartTime, p.StopTime, duration));

                    p.State = PhoneState.Idle;

                    e.PhoneState = p.State;
                    e.Queue      = p.Queue;

                    OnCallStartStop(e);
                }
                break;
            }
        }