예제 #1
0
        public T Deserialize <T>(BinaryValue data)
        {
            IReliableStateSerializer <T> serializer = this.serializerResolver.Resolve <T>(this.collectionName, SerializationIntent.Replication);

            using (MemoryStream stream = new MemoryStream(data.Buffer))
            {
                return(serializer.Deserialize(stream));
            }
        }
        public async Task <TValue> GetOrAddAsync(
            ITransaction tx, TKey key, Func <TKey, TValue> valueFactory, TimeSpan timeout, CancellationToken cancellationToken)
        {
            BinaryValue result = await this.store.GetOrAddAsync(
                tx,
                this.converter.Serialize <TKey>(key),
                k => this.converter.Serialize <TValue>(valueFactory(this.converter.Deserialize <TKey>(k))),
                timeout,
                cancellationToken);

            return(this.converter.Deserialize <TValue>(result));
        }
        public async Task <TValue> AddOrUpdateAsync(
            ITransaction tx, TKey key, TValue addValue, Func <TKey, TValue, TValue> updateValueFactory, TimeSpan timeout, CancellationToken cancellationToken)
        {
            BinaryValue result = await this.store.AddOrUpdateAsync(
                tx,
                this.converter.Serialize <TKey>(key),
                this.converter.Serialize <TValue>(addValue),
                (k, v) => this.converter.Serialize <TValue>(updateValueFactory(this.converter.Deserialize <TKey>(k), this.converter.Deserialize <TValue>(v))),
                timeout,
                cancellationToken);

            return(this.converter.Deserialize <TValue>(result));
        }