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