/** <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)); }
/// <summary> /// Initializes a new instance of the <see cref="CacheConfiguration"/> class. /// </summary> /// <param name="reader">The reader.</param> internal CacheConfiguration(IBinaryRawReader reader) { AtomicityMode = (CacheAtomicityMode)reader.ReadInt(); AtomicWriteOrderMode = (CacheAtomicWriteOrderMode)reader.ReadInt(); Backups = reader.ReadInt(); CacheMode = (CacheMode)reader.ReadInt(); CopyOnRead = reader.ReadBoolean(); EagerTtl = reader.ReadBoolean(); EnableSwap = reader.ReadBoolean(); EvictSynchronized = reader.ReadBoolean(); EvictSynchronizedConcurrencyLevel = reader.ReadInt(); EvictSynchronizedKeyBufferSize = reader.ReadInt(); EvictSynchronizedTimeout = reader.ReadLongAsTimespan(); Invalidate = reader.ReadBoolean(); KeepBinaryInStore = reader.ReadBoolean(); LoadPreviousValue = reader.ReadBoolean(); LockTimeout = reader.ReadLongAsTimespan(); LongQueryWarningTimeout = reader.ReadLongAsTimespan(); MaxConcurrentAsyncOperations = reader.ReadInt(); MaxEvictionOverflowRatio = reader.ReadFloat(); MemoryMode = (CacheMemoryMode)reader.ReadInt(); Name = reader.ReadString(); OffHeapMaxMemory = reader.ReadLong(); ReadFromBackup = reader.ReadBoolean(); RebalanceBatchSize = reader.ReadInt(); RebalanceDelay = reader.ReadLongAsTimespan(); RebalanceMode = (CacheRebalanceMode)reader.ReadInt(); RebalanceThrottle = reader.ReadLongAsTimespan(); RebalanceTimeout = reader.ReadLongAsTimespan(); SqlEscapeAll = reader.ReadBoolean(); SqlOnheapRowCacheSize = reader.ReadInt(); StartSize = reader.ReadInt(); WriteBehindBatchSize = reader.ReadInt(); WriteBehindEnabled = reader.ReadBoolean(); WriteBehindFlushFrequency = reader.ReadLongAsTimespan(); WriteBehindFlushSize = reader.ReadInt(); WriteBehindFlushThreadCount = reader.ReadInt(); WriteSynchronizationMode = (CacheWriteSynchronizationMode)reader.ReadInt(); ReadThrough = reader.ReadBoolean(); WriteThrough = reader.ReadBoolean(); EnableStatistics = reader.ReadBoolean(); CacheStoreFactory = reader.ReadObject <IFactory <ICacheStore> >(); var count = reader.ReadInt(); QueryEntities = count == 0 ? null : Enumerable.Range(0, count).Select(x => new QueryEntity(reader)).ToList(); NearConfiguration = reader.ReadBoolean() ? new NearCacheConfiguration(reader) : null; EvictionPolicy = EvictionPolicyBase.Read(reader); AffinityFunction = AffinityFunctionSerializer.Read(reader); ExpiryPolicyFactory = ExpiryPolicySerializer.ReadPolicyFactory(reader); count = reader.ReadInt(); PluginConfigurations = count == 0 ? null : Enumerable.Range(0, count).Select(x => reader.ReadObject <ICachePluginConfiguration>()).ToList(); }
/** <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)); }
/// <summary> /// Initializes a new instance of the <see cref="CacheConfiguration"/> class. /// </summary> /// <param name="reader">The reader.</param> internal CacheConfiguration(IBinaryRawReader reader) { // Make sure system marshaller is used. Debug.Assert(((BinaryReader)reader).Marshaller == BinaryUtils.Marshaller); AtomicityMode = (CacheAtomicityMode)reader.ReadInt(); Backups = reader.ReadInt(); CacheMode = (CacheMode)reader.ReadInt(); CopyOnRead = reader.ReadBoolean(); EagerTtl = reader.ReadBoolean(); Invalidate = reader.ReadBoolean(); KeepBinaryInStore = reader.ReadBoolean(); LoadPreviousValue = reader.ReadBoolean(); LockTimeout = reader.ReadLongAsTimespan(); #pragma warning disable 618 LongQueryWarningTimeout = reader.ReadLongAsTimespan(); #pragma warning restore 618 MaxConcurrentAsyncOperations = reader.ReadInt(); Name = reader.ReadString(); ReadFromBackup = reader.ReadBoolean(); RebalanceBatchSize = reader.ReadInt(); RebalanceDelay = reader.ReadLongAsTimespan(); RebalanceMode = (CacheRebalanceMode)reader.ReadInt(); RebalanceThrottle = reader.ReadLongAsTimespan(); RebalanceTimeout = reader.ReadLongAsTimespan(); SqlEscapeAll = reader.ReadBoolean(); WriteBehindBatchSize = reader.ReadInt(); WriteBehindEnabled = reader.ReadBoolean(); WriteBehindFlushFrequency = reader.ReadLongAsTimespan(); WriteBehindFlushSize = reader.ReadInt(); WriteBehindFlushThreadCount = reader.ReadInt(); WriteBehindCoalescing = reader.ReadBoolean(); WriteSynchronizationMode = (CacheWriteSynchronizationMode)reader.ReadInt(); ReadThrough = reader.ReadBoolean(); WriteThrough = reader.ReadBoolean(); EnableStatistics = reader.ReadBoolean(); MemoryPolicyName = reader.ReadString(); PartitionLossPolicy = (PartitionLossPolicy)reader.ReadInt(); GroupName = reader.ReadString(); CacheStoreFactory = reader.ReadObject <IFactory <ICacheStore> >(); var count = reader.ReadInt(); QueryEntities = count == 0 ? null : Enumerable.Range(0, count).Select(x => new QueryEntity(reader)).ToList(); NearConfiguration = reader.ReadBoolean() ? new NearCacheConfiguration(reader) : null; EvictionPolicy = EvictionPolicyBase.Read(reader); AffinityFunction = AffinityFunctionSerializer.Read(reader); ExpiryPolicyFactory = ExpiryPolicySerializer.ReadPolicyFactory(reader); count = reader.ReadInt(); PluginConfigurations = count == 0 ? null : Enumerable.Range(0, count).Select(x => reader.ReadObject <ICachePluginConfiguration>()).ToList(); }
/// <summary> /// Reads the config. /// </summary> public static void Read(IBinaryStream stream, CacheClientConfiguration cfg, ClientFeatures features) { Debug.Assert(stream != null); // Configuration should be read with system marshaller. var reader = BinaryUtils.Marshaller.StartUnmarshal(stream); var len = reader.ReadInt(); var pos = reader.Stream.Position; cfg.AtomicityMode = (CacheAtomicityMode)reader.ReadInt(); cfg.Backups = reader.ReadInt(); cfg.CacheMode = (CacheMode)reader.ReadInt(); cfg.CopyOnRead = reader.ReadBoolean(); cfg.DataRegionName = reader.ReadString(); cfg.EagerTtl = reader.ReadBoolean(); cfg.EnableStatistics = reader.ReadBoolean(); cfg.GroupName = reader.ReadString(); cfg.LockTimeout = reader.ReadLongAsTimespan(); cfg.MaxConcurrentAsyncOperations = reader.ReadInt(); cfg.MaxQueryIteratorsCount = reader.ReadInt(); cfg.Name = reader.ReadString(); cfg.OnheapCacheEnabled = reader.ReadBoolean(); cfg.PartitionLossPolicy = (PartitionLossPolicy)reader.ReadInt(); cfg.QueryDetailMetricsSize = reader.ReadInt(); cfg.QueryParallelism = reader.ReadInt(); cfg.ReadFromBackup = reader.ReadBoolean(); cfg.RebalanceBatchSize = reader.ReadInt(); cfg.RebalanceBatchesPrefetchCount = reader.ReadLong(); cfg.RebalanceDelay = reader.ReadLongAsTimespan(); cfg.RebalanceMode = (CacheRebalanceMode)reader.ReadInt(); cfg.RebalanceOrder = reader.ReadInt(); cfg.RebalanceThrottle = reader.ReadLongAsTimespan(); cfg.RebalanceTimeout = reader.ReadLongAsTimespan(); cfg.SqlEscapeAll = reader.ReadBoolean(); cfg.SqlIndexMaxInlineSize = reader.ReadInt(); cfg.SqlSchema = reader.ReadString(); cfg.WriteSynchronizationMode = (CacheWriteSynchronizationMode)reader.ReadInt(); cfg.KeyConfiguration = reader.ReadCollectionRaw(r => new CacheKeyConfiguration(r)); cfg.QueryEntities = reader.ReadCollectionRaw(r => ReadQueryEntity(r, features)); if (features.HasCacheConfigurationExpiryPolicyFactory()) { cfg.ExpiryPolicyFactory = ExpiryPolicySerializer.ReadPolicyFactory(reader); } Debug.Assert(len == reader.Stream.Position - pos); }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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); } }
/// <summary> /// Writes this instance to the specified writer. /// </summary> /// <param name="writer">The writer.</param> internal void Write(IBinaryRawWriter writer) { writer.WriteInt((int)AtomicityMode); writer.WriteInt((int)AtomicWriteOrderMode); writer.WriteInt(Backups); writer.WriteInt((int)CacheMode); writer.WriteBoolean(CopyOnRead); writer.WriteBoolean(EagerTtl); writer.WriteBoolean(EnableSwap); writer.WriteBoolean(EvictSynchronized); writer.WriteInt(EvictSynchronizedConcurrencyLevel); writer.WriteInt(EvictSynchronizedKeyBufferSize); writer.WriteLong((long)EvictSynchronizedTimeout.TotalMilliseconds); writer.WriteBoolean(Invalidate); writer.WriteBoolean(KeepBinaryInStore); writer.WriteBoolean(LoadPreviousValue); writer.WriteLong((long)LockTimeout.TotalMilliseconds); writer.WriteLong((long)LongQueryWarningTimeout.TotalMilliseconds); writer.WriteInt(MaxConcurrentAsyncOperations); writer.WriteFloat(MaxEvictionOverflowRatio); writer.WriteInt((int)MemoryMode); writer.WriteString(Name); writer.WriteLong(OffHeapMaxMemory); writer.WriteBoolean(ReadFromBackup); writer.WriteInt(RebalanceBatchSize); writer.WriteLong((long)RebalanceDelay.TotalMilliseconds); writer.WriteInt((int)RebalanceMode); writer.WriteLong((long)RebalanceThrottle.TotalMilliseconds); writer.WriteLong((long)RebalanceTimeout.TotalMilliseconds); writer.WriteBoolean(SqlEscapeAll); writer.WriteInt(SqlOnheapRowCacheSize); writer.WriteInt(StartSize); writer.WriteInt(WriteBehindBatchSize); writer.WriteBoolean(WriteBehindEnabled); writer.WriteLong((long)WriteBehindFlushFrequency.TotalMilliseconds); writer.WriteInt(WriteBehindFlushSize); writer.WriteInt(WriteBehindFlushThreadCount); writer.WriteInt((int)WriteSynchronizationMode); writer.WriteBoolean(ReadThrough); writer.WriteBoolean(WriteThrough); writer.WriteBoolean(EnableStatistics); writer.WriteObject(CacheStoreFactory); if (QueryEntities != null) { writer.WriteInt(QueryEntities.Count); foreach (var entity in QueryEntities) { if (entity == null) { throw new InvalidOperationException("Invalid cache configuration: QueryEntity can't be null."); } entity.Write(writer); } } else { writer.WriteInt(0); } if (NearConfiguration != null) { writer.WriteBoolean(true); NearConfiguration.Write(writer); } else { writer.WriteBoolean(false); } EvictionPolicyBase.Write(writer, EvictionPolicy); AffinityFunctionSerializer.Write(writer, AffinityFunction); ExpiryPolicySerializer.WritePolicyFactory(writer, ExpiryPolicyFactory); if (PluginConfigurations != null) { writer.WriteInt(PluginConfigurations.Count); foreach (var cachePlugin in PluginConfigurations) { if (cachePlugin == null) { throw new InvalidOperationException("Invalid cache configuration: " + "ICachePluginConfiguration can't be null."); } if (cachePlugin.CachePluginConfigurationClosureFactoryId != null) { writer.WriteBoolean(true); writer.WriteInt(cachePlugin.CachePluginConfigurationClosureFactoryId.Value); cachePlugin.WriteBinary(writer); } else { if (!cachePlugin.GetType().IsSerializable) { throw new InvalidOperationException("Invalid cache configuration: " + "ICachePluginConfiguration should be Serializable."); } writer.WriteBoolean(false); writer.WriteObject(cachePlugin); } } } else { writer.WriteInt(0); } }
/// <summary> /// Writes the specified config. /// </summary> public static void Write(IBinaryStream stream, CacheClientConfiguration cfg, ClientFeatures features, bool skipCodes = false) { Debug.Assert(stream != null); Debug.Assert(cfg != null); // Configuration should be written with a system marshaller. var writer = BinaryUtils.Marshaller.StartMarshal(stream); var pos = writer.Stream.Position; writer.WriteInt(0); // Reserve for length. if (!skipCodes) { writer.WriteShort(PropertyCount); // Property count. } var code = skipCodes ? (Action <Op>)(o => { }) : o => writer.WriteShort((short)o); code(Op.AtomicityMode); writer.WriteInt((int)cfg.AtomicityMode); code(Op.Backups); writer.WriteInt(cfg.Backups); code(Op.CacheMode); writer.WriteInt((int)cfg.CacheMode); code(Op.CopyOnRead); writer.WriteBoolean(cfg.CopyOnRead); code(Op.DataRegionName); writer.WriteString(cfg.DataRegionName); code(Op.EagerTtl); writer.WriteBoolean(cfg.EagerTtl); code(Op.StatisticsEnabled); writer.WriteBoolean(cfg.EnableStatistics); code(Op.GroupName); writer.WriteString(cfg.GroupName); code(Op.DefaultLockTimeout); writer.WriteTimeSpanAsLong(cfg.LockTimeout); code(Op.MaxConcurrentAsyncOperations); writer.WriteInt(cfg.MaxConcurrentAsyncOperations); code(Op.MaxQueryIteratorsCount); writer.WriteInt(cfg.MaxQueryIteratorsCount); code(Op.Name); writer.WriteString(cfg.Name); code(Op.OnheapCacheEnabled); writer.WriteBoolean(cfg.OnheapCacheEnabled); code(Op.PartitionLossPolicy); writer.WriteInt((int)cfg.PartitionLossPolicy); code(Op.QueryDetailMetricsSize); writer.WriteInt(cfg.QueryDetailMetricsSize); code(Op.QueryParallelism); writer.WriteInt(cfg.QueryParallelism); code(Op.ReadFromBackup); writer.WriteBoolean(cfg.ReadFromBackup); code(Op.RebalanceBatchSize); writer.WriteInt(cfg.RebalanceBatchSize); code(Op.RebalanceBatchesPrefetchCount); writer.WriteLong(cfg.RebalanceBatchesPrefetchCount); code(Op.RebalanceDelay); writer.WriteTimeSpanAsLong(cfg.RebalanceDelay); code(Op.RebalanceMode); writer.WriteInt((int)cfg.RebalanceMode); code(Op.RebalanceOrder); writer.WriteInt(cfg.RebalanceOrder); code(Op.RebalanceThrottle); writer.WriteTimeSpanAsLong(cfg.RebalanceThrottle); code(Op.RebalanceTimeout); writer.WriteTimeSpanAsLong(cfg.RebalanceTimeout); code(Op.SqlEscapeAll); writer.WriteBoolean(cfg.SqlEscapeAll); code(Op.SqlIndexMaxInlineSize); writer.WriteInt(cfg.SqlIndexMaxInlineSize); code(Op.SqlSchema); writer.WriteString(cfg.SqlSchema); code(Op.WriteSynchronizationMode); writer.WriteInt((int)cfg.WriteSynchronizationMode); code(Op.KeyConfiguration); writer.WriteCollectionRaw(cfg.KeyConfiguration); code(Op.QueryEntities); writer.WriteCollectionRaw(cfg.QueryEntities, (w, qe) => WriteQueryEntity(w, qe, features)); code(Op.ExpiryPolicy); ExpiryPolicySerializer.WritePolicyFactory(writer, cfg.ExpiryPolicyFactory); // Write length (so that part of the config can be skipped). var len = writer.Stream.Position - pos - 4; writer.Stream.WriteInt(pos, len); }
/// <summary> /// Writes this instance to the specified writer. /// </summary> /// <param name="writer">The writer.</param> internal void Write(BinaryWriter writer) { // Make sure system marshaller is used. Debug.Assert(writer.Marshaller == BinaryUtils.Marshaller); writer.WriteInt((int)AtomicityMode); writer.WriteInt(Backups); writer.WriteInt((int)CacheMode); writer.WriteBoolean(CopyOnRead); writer.WriteBoolean(EagerTtl); writer.WriteBoolean(Invalidate); writer.WriteBoolean(KeepBinaryInStore); writer.WriteBoolean(LoadPreviousValue); writer.WriteLong((long)LockTimeout.TotalMilliseconds); #pragma warning disable 618 writer.WriteLong((long)LongQueryWarningTimeout.TotalMilliseconds); #pragma warning restore 618 writer.WriteInt(MaxConcurrentAsyncOperations); writer.WriteString(Name); writer.WriteBoolean(ReadFromBackup); writer.WriteInt(RebalanceBatchSize); writer.WriteLong((long)RebalanceDelay.TotalMilliseconds); writer.WriteInt((int)RebalanceMode); writer.WriteLong((long)RebalanceThrottle.TotalMilliseconds); writer.WriteLong((long)RebalanceTimeout.TotalMilliseconds); writer.WriteBoolean(SqlEscapeAll); writer.WriteInt(WriteBehindBatchSize); writer.WriteBoolean(WriteBehindEnabled); writer.WriteLong((long)WriteBehindFlushFrequency.TotalMilliseconds); writer.WriteInt(WriteBehindFlushSize); writer.WriteInt(WriteBehindFlushThreadCount); writer.WriteBoolean(WriteBehindCoalescing); writer.WriteInt((int)WriteSynchronizationMode); writer.WriteBoolean(ReadThrough); writer.WriteBoolean(WriteThrough); writer.WriteBoolean(EnableStatistics); writer.WriteString(DataRegionName); writer.WriteInt((int)PartitionLossPolicy); writer.WriteString(GroupName); writer.WriteObject(CacheStoreFactory); writer.WriteInt(SqlIndexMaxInlineSize); writer.WriteBoolean(OnheapCacheEnabled); writer.WriteInt(StoreConcurrentLoadAllThreshold); writer.WriteInt(RebalanceOrder); writer.WriteLong(RebalanceBatchesPrefetchCount); writer.WriteInt(MaxQueryIteratorsCount); writer.WriteInt(QueryDetailMetricsSize); writer.WriteInt(QueryParallelism); writer.WriteString(SqlSchema); writer.WriteCollectionRaw(QueryEntities); if (NearConfiguration != null) { writer.WriteBoolean(true); NearConfiguration.Write(writer); } else { writer.WriteBoolean(false); } EvictionPolicyBase.Write(writer, EvictionPolicy); AffinityFunctionSerializer.Write(writer, AffinityFunction); ExpiryPolicySerializer.WritePolicyFactory(writer, ExpiryPolicyFactory); writer.WriteCollectionRaw(KeyConfiguration); if (PluginConfigurations != null) { writer.WriteInt(PluginConfigurations.Count); foreach (var cachePlugin in PluginConfigurations) { if (cachePlugin == null) { throw new InvalidOperationException("Invalid cache configuration: " + "ICachePluginConfiguration can't be null."); } if (cachePlugin.CachePluginConfigurationClosureFactoryId != null) { writer.WriteBoolean(true); writer.WriteInt(cachePlugin.CachePluginConfigurationClosureFactoryId.Value); int pos = writer.Stream.Position; writer.WriteInt(0); // Reserve size. cachePlugin.WriteBinary(writer); writer.Stream.WriteInt(pos, writer.Stream.Position - pos - 4); // Write size. } else { writer.WriteBoolean(false); writer.WriteObject(cachePlugin); } } } else { writer.WriteInt(0); } }
/// <summary> /// Reads data into this instance from the specified reader. /// </summary> /// <param name="reader">The reader.</param> private void Read(BinaryReader reader) { // Make sure system marshaller is used. Debug.Assert(reader.Marshaller == BinaryUtils.Marshaller); AtomicityMode = (CacheAtomicityMode)reader.ReadInt(); Backups = reader.ReadInt(); CacheMode = (CacheMode)reader.ReadInt(); CopyOnRead = reader.ReadBoolean(); EagerTtl = reader.ReadBoolean(); Invalidate = reader.ReadBoolean(); KeepBinaryInStore = reader.ReadBoolean(); LoadPreviousValue = reader.ReadBoolean(); LockTimeout = reader.ReadLongAsTimespan(); #pragma warning disable 618 LongQueryWarningTimeout = reader.ReadLongAsTimespan(); #pragma warning restore 618 MaxConcurrentAsyncOperations = reader.ReadInt(); Name = reader.ReadString(); ReadFromBackup = reader.ReadBoolean(); RebalanceBatchSize = reader.ReadInt(); RebalanceDelay = reader.ReadLongAsTimespan(); RebalanceMode = (CacheRebalanceMode)reader.ReadInt(); RebalanceThrottle = reader.ReadLongAsTimespan(); RebalanceTimeout = reader.ReadLongAsTimespan(); SqlEscapeAll = reader.ReadBoolean(); WriteBehindBatchSize = reader.ReadInt(); WriteBehindEnabled = reader.ReadBoolean(); WriteBehindFlushFrequency = reader.ReadLongAsTimespan(); WriteBehindFlushSize = reader.ReadInt(); WriteBehindFlushThreadCount = reader.ReadInt(); WriteBehindCoalescing = reader.ReadBoolean(); WriteSynchronizationMode = (CacheWriteSynchronizationMode)reader.ReadInt(); ReadThrough = reader.ReadBoolean(); WriteThrough = reader.ReadBoolean(); EnableStatistics = reader.ReadBoolean(); DataRegionName = reader.ReadString(); PartitionLossPolicy = (PartitionLossPolicy)reader.ReadInt(); GroupName = reader.ReadString(); CacheStoreFactory = reader.ReadObject <IFactory <ICacheStore> >(); SqlIndexMaxInlineSize = reader.ReadInt(); OnheapCacheEnabled = reader.ReadBoolean(); StoreConcurrentLoadAllThreshold = reader.ReadInt(); RebalanceOrder = reader.ReadInt(); RebalanceBatchesPrefetchCount = reader.ReadLong(); MaxQueryIteratorsCount = reader.ReadInt(); QueryDetailMetricsSize = reader.ReadInt(); QueryParallelism = reader.ReadInt(); SqlSchema = reader.ReadString(); QueryEntities = reader.ReadCollectionRaw(r => new QueryEntity(r)); NearConfiguration = reader.ReadBoolean() ? new NearCacheConfiguration(reader) : null; EvictionPolicy = EvictionPolicyBase.Read(reader); AffinityFunction = AffinityFunctionSerializer.Read(reader); ExpiryPolicyFactory = ExpiryPolicySerializer.ReadPolicyFactory(reader); KeyConfiguration = reader.ReadCollectionRaw(r => new CacheKeyConfiguration(r)); var count = reader.ReadInt(); if (count > 0) { PluginConfigurations = new List <ICachePluginConfiguration>(count); for (int i = 0; i < count; i++) { if (reader.ReadBoolean()) { // FactoryId-based plugin: skip. reader.ReadInt(); // Skip factory id. var size = reader.ReadInt(); reader.Stream.Seek(size, SeekOrigin.Current); // Skip custom data. } else { // Pure .NET plugin. PluginConfigurations.Add(reader.ReadObject <ICachePluginConfiguration>()); } } } }
/// <summary> /// Writes this instance to the specified writer. /// </summary> /// <param name="writer">The writer.</param> internal void Write(IBinaryRawWriter writer) { // Make sure system marshaller is used. Debug.Assert(((BinaryWriter)writer).Marshaller == BinaryUtils.Marshaller); writer.WriteInt((int)AtomicityMode); writer.WriteInt(Backups); writer.WriteInt((int)CacheMode); writer.WriteBoolean(CopyOnRead); writer.WriteBoolean(EagerTtl); writer.WriteBoolean(Invalidate); writer.WriteBoolean(KeepBinaryInStore); writer.WriteBoolean(LoadPreviousValue); writer.WriteLong((long)LockTimeout.TotalMilliseconds); writer.WriteLong((long)LongQueryWarningTimeout.TotalMilliseconds); writer.WriteInt(MaxConcurrentAsyncOperations); writer.WriteString(Name); writer.WriteBoolean(ReadFromBackup); writer.WriteInt(RebalanceBatchSize); writer.WriteLong((long)RebalanceDelay.TotalMilliseconds); writer.WriteInt((int)RebalanceMode); writer.WriteLong((long)RebalanceThrottle.TotalMilliseconds); writer.WriteLong((long)RebalanceTimeout.TotalMilliseconds); writer.WriteBoolean(SqlEscapeAll); writer.WriteInt(StartSize); writer.WriteInt(WriteBehindBatchSize); writer.WriteBoolean(WriteBehindEnabled); writer.WriteLong((long)WriteBehindFlushFrequency.TotalMilliseconds); writer.WriteInt(WriteBehindFlushSize); writer.WriteInt(WriteBehindFlushThreadCount); writer.WriteBoolean(WriteBehindCoalescing); writer.WriteInt((int)WriteSynchronizationMode); writer.WriteBoolean(ReadThrough); writer.WriteBoolean(WriteThrough); writer.WriteBoolean(EnableStatistics); writer.WriteString(MemoryPolicyName); writer.WriteInt((int)PartitionLossPolicy); writer.WriteObject(CacheStoreFactory); if (QueryEntities != null) { writer.WriteInt(QueryEntities.Count); foreach (var entity in QueryEntities) { if (entity == null) { throw new InvalidOperationException("Invalid cache configuration: QueryEntity can't be null."); } entity.Write(writer); } } else { writer.WriteInt(0); } if (NearConfiguration != null) { writer.WriteBoolean(true); NearConfiguration.Write(writer); } else { writer.WriteBoolean(false); } EvictionPolicyBase.Write(writer, EvictionPolicy); AffinityFunctionSerializer.Write(writer, AffinityFunction); ExpiryPolicySerializer.WritePolicyFactory(writer, ExpiryPolicyFactory); if (PluginConfigurations != null) { writer.WriteInt(PluginConfigurations.Count); foreach (var cachePlugin in PluginConfigurations) { if (cachePlugin == null) { throw new InvalidOperationException("Invalid cache configuration: " + "ICachePluginConfiguration can't be null."); } if (cachePlugin.CachePluginConfigurationClosureFactoryId != null) { writer.WriteBoolean(true); writer.WriteInt(cachePlugin.CachePluginConfigurationClosureFactoryId.Value); cachePlugin.WriteBinary(writer); } else { writer.WriteBoolean(false); writer.WriteObject(cachePlugin); } } } else { writer.WriteInt(0); } }