protected virtual void OnCallStartStop(CallStartStopEventArgs e) { if (CallStartStop != null) { CallStartStop(this, e); } }
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; } }