SystemEvents.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using System;
  2. using MediaBrowser.Common.Events;
  3. using MediaBrowser.Model.Logging;
  4. using MediaBrowser.Model.System;
  5. namespace Emby.Server.Implementations
  6. {
  7. public class SystemEvents : ISystemEvents
  8. {
  9. public event EventHandler Resume;
  10. public event EventHandler Suspend;
  11. public event EventHandler SessionLogoff;
  12. public event EventHandler SystemShutdown;
  13. private readonly ILogger _logger;
  14. public SystemEvents(ILogger logger)
  15. {
  16. _logger = logger;
  17. Microsoft.Win32.SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;
  18. Microsoft.Win32.SystemEvents.SessionEnding += SystemEvents_SessionEnding;
  19. }
  20. private void SystemEvents_SessionEnding(object sender, Microsoft.Win32.SessionEndingEventArgs e)
  21. {
  22. switch (e.Reason)
  23. {
  24. case Microsoft.Win32.SessionEndReasons.Logoff:
  25. EventHelper.FireEventIfNotNull(SessionLogoff, this, EventArgs.Empty, _logger);
  26. break;
  27. case Microsoft.Win32.SessionEndReasons.SystemShutdown:
  28. EventHelper.FireEventIfNotNull(SystemShutdown, this, EventArgs.Empty, _logger);
  29. break;
  30. }
  31. }
  32. private void SystemEvents_PowerModeChanged(object sender, Microsoft.Win32.PowerModeChangedEventArgs e)
  33. {
  34. switch (e.Mode)
  35. {
  36. case Microsoft.Win32.PowerModes.Resume:
  37. EventHelper.FireEventIfNotNull(Resume, this, EventArgs.Empty, _logger);
  38. break;
  39. case Microsoft.Win32.PowerModes.Suspend:
  40. EventHelper.FireEventIfNotNull(Suspend, this, EventArgs.Empty, _logger);
  41. break;
  42. }
  43. }
  44. }
  45. }