public override async Task Decompose(PrimeRequest request, IServerStreamWriter <PrimeResponse> responseStream, ServerCallContext context)
        {
            Console.WriteLine($"Request received to decompose {request.Number}");

            int k = 2;
            int n = request.Number;

            while (n > 1)
            {
                if (n % k == 0)
                {
                    await responseStream.WriteAsync(new PrimeResponse()
                    {
                        Decomposition = k
                    });

                    n = n / k;
                }
                else
                {
                    k++;
                }
            }
            //return base.Decompose(request, responseStream, context);
        }
Ejemplo n.º 2
0
        public override async Task Prime(PrimeRequest request, IServerStreamWriter <PrimeResponse> responseStream, ServerCallContext context)
        {
            Console.WriteLine("The Server Recieved the request: ");
            Console.WriteLine(request.ToString());
            int result;
            int k = 2;
            int N = request.Number;

            while (N > 1)
            {
                if (N % k == 0)
                {
                    result = k;
                    await responseStream.WriteAsync(new PrimeResponse()
                    {
                        Result = result
                    });

                    N /= k;
                }
                else
                {
                    k += 1;
                }
            }
        }
Ejemplo n.º 3
0
        private async Task SetThePrimeInCache(PrimeRequest request)
        {
            _logger.LogInformation("Setting the prime number in the cache: " + request.Number);

            await _cache.SetStringAsync(request.Number.ToString(), "true", new DistributedCacheEntryOptions
            {
                AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(30)
            });
        }
Ejemplo n.º 4
0
        /// <summary>
        /// A straight forward implementation to calculate a prime number.
        /// Restrict yourself to the max calc for the square-root of the given input number
        ///
        /// Input: A number
        /// Response: true if it is a prime number, false otherwise
        /// </summary>
        /// <param name="request">a number</param>
        /// <param name="context"></param>
        /// <returns>true if it is a prime number, false otherwise</returns>
        public override async Task <PrimeReply> IsItPrime(PrimeRequest request, ServerCallContext context)
        {
            if (request == null)
            {
                return(FALSE_RESULT);
            }

            if (request.Number <= 0)
            {
                return(FALSE_RESULT);
            }
            else if (request.Number == 1 || request.Number == 2)
            {
                return(TRUE_RESULT);
            }
            else if (request.Number % 2 == 0)
            {
                return(FALSE_RESULT);
            }
            else
            {
                var answerFromCache = await GetFromCache(request.Number);

                if (answerFromCache == CACHE_HIT_SUCCESS)
                {
                    return(TRUE_RESULT);
                }

                var boundary = (int)Math.Floor(Math.Sqrt(request.Number));

                for (int i = 3; i <= boundary; i += 2)
                {
                    if (request.Number % i == 0)
                    {
                        return(FALSE_RESULT);
                    }
                }

                await SetThePrimeInCache(request);

                _mqSender.Send(_queueName, request.Number.ToString());
                return(TRUE_RESULT);
            }
        }
Ejemplo n.º 5
0
        private static async Task PrimeNumbersStream(Channel channel)
        {
            Console.WriteLine("Prime numbers stream");

            var primeClient = new PrimeNumbersService.PrimeNumbersServiceClient(channel);

            var primeRequest = new PrimeRequest()
            {
                Number = new PrimeNumbers.Number {
                    A = 120
                }
            };

            var responsePrimeStream = primeClient.ListPrimeNumbers(primeRequest);

            while (await responsePrimeStream.ResponseStream.MoveNext())
            {
                Console.WriteLine(responsePrimeStream.ResponseStream.Current.Result);
                await Task.Delay(200);
            }
            Console.WriteLine("");
        }
Ejemplo n.º 6
0
        public async override Task ListPrimeNumbers(PrimeRequest request, IServerStreamWriter <PrimeResponse> responseStream, ServerCallContext context)
        {
            Console.WriteLine("The server received the request: ");
            Console.WriteLine(request.ToString());

            var n = request.Number.A;
            var k = 2;

            while (request.Number.A > 1)
            {
                if (n % k == 0)
                {
                    n = n / k;
                    await responseStream.WriteAsync(new PrimeResponse()
                    {
                        Result = k
                    });
                }
                else
                {
                    k = k + 1;
                }
            }
        }
Ejemplo n.º 7
0
        static async Task Main(string[] args)
        {
            Channel channel = new Channel(target, ChannelCredentials.Insecure);

            await channel.ConnectAsync().ContinueWith((task) =>
            {
                if (task.Status == TaskStatus.RanToCompletion)
                {
                    Console.WriteLine("The client connected successfully");
                }
            });

            //var client = new DummyService.DummyServiceClient(channel);
            var greetingClient = new GreetingService.GreetingServiceClient(channel);

            var greeting = new Greeting()
            {
                FirstName = "Shai",
                LastName  = "Blaustien"
            };

            var request = new GreetingRequest()
            {
                Greeting = greeting
            };

            var response = greetingClient.Greet(request);

            Console.WriteLine(response.Result);


            var calculatorService = new CalculatorService.CalculatorServiceClient(channel);
            var sumRequest        = new CalRequest {
                A = 15, B = 28
            };
            var mulRequest = new CalRequest {
                A = 5, B = 3
            };

            var sumResponse = calculatorService.Sum(sumRequest);

            Console.WriteLine(sumResponse.Result);

            var mulResponse = calculatorService.Mul(mulRequest);

            Console.WriteLine(mulResponse.Result);

            //var requestForMultiGreet = new GreetManyTimesRequest() { Greeting = greeting };
            //var manyGreetingsResponse = greetingClient.GreetManyTimes(requestForMultiGreet);
            //while(await manyGreetingsResponse.ResponseStream.MoveNext())
            //{
            //    Console.WriteLine(manyGreetingsResponse.ResponseStream.Current.Result);
            //    await Task.Delay(200);
            //}

            var requestForPrimeNumbers = new PrimeRequest()
            {
                Number = 135
            };
            var PrimeResponse = calculatorService.Prime(requestForPrimeNumbers);

            while (await PrimeResponse.ResponseStream.MoveNext())
            {
                Console.WriteLine(PrimeResponse.ResponseStream.Current.Result);
                await Task.Delay(1500);
            }
            channel.ShutdownAsync().Wait();
            Console.ReadKey();
        }
 public PrimeCalculationResult CalculatePrimes([FromQuery] PrimeRequest primeRequest)
 {
     return(PrimeCalculator.GetPrimes(primeRequest.Number));
 }