/// <summary>
/// When session has completed, log any error which occured and dispose resources. This is done asynchronously
/// sincew we want to be able to start new session without previous to complete.
/// </summary>
private void HandleSessionAsynchronously(Task sessionTask, Connection connection, ISession session)
{
sessionTask.ContinueWith(f =>
{
if (f.IsFaulted)
{
var exception = f.Exception.InnerException;
_log.LogException(new LogEvent()
{
LogLevel = LogLevel.Error,
EventType = LogEventType.Application,
Message = exception.Message,
RemoteEndpoint = connection.RemoteEndpoint,
SessionId = connection.SessionId,
Protocol = session.Protocol.ToString()
}, exception);
}
SessionManager.DecreaseSessionCount(session.Protocol);
// Session has ended.
connection.Dispose();
});
}