Ejemplo n.º 1
0
        public SpecfileResult FileCheck(File file)
        {
            if (file.Type != FileType.RepGen)
            {
                throw new Exception("Cannot check a " + file.FileTypeString() + " file");
            }

            _socket.Write("mm3\u001B");
            _socket.ReadCommand();
            _socket.Write("7\r");
            _socket.ReadCommand();
            _socket.ReadCommand();
            _socket.Write(file.Name + '\r');

            ISymCommand cmd = _socket.ReadCommand();

            if (cmd.HasParameter("Warning") || cmd.HasParameter("Error"))
            {
                _socket.ReadCommand();
                throw new FileNotFoundException();
            }
            if (cmd.Get("Action") == "NoError")
            {
                _socket.ReadCommand();
                return(SpecfileResult.Success());
            }

            int    errRow = 0, errCol = 0;
            string errFile = "", errText = "";

            if (cmd.Get("Action") == "Init")
            {
                errFile = cmd.Get("FileName");
                cmd     = _socket.ReadCommand();
                while (cmd.Get("Action") != "DisplayEdit")
                {
                    if (cmd.Get("Action") == "FileInfo")
                    {
                        errRow = int.Parse(cmd.Get("Line").Replace(",", ""));
                        errCol = int.Parse(cmd.Get("Col").Replace(",", ""));
                    }
                    else if (cmd.Get("Action") == "ErrText")
                    {
                        errText += cmd.Get("Line") + " ";
                    }
                    cmd = _socket.ReadCommand();
                }
                _socket.ReadCommand();

                return(new SpecfileResult(file, errFile, errText, errRow, errCol));
            }

            throw new Exception("An unknown error occurred.");
        }
Ejemplo n.º 2
0
        public SpecfileResult FileCheck(File file)
        {
            if (file.Type != FileType.RepGen)
                throw new Exception("Cannot check a " + file.FileTypeString() + " file");

            _socket.Write("mm3\u001B");
            _socket.ReadCommand();
            _socket.Write("7\r");
            _socket.ReadCommand();
            _socket.ReadCommand();
            _socket.Write(file.Name + '\r');

            ISymCommand cmd = _socket.ReadCommand();
            if (cmd.HasParameter("Warning") || cmd.HasParameter("Error"))
            {
                _socket.ReadCommand();
                throw new FileNotFoundException();
            }
            if (cmd.Get("Action") == "NoError")
            {
                _socket.ReadCommand();
                return SpecfileResult.Success();
            }

            int errRow = 0, errCol = 0;
            string errFile = "", errText = "";

            if (cmd.Get("Action") == "Init")
            {
                errFile = cmd.Get("FileName");
                cmd = _socket.ReadCommand();
                while (cmd.Get("Action") != "DisplayEdit")
                {
                    if (cmd.Get("Action") == "FileInfo")
                    {
                        errRow = int.Parse(cmd.Get("Line").Replace(",", ""));
                        errCol = int.Parse(cmd.Get("Col").Replace(",", ""));
                    }
                    else if (cmd.Get("Action") == "ErrText")
                    {
                        errText += cmd.Get("Line") + " ";
                    }
                    cmd = _socket.ReadCommand();
                }
                _socket.ReadCommand();

                return new SpecfileResult(file, errFile, errText, errRow, errCol);
            }

            throw new Exception("An unknown error occurred.");
        }
