Exemple #1
0
        public Histogram GetHistogram(int jobId)
        {
            FJobRequest fJobRequest  = FJobRequest.CreateGetHistogramRequest(jobId);
            string      requestMsgId = SendJobToMq(fJobRequest);

            FHistorgram fHistorgram = GetResponseFromMq(requestMsgId);
            Histogram   result      = new Histogram(jobId, fHistorgram.GetValues(), fHistorgram.GetOccurances());

            return(result);
        }
Exemple #2
0
        private void SendHistogram(FHistorgram fHistorgram, string requestMsgId)
        {
            using (MessageQueue outQ = MqHelper.GetQ(OUTPUT_HIST_Q_PATH, QueueAccessMode.Send, null, null))
            {
                Message r = new Message(fHistorgram)
                {
                    CorrelationId = requestMsgId
                };

                Console.WriteLine($"Sending a Histogram response message with corId = {requestMsgId}.");
                outQ.Send(r);
            }
        }
Exemple #3
0
        private FHistorgram GetHistogram(FJobRequest fJobRequest)
        {
            int jobId = fJobRequest.JobId;

            if (TryGetJob(jobId, out Job job))
            {
                IDictionary <int, int> h      = job.GetHistogram();
                FHistorgram            result = new FHistorgram(jobId, h);
                return(result);
            }
            else
            {
                return(null);
            }
        }
Exemple #4
0
        private FHistorgram GetResponseFromMq(string requestMsgId)
        {
            using (MessageQueue inQ = GetJobResponseQueue())
            {
                Message m = MqHelper.GetMessageByCorId(inQ, requestMsgId, WaitDuration);

                if (m == null)
                {
                    Debug.WriteLine("The FHistogram did not arrive.");
                    return(null);
                }

                Debug.WriteLine("Received a message.");
                FHistorgram result = (FHistorgram)m.Body;

                return(result);
            }
        }
Exemple #5
0
        private void HandleRequestMessage(FJobRequest jobRequest, string requestMsgId)
        {
            try
            {
                switch (jobRequest.RequestType)
                {
                case FJobRequestType.Generate:
                    Console.WriteLine($"Starting Job: {jobRequest.JobId}.");
                    Job job = new Job(jobRequest, requestMsgId);

                    // Send all blocks on file.
                    _replayWorkQueue.Add(job);

                    // Add job to list of jobs from which new "build block" operations are queued.
                    SubmitJob(job);

                    Console.WriteLine($"The job has been started. Job: {jobRequest.JobId}.");
                    break;

                case FJobRequestType.Replay:
                    Console.WriteLine($"\n\nReplaying Job: {jobRequest.JobId}.");
                    ReplayExistingJob(jobRequest.JobId);
                    break;

                case FJobRequestType.GetHistogram:
                    Console.WriteLine($"Handling GetHistogram Job: {jobRequest.JobId}.");
                    FHistorgram fHistorgram = GetHistogram(jobRequest);

                    Console.WriteLine($"Sending GetHistogram Result for Job: {jobRequest.JobId}.");
                    SendHistogram(fHistorgram, requestMsgId);
                    break;

                //case FJobRequestType.IncreaseInterations:
                //	break;

                case FJobRequestType.TransformCoords:
                    Console.WriteLine($"Handling Transform Coords Job: {jobRequest.JobId}.");
                    FCoordsResult fCoordsResult = GetNewCoords(jobRequest);
                    SendFCoordsResult(fCoordsResult, requestMsgId);
                    break;

                case FJobRequestType.Delete:
                    bool deleteJob = jobRequest.Name.ToLowerInvariant() == "deljob";

                    string delClause = deleteJob ? $". Deleting the repo" : null;
                    Console.WriteLine($"Cancelling Job: {jobRequest.JobId}{delClause}.");

                    CancelJob(jobRequest.JobId, deleteJob);
                    Console.WriteLine($"The Job has been stopped Job: {jobRequest.JobId}.");
                    break;

                default:
                    Console.WriteLine($"Ignoring JobRequest with type: {jobRequest.RequestType} with JobId: {jobRequest.JobId}.");
                    break;
                }
            }
            catch (Exception e)
            {
                Debug.WriteLine($"Got an exception while processing a request message. The error is {e.Message}.");
            }
        }