Example #1
0
        private ReadInfo <TKey> StoreRead(TKey key)
        {
            byte[] data;

            return(_store.Read(log =>
            {
                var mk = MapKeyToStoreAddress.TryGetValue(key);
                if (!mk.Item1)
                {
                    return null;
                }

                var address = mk.Item2;
                Guid eTag;
                data = ReadData(address.Position, address.Size, address.Key, out eTag);
                return new ReadInfo <TKey>
                {
                    Address =
                        new StoreAddress <TKey>
                    {
                        Key = address.Key,
                        Size = address.Size,
                        Position = address.Position
                    },
                    GetData =
                        delegate
                    {
                        Guid etag;
                        var retval = data ??
                                     (data =
                                          ReadData(address.Position, address.Size,
                                                   address.Key, out etag));
                        return retval;
                    },
                    ETag = eTag
                };
            }));
        }