Ejemplo n.º 3
0
        public SpecfileResult FileInstall(File file)
        {
            int         errRow = 0, errCol = 0;
            string      errFile = "", errText = "";
            ISymCommand cmd;

            if (file.Type != FileType.RepGen)
            {
                throw new Exception("Cannot Install a " + file.FileTypeString() + " File");
            }

            _socket.Write("mm3\u001B");
            cmd = _socket.ReadCommand();
            LogCommand(cmd);
            _socket.Write("8\r");
            cmd = _socket.ReadCommand();
            LogCommand(cmd);
            _socket.Write(file.Name + '\r');

            cmd = _socket.ReadCommand();
            LogCommand(cmd);

            DateTime startTime = DateTime.Now;

            while (!cmd.HasParameter("Action"))
            {
                if ((DateTime.Now - startTime).TotalSeconds > 15)
                {
                    throw new TimeoutException("Specfile Install Timeout");
                }

                if (cmd.Get("Type") == "Warning" || cmd.HasParameter("Warning") ||
                    cmd.Get("Type") == "Error" || cmd.HasParameter("Error"))
                {
                    throw new FileNotFoundException();
                }

                if (cmd.Command == "SpecfileData")
                {
                    _socket.Write("1\r");
                    while (!cmd.HasParameter("Size"))
                    {
                        cmd = _socket.ReadCommand();
                        LogCommand(cmd);
                    }
                    return(SpecfileResult.Success(int.Parse(cmd.Get("Size").Replace(",", ""))));
                }

                cmd = _socket.ReadCommand();
                LogCommand(cmd);
            }

            if (cmd.Get("Action") == "Init")
            {
                errFile = cmd.Get("FileName");
            }

            startTime = DateTime.Now;
            cmd       = _socket.ReadCommand();
            while (cmd.Get("Action") != "DisplayEdit" && cmd.Command != "SpecfileData")
            {
                var elapsedTime = DateTime.Now - startTime;
                if (elapsedTime.TotalSeconds > 5)
                {
                    throw new TimeoutException("Specfile Install Timeout");
                }
                if (cmd.Get("Action") == "FileInfo")
                {
                    errRow = int.Parse(cmd.Get("Line").Replace(",", ""));
                    errCol = int.Parse(cmd.Get("Col").Replace(",", ""));
                }
                else if (cmd.Get("Action") == "ErrText")
                {
                    errText += cmd.Get("Line") + " ";
                }
                cmd = _socket.ReadCommand();
                LogCommand(cmd);
            }
            return(new SpecfileResult(file, errFile, errText, errRow, errCol));
        }
Ejemplo n.º 4
0
        public RepgenRunResult FileRun(File file, FileRunStatus callStatus, FileRunPrompt callPrompt, int queue, RunWorkerCompletedEventHandler Notify = null)
        {
            if (file.Type != FileType.RepGen)
                throw new InvalidOperationException("Cannot run a " + file.FileTypeString() + " file");

            ISymCommand cmd;
            callStatus(RunState.Initializing, file);

            _socket.Write("mm0\u001B");

            WaitForCommand("Input");
            _socket.Write("1\r");

            WaitForCommand("Input");
            _socket.Write("11\r");

            WaitForPrompt("Specification File");
            _socket.Write(file.Name + "\r");
            bool erroredOut = false;
            while (true)
            {
                cmd = _socket.ReadCommand();

                if (cmd.Command == "Input")
                {
                    if (cmd.Get("HelpCode") == "20301") break;

                    callStatus(RunState.Prompts, file);

                    string result = callPrompt(cmd.Get("Prompt"));
                    if (result == null) //cancelled
                    {
                        _socket.Write("\u001B");
                        cmd = _socket.ReadCommand();
                        while (cmd.Command != "Input")
                            cmd = _socket.ReadCommand();
                        callStatus(RunState.Cancelled, file);
                        return RepgenRunResult.Cancelled();
                    }

                    _socket.Write(result.Trim() + '\r');
                }
                else if (cmd.Command == "Bell")
                    callStatus(RunState.Prompts, "Invalid Prompt Input, Please Re-Enter");
                else if ((cmd.Command == "Batch") && (cmd.Get("Text") == "No such file or directory"))
                {
                    cmd = _socket.ReadCommand();
                    while (cmd.Command != "Input")
                        cmd = _socket.ReadCommand();
                    callStatus(RunState.Failed, "File not found");
                    return RepgenRunResult.FileNotFound();
                }
                else if (cmd.Command == "SpecfileErr")
                    erroredOut = true;
                else if (erroredOut && (cmd.Command == "Batch") && (cmd.Get("Action") == "DisplayLine"))
                {
                    string err = cmd.Get("Text");
                    cmd = _socket.ReadCommand();
                    while (cmd.Command != "Input")
                        cmd = _socket.ReadCommand();
                    callStatus(RunState.Failed, err);
                    return RepgenRunResult.Error(err);
                }
                else if ((cmd.Command == "Batch") && (cmd.Get("Action") == "DisplayLine"))
                    callStatus(RunState.Initializing, cmd.Get("Text"));
            }

            while (cmd.Get("Prompt").Contains("Specification File"))
            {
                _socket.Write("\r");
                cmd = _socket.ReadCommand();
            }

            WaitForPrompt("Batch Options");
            _socket.Write("0\r");

            Dictionary<int, int> availableQueues = GetQueueList(cmd);

            if (queue < 0)
                queue = GetOpenQueue(availableQueues);

            WaitForPrompt("Batch Queue");
            _socket.Write(queue + "\r");

            WaitForCommand("Input");

            _socket.Write("1\r");
            cmd = _socket.ReadCommand();
            while (cmd.Command != "Input")
                cmd = _socket.ReadCommand();

            cmd = new SymCommand("Misc");
            cmd.Set("InfoType", "BatchQueues");
            _socket.Write(cmd);

            int newestTime = 0;
            int sequenceNo = -1;
            cmd = _socket.ReadCommand();
            while (!cmd.HasParameter("Done"))
            {
                if (cmd.Get("Action") == "QueueEntry")
                {
                    int currTime = Utilities.ConvertTime(cmd.Get("Time"));

                    if (currTime >= newestTime)
                    {
                        newestTime = currTime;
                        sequenceNo = int.Parse(cmd.Get("Seq"));
                    }
                }
                cmd = _socket.ReadCommand();
            }

            callStatus(RunState.Running, sequenceNo);

            if (Notify != null)
            {
                var worker = new BackgroundWorker();

                worker.DoWork += (sender, eventArgs) =>
                    {
                        Thread.Sleep(5000); // Wait 5 seconds before first check
                        while (IsFileRunning(sequenceNo))
                        {
                            Thread.Sleep(15000);
                        }

                        object[] result = new object[3];
                        result[0] = file.Name;
                        result[1] = sequenceNo;
                        result[2] = GetBatchOutputSequence(file.Name, newestTime);

                        eventArgs.Result = result;
                    };

                worker.RunWorkerCompleted += Notify;

                worker.RunWorkerAsync();
            }

            return RepgenRunResult.Okay(sequenceNo, newestTime);
        }
