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); }
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); } }
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); } }
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); } }
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}."); } }