protected virtual void PortOnPortEndCall(object sender, CallEventArgs e) { var call = CurrentCalls.FirstOrDefault(x => x.RecieverNumber == e.number || x.SenderNumber == e.number); if (call == null) { return; } var port1 = CallingPorts.FirstOrDefault(x => x.Number == call.SenderNumber); if (port1 == null) { return; } var port2 = CallingPorts.FirstOrDefault(x => x.Number == call.RecieverNumber); if (port2 == null) { return; } call.Finish(); ServerFinishedCall?.Invoke(this, new ConnectionEventArgs(port1, port2, string.Format($"Call finished. Duration: {call.Duration:hh\\:mm\\:ss}"))); CallingPorts.Remove(port1); CallingPorts.Remove(port2); EnabledPorts.Add(port1); EnabledPorts.Add(port2); CurrentCalls.Remove(call); StorageCalls.Add(call); CallFinished?.Invoke(call, EventArgs.Empty); }
protected virtual void PortOnCallAccepted(object sender, AnswerEventArgs e) { var port1 = ActivePorts.FirstOrDefault(x => x.Key.Number == e.number1).Key; var port2 = EnabledPorts.FirstOrDefault(x => x.Number == e.number2); AnswerOnAccept?.Invoke(this, new ConnectionEventArgs(port1, port2, e.message)); }
protected virtual void PortOnPortDisabled(object sender, EventArgs e) { var port = sender as Port; if (EnabledPorts.Contains(port)) { EnabledPorts.Remove(port); DisabledPorts.Add(port); } else if (ActivePorts.ContainsKey(port)) { ActivePorts.Remove(port); DisabledPorts.Add(port); } }
protected virtual void PortOnPortStateSetToActive(object sender, CallEventArgs phoneNumberArgs) { var port = sender as Port; if (DisabledPorts.Contains(port)) { DisabledPorts.Remove(port); ActivePorts.Add(port, phoneNumberArgs.number); } if (EnabledPorts.Contains(port)) { EnabledPorts.Remove(port); ActivePorts.Add(port, phoneNumberArgs.number); } CheckActivePortCalledNumber(port, phoneNumberArgs.number); }
public bool Equals(MPowerDevice other) { if (this == other) { return true; } return Id == other.Id && Name == other.Name && Username == other.Username && Password == other.Password && DeviceIP == other.DeviceIP && EnabledPorts.SetEquals(other.EnabledPorts) && EnabledTypes.SetEquals(other.EnabledTypes) && ((Resolution.Count == other.Resolution.Count) && !Resolution.Except(other.Resolution).Any()); }
protected virtual void PortOnPortConnectionEstablished(object sender, ConnectionEstablishedEventArgs e) { var port1 = e.port1; var port2 = e.port2; if (port1 == null || port2 == null) { return; } ActivePorts.Remove(port1); EnabledPorts.Remove(port2); CallingPorts.Add(port1); CallingPorts.Add(port2); var call = new Call(port1.Number, port2.Number); call.Start(); CurrentCalls.Add(call); }
private void CheckActivePortCalledNumber(Port port, int callNumber) { if (IsDisableListContainsCalledNumber(callNumber)) { UserIsUnavaliable?.Invoke(port, "User is unavaliable now. Please try again."); } else if (IsActiveListContainsCalledNumber(callNumber)) { UserIsBusy?.Invoke(port, "User is busy. Please try again later."); } else if (IsEnabledListContainsCalledNumber(callNumber)) { var port2 = EnabledPorts.FirstOrDefault(x => x.Number == callNumber); if (port2 != null) { EstablishConnection?.Invoke(this, new ConnectionEventArgs(port, port2)); } } else { UserDoesntExists?.Invoke(port, "We're sorry, but user with this number doesn't exists."); } }
private bool IsEnabledListContainsCalledNumber(int number) { return(EnabledPorts.Any(port => port.Number == number)); }