Ejemplo n.º 5
0
        public RepgenRunResult FileRun(File file, FileRunStatus callStatus, FileRunPrompt callPrompt, int queue, RunWorkerCompletedEventHandler Notify = null)
        {
            if (file.Type != FileType.RepGen)
            {
                throw new InvalidOperationException("Cannot run a " + file.FileTypeString() + " file");
            }

            ISymCommand cmd;

            callStatus(RunState.Initializing, file);

            _socket.Write("mm0\u001B");

            WaitForCommand("Input");
            _socket.Write("1\r");

            WaitForCommand("Input");
            _socket.Write("11\r");

            WaitForPrompt("Specification File");
            _socket.Write(file.Name + "\r");
            bool erroredOut = false;

            while (true)
            {
                cmd = _socket.ReadCommand();

                if (cmd.Command == "Input")
                {
                    if (cmd.Get("HelpCode") == "20301")
                    {
                        break;
                    }

                    callStatus(RunState.Prompts, file);

                    string result = callPrompt(cmd.Get("Prompt"));
                    if (result == null) //cancelled
                    {
                        _socket.Write("\u001B");
                        cmd = _socket.ReadCommand();
                        while (cmd.Command != "Input")
                        {
                            cmd = _socket.ReadCommand();
                        }
                        callStatus(RunState.Cancelled, file);
                        return(RepgenRunResult.Cancelled());
                    }

                    _socket.Write(result.Trim() + '\r');
                }
                else if (cmd.Command == "Bell")
                {
                    callStatus(RunState.Prompts, "Invalid Prompt Input, Please Re-Enter");
                }
                else if ((cmd.Command == "Batch") && (cmd.Get("Text") == "No such file or directory"))
                {
                    cmd = _socket.ReadCommand();
                    while (cmd.Command != "Input")
                    {
                        cmd = _socket.ReadCommand();
                    }
                    callStatus(RunState.Failed, "File not found");
                    return(RepgenRunResult.FileNotFound());
                }
                else if (cmd.Command == "SpecfileErr")
                {
                    erroredOut = true;
                }
                else if (erroredOut && (cmd.Command == "Batch") && (cmd.Get("Action") == "DisplayLine"))
                {
                    string err = cmd.Get("Text");
                    cmd = _socket.ReadCommand();
                    while (cmd.Command != "Input")
                    {
                        cmd = _socket.ReadCommand();
                    }
                    callStatus(RunState.Failed, err);
                    return(RepgenRunResult.Error(err));
                }
                else if ((cmd.Command == "Batch") && (cmd.Get("Action") == "DisplayLine"))
                {
                    callStatus(RunState.Initializing, cmd.Get("Text"));
                }
            }

            while (cmd.Get("Prompt").Contains("Specification File"))
            {
                _socket.Write("\r");
                cmd = _socket.ReadCommand();
            }

            WaitForPrompt("Batch Options");
            _socket.Write("0\r");

            Dictionary <int, int> availableQueues = GetQueueList(cmd);

            if (queue < 0)
            {
                queue = GetOpenQueue(availableQueues);
            }

            WaitForPrompt("Batch Queue");
            _socket.Write(queue + "\r");

            WaitForCommand("Input");

            _socket.Write("1\r");
            cmd = _socket.ReadCommand();
            while (cmd.Command != "Input")
            {
                cmd = _socket.ReadCommand();
            }

            cmd = new SymCommand("Misc");
            cmd.Set("InfoType", "BatchQueues");
            _socket.Write(cmd);

            int newestTime = 0;
            int sequenceNo = -1;

            cmd = _socket.ReadCommand();
            while (!cmd.HasParameter("Done"))
            {
                if (cmd.Get("Action") == "QueueEntry")
                {
                    int currTime = Utilities.ConvertTime(cmd.Get("Time"));

                    if (currTime >= newestTime)
                    {
                        newestTime = currTime;
                        sequenceNo = int.Parse(cmd.Get("Seq"));
                    }
                }
                cmd = _socket.ReadCommand();
            }

            callStatus(RunState.Running, sequenceNo);

            if (Notify != null)
            {
                var worker = new BackgroundWorker();

                worker.DoWork += (sender, eventArgs) =>
                {
                    Thread.Sleep(5000);     // Wait 5 seconds before first check
                    while (IsFileRunning(sequenceNo))
                    {
                        Thread.Sleep(15000);
                    }

                    object[] result = new object[3];
                    result[0] = file.Name;
                    result[1] = sequenceNo;
                    result[2] = GetBatchOutputSequence(file.Name, newestTime);

                    eventArgs.Result = result;
                };

                worker.RunWorkerCompleted += Notify;

                worker.RunWorkerAsync();
            }

            return(RepgenRunResult.Okay(sequenceNo, newestTime));
        }
