aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Mono.userprefs8
-rw-r--r--MediaBrowser.Server.Implementations/Session/SessionManager.cs38
-rw-r--r--MediaBrowser.Server.Mono/Program.cs53
3 files changed, 20 insertions, 79 deletions
diff --git a/MediaBrowser.Mono.userprefs b/MediaBrowser.Mono.userprefs
index f07c9fbcf..1cbdc7c0a 100644
--- a/MediaBrowser.Mono.userprefs
+++ b/MediaBrowser.Mono.userprefs
@@ -1,13 +1,13 @@
<Properties>
<MonoDevelop.Ide.Workspace ActiveConfiguration="Debug|x86" />
- <MonoDevelop.Ide.Workbench ActiveDocument="MediaBrowser.ServerApplication\ApplicationHost.cs">
+ <MonoDevelop.Ide.Workbench ActiveDocument="MediaBrowser.Server.Mono\Program.cs">
<Files>
<File FileName="MediaBrowser.Server.Implementations\HttpServer\HttpServer.cs" Line="1" Column="1" />
<File FileName="MediaBrowser.Server.Mono\FFMpeg\FFMpegDownloader.cs" Line="1" Column="1" />
- <File FileName="MediaBrowser.Server.Mono\Networking\NetworkManager.cs" Line="28" Column="9" />
+ <File FileName="MediaBrowser.Server.Mono\Networking\NetworkManager.cs" Line="1" Column="1" />
<File FileName="MediaBrowser.ServerApplication\ApplicationHost.cs" Line="525" Column="50" />
- <File FileName="MediaBrowser.Server.Mono\Native\NativeApp.cs" Line="24" Column="4" />
- <File FileName="MediaBrowser.Server.Mono\Program.cs" Line="105" Column="17" />
+ <File FileName="MediaBrowser.Server.Mono\Native\NativeApp.cs" Line="1" Column="1" />
+ <File FileName="MediaBrowser.Server.Mono\Program.cs" Line="250" Column="64" />
</Files>
</MonoDevelop.Ide.Workbench>
<MonoDevelop.Ide.DebuggingService.Breakpoints>
diff --git a/MediaBrowser.Server.Implementations/Session/SessionManager.cs b/MediaBrowser.Server.Implementations/Session/SessionManager.cs
index d3b6bc59f..9fb9010e5 100644
--- a/MediaBrowser.Server.Implementations/Session/SessionManager.cs
+++ b/MediaBrowser.Server.Implementations/Session/SessionManager.cs
@@ -44,13 +44,11 @@ namespace MediaBrowser.Server.Implementations.Session
/// <value>The configuration manager.</value>
private readonly IServerConfigurationManager _configurationManager;
- private object _sessionLock = new object();
-
/// <summary>
/// The _active connections
/// </summary>
- private readonly Dictionary<string, SessionInfo> _activeConnections =
- new Dictionary<string, SessionInfo>(StringComparer.OrdinalIgnoreCase);
+ private readonly ConcurrentDictionary<string, SessionInfo> _activeConnections =
+ new ConcurrentDictionary<string, SessionInfo>(StringComparer.OrdinalIgnoreCase);
/// <summary>
/// Occurs when [playback start].
@@ -86,7 +84,7 @@ namespace MediaBrowser.Server.Implementations.Session
/// <value>All connections.</value>
public IEnumerable<SessionInfo> Sessions
{
- get { return _activeConnections.Values.ToList().OrderByDescending(c => c.LastActivityDate); }
+ get { return _activeConnections.Values.OrderByDescending(c => c.LastActivityDate).ToList(); }
}
/// <summary>
@@ -195,28 +193,18 @@ namespace MediaBrowser.Server.Implementations.Session
{
var key = clientType + deviceId + appVersion;
- lock (_sessionLock)
+ var connection = _activeConnections.GetOrAdd(key, keyName => new SessionInfo
{
- SessionInfo connection;
+ Client = clientType,
+ DeviceId = deviceId,
+ ApplicationVersion = appVersion,
+ Id = Guid.NewGuid()
+ });
- if (!_activeConnections.TryGetValue(key, out connection))
- {
- connection = new SessionInfo
- {
- Client = clientType,
- DeviceId = deviceId,
- ApplicationVersion = appVersion,
- Id = Guid.NewGuid()
- };
-
- _activeConnections[key] = connection;
- }
+ connection.DeviceName = deviceName;
+ connection.User = user;
- connection.DeviceName = deviceName;
- connection.User = user;
-
- return connection;
- }
+ return connection;
}
/// <summary>
@@ -589,4 +577,4 @@ namespace MediaBrowser.Server.Implementations.Session
return Task.WhenAll(tasks);
}
}
-}
+} \ No newline at end of file
diff --git a/MediaBrowser.Server.Mono/Program.cs b/MediaBrowser.Server.Mono/Program.cs
index fddf9706d..2c2390a81 100644
--- a/MediaBrowser.Server.Mono/Program.cs
+++ b/MediaBrowser.Server.Mono/Program.cs
@@ -21,8 +21,6 @@ namespace MediaBrowser.Server.Mono
{
private static ApplicationHost _appHost;
- private static Mutex _singleInstanceMutex;
-
private static ILogger _logger;
private static MainWindow _mainWindow;
@@ -45,18 +43,6 @@ namespace MediaBrowser.Server.Mono
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
- bool createdNew;
-
- //_singleInstanceMutex = new Mutex(true, @"Local\" + runningPath, out createdNew);
- createdNew = true;
-
- if (!createdNew)
- {
- _singleInstanceMutex = null;
- logger.Info("Shutting down because another instance of Media Browser Server is already running.");
- return;
- }
-
if (PerformUpdateIfNeeded(appPaths, logger))
{
logger.Info("Exiting to perform application update.");
@@ -71,8 +57,6 @@ namespace MediaBrowser.Server.Mono
{
logger.Info("Shutting down");
- ReleaseMutex(logger);
-
_appHost.Dispose();
}
}
@@ -231,24 +215,6 @@ namespace MediaBrowser.Server.Mono
}
/// <summary>
- /// Releases the mutex.
- /// </summary>
- internal static void ReleaseMutex(ILogger logger)
- {
- if (_singleInstanceMutex == null)
- {
- return;
- }
-
- logger.Debug("Releasing mutex");
-
- _singleInstanceMutex.ReleaseMutex();
- _singleInstanceMutex.Close();
- _singleInstanceMutex.Dispose();
- _singleInstanceMutex = null;
- }
-
- /// <summary>
/// Performs the update if needed.
/// </summary>
/// <param name="appPaths">The app paths.</param>
@@ -278,24 +244,11 @@ namespace MediaBrowser.Server.Mono
public static void Restart()
{
- // Second instance will start first, so release the mutex and dispose the http server ahead of time
- ReleaseMutex (_logger);
-
+ // Second instance will start first, so dispose so that the http ports will be available to the new instance
_appHost.Dispose();
- if (trayIcon != null) {
- trayIcon.Visible = false;
- trayIcon.Dispose ();
- trayIcon = null;
- }
-
- if (_mainWindow != null) {
- _mainWindow.HideAll ();
- _mainWindow.Dispose ();
- _mainWindow = null;
- }
-
- Application.Quit ();
+ // Right now this method will just shutdown, but not restart
+ Shutdown ();
}
}
}