private async Task TestPageWriteAndRead(PagesCluster clusterPage, long pageId, Dictionary <long, byte[]> cache) { var messagePageId = new MessagePageId(pageId); var hasPage = await clusterPage.HasPageAsync(messagePageId); Assert.IsFalse(hasPage); var msg = new MessageContentGrpcModel { Created = DateTime.UtcNow, Data = new [] { (byte)pageId, (byte)pageId, (byte)pageId }, MessageId = pageId, }; var content = new CompressedPage(new MessagePageId(pageId), new [] { msg }); cache.Add(pageId, content.ZippedContent.ToArray()); await clusterPage.WriteAsync(messagePageId, content); hasPage = await clusterPage.HasPageAsync(messagePageId); Assert.IsTrue(hasPage); var resultContent = await clusterPage.ReadAsync(messagePageId); resultContent.ZippedContent.AssertAllBytesAreEqualWith(content.ZippedContent); }
public static MessageRestApiModel Create(MessageContentGrpcModel model) { return(new() { Id = model.MessageId, Content = Convert.ToBase64String(model.Data), Created = model.Created }); }
public static MessageContentBlobContract Create(MessageContentGrpcModel src) { return(new MessageContentBlobContract { MessageId = src.MessageId, Created = src.Created, Data = src.Data }); }
public void Add(MessageContentGrpcModel message) { _readerWriterLockSlim.EnterWriteLock(); try { _cache.TryAdd(message.MessageId, message); } finally { _readerWriterLockSlim.ExitWriteLock(); } }
public static byte[] SerializeContract(this MessageContentGrpcModel src) { var contract = MessageContentBlobContract.Create(src); var memStream = new MemoryStream(); memStream.Write(Header); ProtoBuf.Serializer.Serialize(memStream, contract); var result = memStream.ToArray(); BitConverter.TryWriteBytes(result.AsSpan(0, Header.Length), result.Length - 4); return(result); }
public void TestNullMetaData() { var packet = new MessageContentGrpcModel { Created = DateTime.UtcNow, Data = new byte[] { 1, 2, 3 }, MessageId = 15, }; var stream = new MemoryStream(); ProtoBuf.Serializer.Serialize(stream, packet); stream.Position = 0; var result = ProtoBuf.Serializer.Deserialize <MessageContentGrpcModel>(stream); Assert.AreEqual(packet.Created, result.Created); Assert.AreEqual(packet.Data, result.Data); Assert.AreEqual(packet.MessageId, result.MessageId); }