Esempio n. 1
0
        static void Main(string[] args)
        {
            ILogger logger = new SimpleLogger("processservice.log");

            logger.Log("startup", "-------- Starting Dryad Process Service --------");

            var directory = Directory.GetCurrentDirectory();

            if (!GetEnvironmentDetails(logger))
            {
                logger.Log("Failed to read environment variables");
                logger.Stop();
                return;
            }

            XDocument config;

            try
            {
                string configFile = args[0];
                logger.Log("Opening config file " + configFile);
                config = XDocument.Load(configFile);
                logger.Log("Opened config file " + configFile);
            }
            catch (Exception e)
            {
                logger.Log("Failed to read config file: " + e.ToString());
                logger.Stop();
                return;
            }

            using (var processService = new ProcessService(logger))
            {
                string processUri;
                string fileUri;

                logger.Log("starting process service");
                if (processService.Start(config, groupName, identifier, out processUri, out fileUri))
                {
                    logger.Log("done starting process service");

                    if (!RendezvousWithParent(processUri, fileUri, directory, logger))
                    {
                        processService.ShutDown();
                    }
                }
                else
                {
                    logger.Log("process service start failed");
                }

                logger.Log("waiting for process service to exit");
                processService.WaitForExit();
                logger.Log("process service has exited");
            }

            logger.Log("-------- Stopping Dryad Process Service --------");
            logger.Stop();
        }
Esempio n. 2
0
        private async Task HandlePutRequest(IHttpContext context)
        {
            logger.Log("put entered");
            var req = context.Request;

            var u         = req.Url;
            int processId = ProcessIdFromURI(u);

            if (processId < 0)
            {
                if (processId == -2)
                {
                    await server.ReportSuccess(context, true);

                    logger.Log("shutting down");
                    var dontBlock = Task.Run(() => parent.ShutDown());
                    return;
                }
                else
                {
                    logger.Log("bad process id");
                    await server.ReportError(context, HttpStatusCode.BadRequest, "Malformed process ID URI");

                    return;
                }
            }

            var opString = req.QueryString["op"];

            if (opString == null)
            {
                logger.Log("no op");
                await server.ReportError(context, HttpStatusCode.BadRequest, "No op specified");

                return;
            }

            if (opString == "create")
            {
                logger.Log("put", "starting create");
                await CreateProcess(context, processId);
            }
            else if (opString == "setstatus")
            {
                logger.Log("put", "starting setvalue");
                await SetValue(context, processId);
            }
            else if (opString == "kill")
            {
                logger.Log("put", "starting kill");
                await Kill(context, processId);
            }
            else
            {
                logger.Log("put", "bad op {0}", opString);
                await server.ReportError(context, HttpStatusCode.BadRequest, "Unknown op specified: " + opString);
            }
        }
Esempio n. 3
0
        static void Main(string[] args)
        {
            ILogger logger = new SimpleLogger("processservice.log");
            logger.Log("startup", "-------- Starting Dryad Process Service --------");

            var directory = Directory.GetCurrentDirectory();

            if (!GetEnvironmentDetails(logger))
            {
                logger.Log("Failed to read environment variables");
                logger.Stop();
                return;
            }

            XDocument config;
            try
            {
                string configFile = args[0];
                logger.Log("Opening config file " + configFile);
                config = XDocument.Load(configFile);
                logger.Log("Opened config file " + configFile);
            }
            catch (Exception e)
            {
                logger.Log("Failed to read config file: " + e.ToString());
                logger.Stop();
                return;
            }

            using (var processService = new ProcessService(logger))
            {
                string processUri;
                string fileUri;

                logger.Log("starting process service");
                if (processService.Start(config, groupName, identifier, out processUri, out fileUri))
                {
                    logger.Log("done starting process service");

                    if (!RendezvousWithParent(processUri, fileUri, directory, logger))
                    {
                        processService.ShutDown();
                    }
                }
                else
                {
                    logger.Log("process service start failed");
                }

                logger.Log("waiting for process service to exit");
                processService.WaitForExit();
                logger.Log("process service has exited");
            }

            logger.Log("-------- Stopping Dryad Process Service --------");
            logger.Stop();
        }