Exemplo n.º 1
0
        public override async Task <SerializeReply> Serialize(SerializeRequest request, ServerCallContext context)
        {
            await _semaphoreSlim.WaitAsync();

            var reply = new SerializeReply();

            try
            {
                var serialized = ROpsApi.Serialize(request.ObjectName);

                reply.Payload = new SerializePayload
                {
                    Serialized = ByteString.CopyFrom(serialized)
                };
            }
            catch (Exception ex)
            {
                reply.Error = PopulateError(ex);
                _logger.LogError(ex, nameof(Serialize));
            }
            finally
            {
                _semaphoreSlim.Release();
            }

            return(await Task.FromResult(reply));
        }
Exemplo n.º 2
0
        public void TestSerializeRoundTrip()
        {
            // arrange
            var lines = new[]
            {
                $"list_{nameof(TestSerializeRoundTrip)} <- list(ints = c(1,2,3), nums = c(1.0, 2.0, 3.), alpha = c(\"a\",\"b\",\"c\"))",
                $"copy_of_list_{nameof(TestSerializeRoundTrip)} <- list_{nameof(TestSerializeRoundTrip)}"
            };

            // act
            ROpsApi.SourceLines(lines);
            var bytes = ROpsApi.Serialize($"list_{nameof(TestSerializeRoundTrip)}");

            ROpsApi.EvaluateNonQuery($"rm(list_{nameof(TestSerializeRoundTrip)})");
            ROpsApi.Unserialize(bytes, $"list_{nameof(TestSerializeRoundTrip)}");
            var evaluated = ROpsApi.Evaluate($"all.equal(copy_of_list_{nameof(TestSerializeRoundTrip)}, list_{nameof(TestSerializeRoundTrip)})");

            // assert
            Assert.IsNotNull(evaluated.First().Value);
            Assert.IsTrue(evaluated.First().Value !.First().Resolve(out bool allEqual) && allEqual);
        }