FSClient.Call.HandleCustomEvent C# (CSharp) Méthode

HandleCustomEvent() private static méthode

private static HandleCustomEvent ( FSEvent evt, string uuid ) : void
evt FSEvent
uuid string
Résultat void
        private static void HandleCustomEvent(FSEvent evt, string uuid)
        {
            if (evt.subclass_name == "portaudio::ringing") {
                Utils.DebugEventDump(evt);
                if ((from c in calls where c._leg_a_uuid == uuid && c.call_ended == false select c).Count() > 0)//only care about first ring
                    return;
                Call call = new Call();
                call.SetCallInfoFromEvent(evt);
                String gw_id = (from c in channels where c.Key == call.leg_b_uuid select c.Value.gateway_id).SingleOrDefault();
                call.account = (from a in Account.accounts where a.gateway_id == gw_id select a).SingleOrDefault();
                calls.Add(call);
                call.UpdateCallState(CALL_STATE.Ringing, active_call ?? call);
            }
            else if (evt.subclass_name == "portaudio::makecall") {
                Utils.DebugEventDump(evt);
                if (evt.get_header("fail") == "true") {
                    MessageBox.Show("Make Call failed!!!, came from portaudio not sure why");
                    return;
                }
                Call call = new Call();
                call.is_outgoing = true;
                call.SetCallInfoFromEvent(evt);
                if (call.other_party_number == "fsc_conference"){
                    call.visibility = Visibility.Collapsed;
                    Conference.instance.our_conference_call = call;
                    call.is_conference_call = true;
                }
                calls.Add(call);
                call.UpdateCallState(call.is_conference_call ? CALL_STATE.Answered : CALL_STATE.Ringing, call);
            }
            else if (evt.subclass_name == "portaudio::callheld" || evt.subclass_name == "portaudio::callresumed") {
                String paid_str = evt.get_header("variable_pa_call_id");
                if (String.IsNullOrEmpty(paid_str))
                    return;
                int portaudio_id = Int32.Parse(paid_str);
                Call call = (from c in calls where c.portaudio_id == portaudio_id && c.call_ended == false select c).SingleOrDefault();
                if (call == null)
                    return;
                if (evt.subclass_name == "portaudio::callresumed")
                    call.UpdateCallState(CALL_STATE.Answered, call);
                else
                    call.UpdateCallState(call.state == CALL_STATE.Ringing ? CALL_STATE.Hold_Ringing : CALL_STATE.Hold, call == active_call ? null : active_call);
            }
        }