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