Ejemplo n.º 6
0
        public SpecfileResult FileInstall(File file)
        {
            int errRow = 0, errCol = 0;
            string errFile = "", errText = "";
            ISymCommand cmd;

            if (file.Type != FileType.RepGen)
                throw new Exception("Cannot Install a " + file.FileTypeString() + " File");

            _socket.Write("mm3\u001B");
            cmd = _socket.ReadCommand();
            LogCommand(cmd);
            _socket.Write("8\r");
            cmd = _socket.ReadCommand();
            LogCommand(cmd);
            _socket.Write(file.Name + '\r');

            cmd = _socket.ReadCommand();
            LogCommand(cmd);

            DateTime startTime = DateTime.Now;
            while (!cmd.HasParameter("Action"))
            {
                if ((DateTime.Now - startTime).TotalSeconds > 15)
                {
                    throw new TimeoutException("Specfile Install Timeout");
                }

                if (cmd.Get("Type") == "Warning" || cmd.HasParameter("Warning") ||
                    cmd.Get("Type") == "Error" || cmd.HasParameter("Error"))
                {
                    throw new FileNotFoundException();
                }

                if (cmd.Command == "SpecfileData")
                {
                    _socket.Write("1\r");
                    while (!cmd.HasParameter("Size"))
                    {
                        cmd = _socket.ReadCommand();
                        LogCommand(cmd);
                    }
                    return SpecfileResult.Success(int.Parse(cmd.Get("Size").Replace(",", "")));
                }

                cmd = _socket.ReadCommand();
                LogCommand(cmd);
            }

            if (cmd.Get("Action") == "Init")
            {
                errFile = cmd.Get("FileName");
            }

            startTime = DateTime.Now;
            cmd = _socket.ReadCommand();
            while (cmd.Get("Action") != "DisplayEdit" && cmd.Command != "SpecfileData")
            {
                var elapsedTime = DateTime.Now - startTime;
                if (elapsedTime.TotalSeconds > 5)
                {
                    throw new TimeoutException("Specfile Install Timeout");
                }
                if (cmd.Get("Action") == "FileInfo")
                {
                    errRow = int.Parse(cmd.Get("Line").Replace(",", ""));
                    errCol = int.Parse(cmd.Get("Col").Replace(",", ""));
                }
                else if (cmd.Get("Action") == "ErrText")
                    errText += cmd.Get("Line") + " ";
                cmd = _socket.ReadCommand();
                LogCommand(cmd);
            }
            return new SpecfileResult(file, errFile, errText, errRow, errCol);
        }