1
0
mirror of https://github.com/bitwarden/directory-connector synced 2025-12-31 07:33:28 +00:00
Files
directory-connector/src/Core/Services/ControllerService.cs
2017-05-17 10:55:48 -04:00

78 lines
2.0 KiB
C#

using Bit.Core.Enums;
using Bit.Core.Models;
using Bit.Core.Utilities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
namespace Bit.Core.Services
{
public class ControllerService
{
private static ControllerService _instance;
private ControllerService()
{
Controller = new ServiceController(Constants.ProgramName);
}
public static ControllerService Instance
{
get
{
if(_instance == null)
{
_instance = new ControllerService();
}
return _instance;
}
}
public ServiceController Controller { get; private set; }
public ServiceControllerStatus Status
{
get
{
Controller.Refresh();
return Controller.Status;
}
}
public string StatusString => Controller == null ? "Unavailable" : Status.ToString();
public bool Running => Status == ServiceControllerStatus.Running;
public bool Paused => Status == ServiceControllerStatus.Paused;
public bool Stopped => Status == ServiceControllerStatus.Stopped;
public bool Pending =>
Status == ServiceControllerStatus.ContinuePending ||
Status == ServiceControllerStatus.PausePending ||
Status == ServiceControllerStatus.StartPending ||
Status == ServiceControllerStatus.StopPending;
public bool Start()
{
if(Controller == null || !Stopped)
{
return false;
}
Controller.Start();
return true;
}
public bool Stop()
{
if(Controller == null || !Controller.CanStop)
{
return false;
}
Controller.Stop();
return true;
}
}
}