예제 #1
0
파일: Terminal.cs 프로젝트: DPostnik/ATS
 public void IncomingCallFromPort(CallEventArgs arg)
 {
     if (Port != null && arg != null)
     {
         OnIncomingCall(this, arg);
     }
 }
예제 #2
0
        private void RegAnsweredCall(CallEventArgs args)
        {
            var call = calls.FirstOrDefault(x => x.Source == args.SourceNumber && x.Target == args.TargetNumber);

            if (call == null)
            {
                return;
            }
            call.CallDate  = DateTime.Now;
            call.CallState = args.State;
        }
예제 #3
0
 public void RegUnprocessedCall(CallEventArgs arg)
 {
     calls.Add(new CallInfo
     {
         Source    = arg.SourceNumber,
         Target    = arg.TargetNumber,
         CallDate  = DateTime.Now,
         Duration  = TimeSpan.Zero,
         CallState = arg.State
     });
 }
예제 #4
0
        private void RegDroppedCall(CallEventArgs arg)
        {
            var call = calls.FirstOrDefault(x => x.Source == arg.SourceNumber && x.Target == arg.TargetNumber);

            if (call == null)
            {
                return;
            }
            calls.Remove(call);

            call.Duration = DateTime.Now - call.CallDate;
            CallEvent?.Invoke(this, call);
        }
예제 #5
0
파일: Terminal.cs 프로젝트: DPostnik/ATS
 public void Call(string to)
 {
     if (Port != null && Port.State == PortState.Free)
     {
         CallEventArgs = new CallEventArgs
         {
             TargetNumber = to,
             SourceNumber = PhoneNumber,
             State        = CallState.None
         };
         OnOutgoingCall(this, CallEventArgs);
     }
 }
예제 #6
0
        private void OnOutgoingCall(object sender, CallEventArgs arg)
        {
            var receiverPort = GetPort(arg.TargetNumber);

            if (receiverPort != null)
            {
                if (receiverPort.State == PortState.Free)
                {
                    receiverPort.GetCall(arg);
                    arg.State = CallState.Unprocessed;
                    RegUnprocessedCall(arg);
                }
                else
                {
                    Console.WriteLine("Receiver port is " + receiverPort.State);
                }
            }
        }
예제 #7
0
        private void OnCallDrop(object sender, CallEventArgs arg)
        {
            if (arg.State != CallState.Processed)
            {
                return;
            }
            var fromPort = GetPort(arg.SourceNumber);
            var toPort   = GetPort(arg.TargetNumber);

            if (fromPort != null && fromPort.State == PortState.Busy)
            {
                fromPort.State = PortState.Free;
            }
            if (toPort != null && toPort.State == PortState.Busy)
            {
                toPort.State = PortState.Free;
            }

            RegDroppedCall(arg);
            arg.SourceNumber = string.Empty;
            arg.TargetNumber = string.Empty;
        }
예제 #8
0
 public void GetCall(CallEventArgs arg)
 {
     OnCalling(this, arg);
 }
예제 #9
0
 protected void OnCalling(object sender, CallEventArgs arg)
 {
     IncomingCall?.Invoke(sender, arg);
 }
예제 #10
0
 private void OnIncomingCallAnswer(object sender, CallEventArgs arg)
 {
     arg.State = CallState.Processed;
     RegAnsweredCall(arg);
 }
예제 #11
0
파일: Terminal.cs 프로젝트: DPostnik/ATS
 protected virtual void OnDropCall(object sender, CallEventArgs arg)
 {
     Drop?.Invoke(sender, arg);
 }
예제 #12
0
파일: Terminal.cs 프로젝트: DPostnik/ATS
 protected virtual void OnAnswerCall(object sender, CallEventArgs arg)
 {
     Answer?.Invoke(sender, arg);
 }
예제 #13
0
파일: Terminal.cs 프로젝트: DPostnik/ATS
 protected virtual void OnIncomingCall(object sender, CallEventArgs arg)
 {
     IncomingCall?.Invoke(sender, arg);
 }
예제 #14
0
파일: Terminal.cs 프로젝트: DPostnik/ATS
 protected virtual void OnOutgoingCall(object sender, CallEventArgs arg)
 {
     OutgoingCall?.Invoke(sender, arg);
 }