beta fixes

This commit is contained in:
Luke Pulverenti
2015-03-21 12:10:02 -04:00
parent e068e84ab6
commit c0aec48a31
23 changed files with 137 additions and 101 deletions

View File

@@ -43,6 +43,10 @@ namespace MediaBrowser.Server.Implementations.Session
ResetPingTimer();
}
public void OnActivity()
{
}
private string PostUrl
{
get

View File

@@ -236,34 +236,44 @@ namespace MediaBrowser.Server.Implementations.Session
}
var activityDate = DateTime.UtcNow;
var session = await GetSessionInfo(appName, appVersion, deviceId, deviceName, remoteEndPoint, user).ConfigureAwait(false);
var lastActivityDate = session.LastActivityDate;
session.LastActivityDate = activityDate;
if (user == null)
if (user != null)
{
return session;
var userLastActivityDate = user.LastActivityDate ?? DateTime.MinValue;
user.LastActivityDate = activityDate;
// Don't log in the db anymore frequently than 10 seconds
if ((activityDate - userLastActivityDate).TotalSeconds > 10)
{
try
{
// Save this directly. No need to fire off all the events for this.
await _userRepository.SaveUser(user, CancellationToken.None).ConfigureAwait(false);
}
catch (Exception ex)
{
_logger.ErrorException("Error updating user", ex);
}
}
}
var lastActivityDate = user.LastActivityDate;
user.LastActivityDate = activityDate;
// Don't log in the db anymore frequently than 10 seconds
if (lastActivityDate.HasValue && (activityDate - lastActivityDate.Value).TotalSeconds < 10)
if ((activityDate - lastActivityDate).TotalSeconds > 10)
{
return session;
EventHelper.FireEventIfNotNull(SessionActivity, this, new SessionEventArgs
{
SessionInfo = session
}, _logger);
}
// Save this directly. No need to fire off all the events for this.
await _userRepository.SaveUser(user, CancellationToken.None).ConfigureAwait(false);
EventHelper.FireEventIfNotNull(SessionActivity, this, new SessionEventArgs
var controller = session.SessionController;
if (controller != null)
{
SessionInfo = session
}, _logger);
controller.OnActivity();
}
return session;
}
@@ -1680,7 +1690,7 @@ namespace MediaBrowser.Server.Implementations.Session
deviceId = info.DeviceId;
}
return GetSessionInfo(appName, appVersion, deviceId, deviceName, remoteEndpoint, user);
return LogSessionActivity(appName, appVersion, deviceId, deviceName, remoteEndpoint, user);
}
public Task<SessionInfo> GetSessionByAuthenticationToken(string token, string deviceId, string remoteEndpoint)

View File

@@ -30,17 +30,28 @@ namespace MediaBrowser.Server.Implementations.Session
Sockets = new List<IWebSocketConnection>();
}
public bool IsSessionActive
private bool HasOpenSockets
{
get
{
return Sockets.Any(i => i.State == WebSocketState.Open);
}
get { return GetActiveSockets().Any(); }
}
public bool SupportsMediaControl
{
get { return GetActiveSockets().Any(); }
get { return HasOpenSockets; }
}
private bool _isActive;
public bool IsSessionActive
{
get
{
return _isActive;
}
}
public void OnActivity()
{
_isActive = true;
}
private IEnumerable<IWebSocketConnection> GetActiveSockets()
@@ -64,6 +75,8 @@ namespace MediaBrowser.Server.Implementations.Session
{
if (!GetActiveSockets().Any())
{
_isActive = false;
try
{
_sessionManager.ReportSessionEnded(Session.Id);