Ejemplo n.º 1
0
 private FCoordsResult GetNewCoords(FJobRequest fJobRequest)
 {
     using (CoordsMath cm = new CoordsMath())
     {
         FCoordsResult result = cm.GetNewCoords(fJobRequest);
         return(result);
     }
 }
Ejemplo n.º 2
0
        private void SendFCoordsResult(FCoordsResult fCoordsResult, string requestMsgId)
        {
            using (MessageQueue outQ = MqHelper.GetQ(OUTPUT_COORDS_Q_PATH, QueueAccessMode.Send, null, null))
            {
                Message r = new Message(fCoordsResult)
                {
                    CorrelationId = requestMsgId
                };

                Console.WriteLine($"Sending a Coords response message with corId = {requestMsgId}.");
                outQ.Send(r);
            }
        }
Ejemplo n.º 3
0
        private FCoordsResult GetResult(int jobId, MCoordsDd mCoordsDd)
        {
            Coords coords = new Coords
                            (
                mCoordsDd.Start().X().GetStringVal(),
                mCoordsDd.End().X().GetStringVal(),
                mCoordsDd.Start().Y().GetStringVal(),
                mCoordsDd.End().Y().GetStringVal()
                            );

            FCoordsResult result = new FCoordsResult(jobId, coords);

            return(result);
        }
Ejemplo n.º 4
0
        private SCoords GetResponseFromMq(string requestMsgId)
        {
            using (MessageQueue inQ = GetJobResponseQueue())
            {
                Message m = MqHelper.GetMessageByCorId(inQ, requestMsgId, WaitDuration);

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

                Debug.WriteLine("Received a message.");
                FCoordsResult jobResult = (FCoordsResult)m.Body;

                MqMessages.Coords coords = jobResult.Coords;

                SPoint  leftBot  = new SPoint(coords.StartX, coords.StartY);
                SPoint  rightTop = new SPoint(coords.EndX, coords.EndY);
                SCoords result   = new SCoords(leftBot, rightTop);

                return(result);
            }
        }
Ejemplo n.º 5
0
        public FCoordsResult GetNewCoords(FJobRequest fJobRequest)
        {
            FCoordsResult result = null;

            if (fJobRequest.RequestType != FJobRequestType.TransformCoords)
            {
                throw new ArgumentException("The request type must be TransformCoords.");
            }

            if (!fJobRequest.TransformType.HasValue)
            {
                throw new ArgumentException("The transform type cannot be null.");
            }

            MCoordsDd curCoords = GetMCoords(fJobRequest.Coords);

            switch (fJobRequest.TransformType)
            {
            case TransformType.In:
                qdDotNet.SizeInt sizeInt = new qdDotNet.SizeInt(fJobRequest.SamplePoints.W, fJobRequest.SamplePoints.H);

                qdDotNet.RectangleInt area = new qdDotNet.RectangleInt(
                    new qdDotNet.PointInt(fJobRequest.Area.Point.X, fJobRequest.Area.Point.Y),
                    new qdDotNet.SizeInt(fJobRequest.Area.Size.W, fJobRequest.Area.Size.H));

                MCoordsDd newCoords = _fCoordsMath.ZoomIn(curCoords, sizeInt, area);
                result = GetResult(fJobRequest.JobId, newCoords);
                break;

            case TransformType.Out:
                double amount = GetAmount(fJobRequest.Area.Point.X);
                newCoords = _fCoordsMath.ZoomOut(curCoords, amount);
                result    = GetResult(fJobRequest.JobId, newCoords);
                break;

            case TransformType.Right:
                amount    = GetAmount(fJobRequest.Area.Point.X);
                newCoords = _fCoordsMath.ShiftRight(curCoords, amount);
                result    = GetResult(fJobRequest.JobId, newCoords);
                break;

            case TransformType.Left:
                amount    = GetAmount(fJobRequest.Area.Point.X);
                newCoords = _fCoordsMath.ShiftRight(curCoords, -amount);
                result    = GetResult(fJobRequest.JobId, newCoords);
                break;

            case TransformType.Down:
                amount    = GetAmount(fJobRequest.Area.Point.X);
                newCoords = _fCoordsMath.ShiftUp(curCoords, -amount);
                result    = GetResult(fJobRequest.JobId, newCoords);
                break;

            case TransformType.Up:
                amount    = GetAmount(fJobRequest.Area.Point.X);
                newCoords = _fCoordsMath.ShiftUp(curCoords, amount);
                result    = GetResult(fJobRequest.JobId, newCoords);
                break;

            default:
                Debug.WriteLine($"Transform Type: {fJobRequest.TransformType} is not supported.");
                break;
            }

            return(result);
        }
Ejemplo n.º 6
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}.");
            }
        }