|
|
|
|
using System;
|
|
|
|
|
using MediaBrowser.Common.Events;
|
|
|
|
|
using MediaBrowser.Model.Logging;
|
|
|
|
|
using MediaBrowser.Model.System;
|
|
|
|
|
|
|
|
|
|
namespace MediaBrowser.Server.Startup.Common
|
|
|
|
|
{
|
|
|
|
|
public class SystemEvents : ISystemEvents
|
|
|
|
|
{
|
|
|
|
|
public event EventHandler Resume;
|
|
|
|
|
public event EventHandler Suspend;
|
|
|
|
|
public event EventHandler SessionLogoff;
|
|
|
|
|
public event EventHandler SystemShutdown;
|
|
|
|
|
|
|
|
|
|
private readonly ILogger _logger;
|
|
|
|
|
|
|
|
|
|
public SystemEvents(ILogger logger)
|
|
|
|
|
{
|
|
|
|
|
_logger = logger;
|
|
|
|
|
Microsoft.Win32.SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;
|
|
|
|
|
Microsoft.Win32.SystemEvents.SessionEnding += SystemEvents_SessionEnding;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void SystemEvents_SessionEnding(object sender, Microsoft.Win32.SessionEndingEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
switch (e.Reason)
|
|
|
|
|
{
|
|
|
|
|
case Microsoft.Win32.SessionEndReasons.Logoff:
|
|
|
|
|
EventHelper.FireEventIfNotNull(SessionLogoff, this, EventArgs.Empty, _logger);
|
|
|
|
|
break;
|
|
|
|
|
case Microsoft.Win32.SessionEndReasons.SystemShutdown:
|
|
|
|
|
EventHelper.FireEventIfNotNull(SystemShutdown, this, EventArgs.Empty, _logger);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void SystemEvents_PowerModeChanged(object sender, Microsoft.Win32.PowerModeChangedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
switch (e.Mode)
|
|
|
|
|
{
|
|
|
|
|
case Microsoft.Win32.PowerModes.Resume:
|
|
|
|
|
EventHelper.FireEventIfNotNull(Resume, this, EventArgs.Empty, _logger);
|
|
|
|
|
break;
|
|
|
|
|
case Microsoft.Win32.PowerModes.Suspend:
|
|
|
|
|
EventHelper.FireEventIfNotNull(Suspend, this, EventArgs.Empty, _logger);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|