power-monitor.js 768 B

12345678910111213141516171819202122232425
  1. 'use strict'
  2. const { EventEmitter } = require('events')
  3. const { powerMonitor, PowerMonitor } = process.atomBinding('power_monitor')
  4. // PowerMonitor is an EventEmitter.
  5. Object.setPrototypeOf(PowerMonitor.prototype, EventEmitter.prototype)
  6. EventEmitter.call(powerMonitor)
  7. // On Linux we need to call blockShutdown() to subscribe to shutdown event.
  8. if (process.platform === 'linux') {
  9. powerMonitor.on('newListener', (event) => {
  10. if (event === 'shutdown' && powerMonitor.listenerCount('shutdown') === 0) {
  11. powerMonitor.blockShutdown()
  12. }
  13. })
  14. powerMonitor.on('removeListener', (event) => {
  15. if (event === 'shutdown' && powerMonitor.listenerCount('shutdown') === 0) {
  16. powerMonitor.unblockShutdown()
  17. }
  18. })
  19. }
  20. module.exports = powerMonitor