private void ProcessSessionTermination(SessionTerminationEvent @event) { SessionTerminated?.Invoke(@event); string sessionId = @event.SessionId; VaspSession vaspSession; if (!_beneficiarySessionsDict.TryGetValue(sessionId, out var benSession)) { if (!_originatorSessionsDict.TryGetValue(sessionId, out var origSession)) { return; } vaspSession = origSession; _originatorSessionsDict.TryRemove(sessionId, out _); } else { _beneficiarySessionsDict.TryRemove(sessionId, out _); vaspSession = benSession; } //TODO: Work on session life cycle try { vaspSession.Dispose(); } finally { } }
async Task Terminate(SessionTerminated message) { _logger.LogInformation("Session {SessionId}: Terminated", message.SessionId); await _connection.Hub.InvokeAsync <string>("Terminate", _groupOptions.Id, message.SessionId); }
public void RemoveSession(ConnectionSessionId sessionId) { lock (currentSessions) { var sessionToRemove = GetSessionInfo(sessionId); currentSessions.Remove(sessionId); SessionTerminated?.Invoke(sessionToRemove); } }
void Terminate(SessionTerminated message) { Logger.Info("Session {0}: Terminated", message.SessionId); try { _hub.Invoke <string>("Terminate", _groupId, message.SessionId) .Wait(); } catch (Exception exception) { Logger.Error(MaybeAggregateException(exception), $"Session {message.SessionId}: Error sending request"); throw; } }
public void Dispose() { _cancellationTokenSource.Cancel(); //TODO: Work on session life cycle var sessions = _beneficiarySessionsDict.Values.Cast <VaspSession>().Concat(_originatorSessionsDict.Values); foreach (var session in sessions) { bool isOriginator = session is OriginatorSession; var runningSession = session; runningSession .TerminateAsync(isOriginator ? TerminationMessage.TerminationMessageCode.SessionClosedTransferCancelledByOriginator : TerminationMessage.TerminationMessageCode.SessionClosedTransferDeclinedByBeneficiaryVasp).Wait(); runningSession.Wait(); } //if (TransferDispatch != null) // foreach (var d in TransferDispatch.GetInvocationList()) // TransferDispatch -= (d as Func<TransferDispatchMessage, TransferConfirmationMessage>); //if (TransferRequest != null) // foreach (var d in TransferRequest.GetInvocationList()) // TransferRequest -= (d as Func<TransferRequestMessage, TransferReplyMessage>); if (SessionTerminated != null) { foreach (var d in SessionTerminated.GetInvocationList()) { SessionTerminated -= (d as SessionTermination); } } if (SessionCreated != null) { foreach (var d in SessionCreated.GetInvocationList()) { SessionCreated -= (d as SessionCreation); } } }
private void OnCommunicationService_SessionTerminated(object sender, SessionEventArgs e) { try { CheckSessionTerminatedActions(e.Session, e.SessionContract); SessionTerminated?.Invoke(e.SessionContract, e); sessionIdContractMapping.Remove(e.Session.SessionId); } catch (Exception ex) { if (logger != null) { logger.Error(ex.ToString()); } else { Console.WriteLine(ex.ToString()); } } }