예제 #1
0
        private RemoteStartupResponse Execute(RemoteStartupRequest request)
        {
            bool success;

            switch (request.Method)
            {
            case ModuleStartupMethod.LaunchAlways:
                success = this.processManager.LaunchProcess(request.ProcessInfo);
                break;

            case ModuleStartupMethod.LaunchAndWaitReady:
            case ModuleStartupMethod.KillThenLaunch:
                success = this.processManager.CloseThenKillProcess(request.ProcessInfo) &&
                          this.processManager.LaunchProcess(request.ProcessInfo);
                break;

            case ModuleStartupMethod.KillOnly:
                success = this.processManager.CloseThenKillProcess(request.ProcessInfo);
                break;

            default:
                success = true;
                break;
            }
            return(new RemoteStartupResponse(request, success, null));
        }
예제 #2
0
        private void Parse(string s, IPEndPoint remoteEndPoint)
        {
            RemoteStartupRequest  request;
            RemoteStartupResponse response;
            string serialized;

            try
            {
                request = RemoteStartupRequest.FromXml(s);
            }
            catch { request = null; }
            if (request == null)
            {
                //response = new RemoteStartupResponse(request, false, "Invalid request");
                return;
            }
            else
            {
                response = Execute(request);
            }
            serialized = RemoteStartupResponse.ToXml(response);
            server.SendTo(remoteEndPoint, serialized);
        }