using System;
using System.Runtime.InteropServices;
using System.Threading;
 
namespace PSTech.RestServer
{
    public class RestServer
    {
        
        [DllImport("Kernel32")]
        private static extern bool SetConsoleCtrlHandler(ConsoleEventHandler handler, bool add);
 
        private delegate bool ConsoleEventHandler(CtrlType sig);
        static ConsoleEventHandler ConsoleCtrlEventHandler;
 
        public enum CtrlType
        {
            CtrlCEvent = 0,
            CtrlBreakEvent = 1,
            CtrlCloseEvent = 2,
            CtrlLogOffEvent = 5,
            CtrlShutdownEvent = 6,
        }
 
        private static bool ConsoleHandler(CtrlType sig)
        {
            Exithandler((int)sig);
            return true;
        }
 
        static void Exithandler(int sig)
        {
            Tracker.DisableRestServer();
            Tracker.Shutdown();
            Environment.Exit(0);
        }
 
        static int Main(string[] args)
        {
            
            ConsoleCtrlEventHandler += new ConsoleEventHandler(ConsoleHandler);
            SetConsoleCtrlHandler(ConsoleCtrlEventHandler, true);
 
            
            
            try
            {
                
                Tracker tracker = new Tracker();
 
                
                tracker.StartTracker();
 
                
                
                
                
                
                Tracker.EnableRestServer("localhost", "7278");
 
                Console.Write("PST REST server enabled. See the PST SDK Manual for example commands.\n");
 
                
                Thread.Sleep(60000);
 
                
                Tracker.DisableRestServer();
            }
            {
                Console.Write(e + "\n");
                
            }
            finally
            {
                
                Tracker.Shutdown();
            }
 
            return 0;
        }
    }
}