예제 #1
0
        /** <inheritDoc /> */
        public ICache <TK, TV> WithExpiryPolicy(IExpiryPolicy plc)
        {
            IgniteArgumentCheck.NotNull(plc, "plc");

            var cache0 = DoOutOpObject((int)CacheOp.WithExpiryPolicy, w => ExpiryPolicySerializer.WritePolicy(w, plc));

            return(new CacheImpl <TK, TV>(_ignite, cache0, Marshaller, _flagSkipStore, _flagKeepBinary, _flagNoRetries));
        }
예제 #2
0
파일: CacheImpl.cs 프로젝트: zstan/ignite
        /** <inheritDoc /> */
        public ICache <TK, TV> WithExpiryPolicy(IExpiryPolicy plc)
        {
            IgniteArgumentCheck.NotNull(plc, "plc");

            var cache0 = DoOutOpObject((int)CacheOp.WithExpiryPolicy, w => ExpiryPolicySerializer.WritePolicy(w, plc));

            return(new CacheImpl <TK, TV>(cache0, _flagSkipStore, _flagKeepBinary,
                                          _flagNoRetries, _flagPartitionRecover, _flagAllowAtomicOpsInTx));
        }
예제 #3
0
        /// <summary>
        /// Writes the request.
        /// </summary>
        private void WriteRequest(Action<ClientRequestContext> writeAction, ClientRequestContext ctx)
        {
            ctx.Stream.WriteInt(_id);

            if (_expiryPolicy != null)
            {
                ctx.Features.ValidateWithExpiryPolicyFlag();
                ctx.Stream.WriteByte((byte) ClientCacheRequestFlag.WithExpiryPolicy);
                ExpiryPolicySerializer.WritePolicy(ctx.Writer, _expiryPolicy);
            }
            else
                ctx.Stream.WriteByte((byte) ClientCacheRequestFlag.None); // Flags (skipStore, etc).

            if (writeAction != null)
            {
                writeAction(ctx);
            }
        }
예제 #4
0
        /// <summary>
        /// Writes the request.
        /// </summary>
        private void WriteRequest(Action <BinaryWriter> writeAction, IBinaryStream stream)
        {
            stream.WriteInt(_id);

            var writer = _marsh.StartMarshal(stream);

            if (_expiryPolicy != null)
            {
                stream.WriteByte((byte)ClientCacheRequestFlag.WithExpiryPolicy);
                ExpiryPolicySerializer.WritePolicy(writer, _expiryPolicy);
            }
            else
            {
                stream.WriteByte((byte)ClientCacheRequestFlag.None);  // Flags (skipStore, etc).
            }
            if (writeAction != null)
            {
                writeAction(writer);

                _marsh.FinishMarshal(writer);
            }
        }
예제 #5
0
        /// <summary>
        /// Writes the request.
        /// </summary>
        private void WriteRequest(Action <ClientRequestContext> writeAction, ClientRequestContext ctx)
        {
            ctx.Stream.WriteInt(_id);

            if (_expiryPolicy != null)
            {
                // Check whether WithExpiryPolicy is supported by the protocol here -
                // ctx.ProtocolVersion refers to exact connection for this request.
                ClientUtils.ValidateOp(
                    ClientCacheRequestFlag.WithExpiryPolicy, ctx.ProtocolVersion, ClientSocket.Ver150);

                ctx.Stream.WriteByte((byte)ClientCacheRequestFlag.WithExpiryPolicy);
                ExpiryPolicySerializer.WritePolicy(ctx.Writer, _expiryPolicy);
            }
            else
            {
                ctx.Stream.WriteByte((byte)ClientCacheRequestFlag.None);  // Flags (skipStore, etc).
            }
            if (writeAction != null)
            {
                writeAction(ctx);
            }
        }
예제 #6
0
        /// <summary>
        /// Writes the request.
        /// </summary>
        private void WriteRequest(Action <ClientRequestContext> writeAction, ClientRequestContext ctx)
        {
            ctx.Stream.WriteInt(_id);

            var flags = ClientCacheRequestFlag.None;

            if (_expiryPolicy != null)
            {
                ctx.Features.ValidateWithExpiryPolicyFlag();
                flags = flags | ClientCacheRequestFlag.WithExpiryPolicy;
            }

            var tx = _ignite.Transactions.Tx;

            if (tx != null)
            {
                flags |= ClientCacheRequestFlag.WithTransactional;
            }

            ctx.Stream.WriteByte((byte)flags);

            if ((flags & ClientCacheRequestFlag.WithExpiryPolicy) == ClientCacheRequestFlag.WithExpiryPolicy)
            {
                ExpiryPolicySerializer.WritePolicy(ctx.Writer, _expiryPolicy);
            }

            if ((flags & ClientCacheRequestFlag.WithTransactional) == ClientCacheRequestFlag.WithTransactional)
            {
                // ReSharper disable once PossibleNullReferenceException flag is set only if tx != null
                ctx.Writer.WriteInt(tx.Id);
            }

            if (writeAction != null)
            {
                writeAction(ctx);
            }
        }