public void TestPartitionAwarenessDisablesAutomaticallyOnVersionsOlderThan140( [Values(0, 1, 2, 3)] short minor) { var version = new ClientProtocolVersion(1, minor, 0); using (var client = GetClient(version, true)) { Assert.IsFalse(client.GetConfiguration().EnablePartitionAwareness); var cache = client.GetOrCreateCache <int, int>(TestContext.CurrentContext.Test.Name); cache.Put(1, 2); Assert.AreEqual(2, cache.Get(1)); var log = GetLogs(client).FirstOrDefault(e => e.Message.StartsWith("Partition")); var expectedMessage = string.Format( "Partition awareness has been disabled: server protocol version " + "{0} is lower than required 1.4.0", version); Assert.IsNotNull(log); Assert.AreEqual(expectedMessage, log.Message); Assert.AreEqual(LogLevel.Warn, log.Level); Assert.AreEqual(typeof(ClientFailoverSocket).Name, log.Category); } }
/// <summary> /// Reads query entity of the config. /// </summary> private static QueryEntity ReadQueryEntity(BinaryReader reader, ClientProtocolVersion srvVer) { Debug.Assert(reader != null); var value = new QueryEntity { KeyTypeName = reader.ReadString(), ValueTypeName = reader.ReadString(), TableName = reader.ReadString(), KeyFieldName = reader.ReadString(), ValueFieldName = reader.ReadString() }; var count = reader.ReadInt(); value.Fields = count == 0 ? null : Enumerable.Range(0, count).Select(x => ReadQueryField(reader, srvVer)).ToList(); count = reader.ReadInt(); value.Aliases = count == 0 ? null : Enumerable.Range(0, count) .Select(x => new QueryAlias(reader.ReadString(), reader.ReadString())).ToList(); count = reader.ReadInt(); value.Indexes = count == 0 ? null : Enumerable.Range(0, count).Select(x => new QueryIndex(reader)).ToList(); return(value); }
/// <summary> /// Gets the client with specified protocol version. /// </summary> private IgniteClient GetClient(ClientProtocolVersion version, bool enablePartitionAwareness = false) { var cfg = new IgniteClientConfiguration(GetClientConfiguration()) { ProtocolVersion = version, EnablePartitionAwareness = enablePartitionAwareness }; return((IgniteClient)Ignition.StartClient(cfg)); }
public void TestClusterOperationsThrowCorrectExceptionOnVersionsOlderThan150( [Values(0, 1, 2, 3, 4)] short minor) { var version = new ClientProtocolVersion(1, minor, 0); using (var client = GetClient(version)) { TestClusterOperationsThrowCorrectExceptionOnVersionsOlderThan150(client, version.ToString()); } }
public void TestRelationalComparisonOperators() { var v1 = new ClientProtocolVersion(1, 1, 1); var v2 = new ClientProtocolVersion(1, 1, 2); Assert.IsTrue(v1 < v2); Assert.IsTrue(v1 <= v2); Assert.IsTrue(v2 > v1); Assert.IsTrue(v2 >= v1); }
/// <summary> /// Initializes a new instance of the <see cref="DataStorageConfiguration"/> class. /// </summary> /// <param name="reader">The reader.</param> /// <param name="srvVer">Server version.</param> internal DataStorageConfiguration(IBinaryRawReader reader, ClientProtocolVersion srvVer) { Debug.Assert(reader != null); StoragePath = reader.ReadString(); CheckpointFrequency = reader.ReadLongAsTimespan(); CheckpointThreads = reader.ReadInt(); LockWaitTime = reader.ReadLongAsTimespan(); WalHistorySize = reader.ReadInt(); WalSegments = reader.ReadInt(); WalSegmentSize = reader.ReadInt(); WalPath = reader.ReadString(); WalArchivePath = reader.ReadString(); WalMode = (WalMode)reader.ReadInt(); WalThreadLocalBufferSize = reader.ReadInt(); WalFlushFrequency = reader.ReadLongAsTimespan(); WalFsyncDelayNanos = reader.ReadLong(); WalRecordIteratorBufferSize = reader.ReadInt(); AlwaysWriteFullPages = reader.ReadBoolean(); MetricsEnabled = reader.ReadBoolean(); MetricsSubIntervalCount = reader.ReadInt(); MetricsRateTimeInterval = reader.ReadLongAsTimespan(); CheckpointWriteOrder = (CheckpointWriteOrder)reader.ReadInt(); WriteThrottlingEnabled = reader.ReadBoolean(); WalCompactionEnabled = reader.ReadBoolean(); MaxWalArchiveSize = reader.ReadLong(); SystemRegionInitialSize = reader.ReadLong(); SystemRegionMaxSize = reader.ReadLong(); PageSize = reader.ReadInt(); ConcurrencyLevel = reader.ReadInt(); WalAutoArchiveAfterInactivity = reader.ReadLongAsTimespan(); CheckpointReadLockTimeout = reader.ReadTimeSpanNullable(); WalPageCompression = (DiskPageCompression)reader.ReadInt(); WalPageCompressionLevel = reader.ReadIntNullable(); var count = reader.ReadInt(); if (count > 0) { DataRegionConfigurations = Enumerable.Range(0, count) .Select(x => new DataRegionConfiguration(reader, srvVer)) .ToArray(); } if (reader.ReadBoolean()) { DefaultDataRegionConfiguration = new DataRegionConfiguration(reader, srvVer); } }
public void TestConstructor() { var v0 = default(ClientProtocolVersion); Assert.AreEqual(0, v0.Major); Assert.AreEqual(0, v0.Minor); Assert.AreEqual(0, v0.Patch); var v1 = new ClientProtocolVersion(2, 4, 8); Assert.AreEqual(2, v1.Major); Assert.AreEqual(4, v1.Minor); Assert.AreEqual(8, v1.Patch); }
public void TestConstructor() { var v0 = new ClientProtocolVersion(); Assert.AreEqual(0, v0.Major); Assert.AreEqual(0, v0.Minor); Assert.AreEqual(0, v0.Maintenance); var v1 = new ClientProtocolVersion(2, 4, 8); Assert.AreEqual(2, v1.Major); Assert.AreEqual(4, v1.Minor); Assert.AreEqual(8, v1.Maintenance); }
public void TestCacheOperationsAreSupportedOnAllProtocols( [Values(0, 1, 2, 3, 4, 5, 6)] short minor) { var version = new ClientProtocolVersion(1, minor, 0); using (var client = GetClient(version, true)) { var cache = client.GetOrCreateCache <int, int>(TestContext.CurrentContext.Test.Name); cache.Put(1, -1); cache.PutAll(Enumerable.Range(2, 10).ToDictionary(x => x, x => x)); Assert.AreEqual(-1, cache.Get(1)); Assert.AreEqual(11, cache.Query(new ScanQuery <int, int>()).GetAll().Count); } }
public void TestComputeThrowsNotSupportedOnVersionsOlderThan170( [Values(0, 1, 2, 3, 4, 5, 6)] short minor) { var version = new ClientProtocolVersion(1, minor, 0); using (var client = GetClient(version)) { var compute = client.GetCompute(); AssertNotSupportedFeatureOperation( () => compute.ExecuteJavaTask <int>("unused", null), ClientBitmaskFeature.ExecuteTaskByName, ClientOp.ComputeTaskExecute); } }
/// <summary> /// Writes this instance to the specified writer. /// </summary> internal void Write(IBinaryRawWriter writer, ClientProtocolVersion srvVer) { Debug.Assert(writer != null); writer.WriteString(Name); writer.WriteString(FieldTypeName); writer.WriteBoolean(IsKeyField); writer.WriteBoolean(NotNull); writer.WriteObject(DefaultValue); if (srvVer.CompareTo(ClientSocket.Ver120) >= 0) { writer.WriteInt(Precision); writer.WriteInt(Scale); } }
/// <summary> /// Writes query field instance to the specified writer. /// </summary> private static void WriteQueryField(BinaryWriter writer, QueryField field, ClientProtocolVersion srvVer) { Debug.Assert(writer != null); writer.WriteString(field.Name); writer.WriteString(field.FieldTypeName); writer.WriteBoolean(field.IsKeyField); writer.WriteBoolean(field.NotNull); writer.WriteObject(field.DefaultValue); if (srvVer.CompareTo(ClientSocket.Ver120) >= 0) { writer.WriteInt(field.Precision); writer.WriteInt(field.Scale); } }
/// <summary> /// Initializes a new instance of the <see cref="QueryField"/> class. /// </summary> internal QueryField(IBinaryRawReader reader, ClientProtocolVersion srvVer) { Debug.Assert(reader != null); Name = reader.ReadString(); FieldTypeName = reader.ReadString(); IsKeyField = reader.ReadBoolean(); NotNull = reader.ReadBoolean(); DefaultValue = reader.ReadObject <object>(); if (srvVer.CompareTo(ClientSocket.Ver120) >= 0) { Precision = reader.ReadInt(); Scale = reader.ReadInt(); } }
/// <summary> /// Reads the config. /// </summary> public static void Read(IBinaryStream stream, CacheClientConfiguration cfg, ClientProtocolVersion srvVer) { 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 => new QueryEntity(r, srvVer)); if (srvVer.CompareTo(ClientSocket.Ver150) >= 0) { cfg.ExpiryPolicyFactory = ExpiryPolicySerializer.ReadPolicyFactory(reader); } Debug.Assert(len == reader.Stream.Position - pos); }
public void TestClientOlderThanServerConnectsOnClientVersion([Values(0, 1, 2, 3, 4, 5)] short minor) { var version = new ClientProtocolVersion(1, minor, 0); using (var client = GetClient(version)) { Assert.AreEqual(version, client.Socket.CurrentProtocolVersion); var lastLog = GetLogs(client).Last(e => e.Level == LogLevel.Debug); var expectedLog = string.Format( "Handshake completed on 127.0.0.1:10800, protocol version = {0}", version); Assert.AreEqual(expectedLog, lastLog.Message); Assert.AreEqual(LogLevel.Debug, lastLog.Level); Assert.AreEqual(typeof(ClientSocket).Name, lastLog.Category); } }
/// <summary> /// Initializes a new instance of the <see cref="DataRegionConfiguration"/> class. /// </summary> /// <param name="reader">The reader.</param> /// <param name="srvVer">Server version.</param> internal DataRegionConfiguration(IBinaryRawReader reader, ClientProtocolVersion srvVer) { Name = reader.ReadString(); PersistenceEnabled = reader.ReadBoolean(); InitialSize = reader.ReadLong(); MaxSize = reader.ReadLong(); SwapPath = reader.ReadString(); PageEvictionMode = (DataPageEvictionMode)reader.ReadInt(); EvictionThreshold = reader.ReadDouble(); EmptyPagesPoolSize = reader.ReadInt(); MetricsEnabled = reader.ReadBoolean(); MetricsSubIntervalCount = reader.ReadInt(); MetricsRateTimeInterval = reader.ReadLongAsTimespan(); CheckpointPageBufferSize = reader.ReadLong(); if (srvVer.CompareTo(ClientSocket.Ver130) >= 0) { LazyMemoryAllocation = reader.ReadBoolean(); } }
/// <summary> /// Writes this instance to a writer. /// </summary> /// <param name="writer">The writer.</param> /// <param name="srvVer">Server version.</param> internal void Write(IBinaryRawWriter writer, ClientProtocolVersion srvVer) { writer.WriteString(Name); writer.WriteBoolean(PersistenceEnabled); writer.WriteLong(InitialSize); writer.WriteLong(MaxSize); writer.WriteString(SwapPath); writer.WriteInt((int)PageEvictionMode); writer.WriteDouble(EvictionThreshold); writer.WriteInt(EmptyPagesPoolSize); writer.WriteBoolean(MetricsEnabled); writer.WriteInt(MetricsSubIntervalCount); writer.WriteTimeSpanAsLong(MetricsRateTimeInterval); writer.WriteLong(CheckpointPageBufferSize); if (srvVer.CompareTo(ClientSocket.Ver130) >= 0) { writer.WriteBoolean(LazyMemoryAllocation); } }
/// <summary> /// Read query field. /// </summary> private static QueryField ReadQueryField(BinaryReader reader, ClientProtocolVersion srvVer) { Debug.Assert(reader != null); var value = new QueryField { Name = reader.ReadString(), FieldTypeName = reader.ReadString(), IsKeyField = reader.ReadBoolean(), NotNull = reader.ReadBoolean(), DefaultValue = reader.ReadObject <object>() }; if (srvVer.CompareTo(ClientSocket.Ver120) >= 0) { value.Precision = reader.ReadInt(); value.Scale = reader.ReadInt(); } return(value); }
/// <summary> /// Initializes a new instance of the <see cref="QueryEntity"/> class. /// </summary> /// <param name="reader">The reader.</param> /// <param name="srvVer">Server version.</param> internal QueryEntity(IBinaryRawReader reader, ClientProtocolVersion srvVer) { KeyTypeName = reader.ReadString(); ValueTypeName = reader.ReadString(); TableName = reader.ReadString(); KeyFieldName = reader.ReadString(); ValueFieldName = reader.ReadString(); var count = reader.ReadInt(); Fields = count == 0 ? null : Enumerable.Range(0, count).Select(x => new QueryField(reader, srvVer)).ToList(); count = reader.ReadInt(); Aliases = count == 0 ? null : Enumerable.Range(0, count) .Select(x => new QueryAlias(reader.ReadString(), reader.ReadString())).ToList(); count = reader.ReadInt(); Indexes = count == 0 ? null : Enumerable.Range(0, count).Select(x => new QueryIndex(reader)).ToList(); }
public void TestClientNewerThanServerReconnectsOnServerVersion() { // Use a non-existent version that is not supported by the server var version = new ClientProtocolVersion(1, short.MaxValue, short.MaxValue); using (var client = GetClient(version)) { Assert.AreEqual(ClientSocket.CurrentProtocolVersion, client.Socket.CurrentProtocolVersion); var logs = GetLogs(client); var expectedMessage = "Handshake failed on 127.0.0.1:10800, " + "requested protocol version = 1.32767.32767, server protocol version = , " + "status = Fail, message = Unsupported version: 1.32767.32767"; var message = Regex.Replace( logs[2].Message, @"server protocol version = \d\.\d\.\d", "server protocol version = "); Assert.AreEqual(expectedMessage, message); } }
/// <summary> /// Initializes a new instance of the <see cref="ClientConnectorConfiguration"/> class. /// </summary> internal ClientConnectorConfiguration(ClientProtocolVersion ver, IBinaryRawReader reader) { Debug.Assert(reader != null); Host = reader.ReadString(); Port = reader.ReadInt(); PortRange = reader.ReadInt(); SocketSendBufferSize = reader.ReadInt(); SocketReceiveBufferSize = reader.ReadInt(); TcpNoDelay = reader.ReadBoolean(); MaxOpenCursorsPerConnection = reader.ReadInt(); ThreadPoolSize = reader.ReadInt(); IdleTimeout = reader.ReadLongAsTimespan(); ThinClientEnabled = reader.ReadBoolean(); OdbcEnabled = reader.ReadBoolean(); JdbcEnabled = reader.ReadBoolean(); if (ver.CompareTo(ClientSocket.Ver130) >= 0) { HandshakeTimeout = reader.ReadLongAsTimespan(); } }
/// <summary> /// Writes to the specified writer. /// </summary> internal void Write(ClientProtocolVersion ver, IBinaryRawWriter writer) { Debug.Assert(writer != null); writer.WriteString(Host); writer.WriteInt(Port); writer.WriteInt(PortRange); writer.WriteInt(SocketSendBufferSize); writer.WriteInt(SocketReceiveBufferSize); writer.WriteBoolean(TcpNoDelay); writer.WriteInt(MaxOpenCursorsPerConnection); writer.WriteInt(ThreadPoolSize); writer.WriteTimeSpanAsLong(IdleTimeout); writer.WriteBoolean(ThinClientEnabled); writer.WriteBoolean(OdbcEnabled); writer.WriteBoolean(JdbcEnabled); if (ver.CompareTo(ClientSocket.Ver130) >= 0) { writer.WriteTimeSpanAsLong(HandshakeTimeout); } }
/// <summary> /// Writes the collection of write-aware-ex items. /// </summary> public static void WriteCollectionRaw <T, TWriter>(this TWriter writer, ICollection <T> collection, ClientProtocolVersion srvVer) where T : IBinaryRawWriteAwareEx <TWriter> where TWriter : IBinaryRawWriter { Debug.Assert(writer != null); if (collection != null) { writer.WriteInt(collection.Count); foreach (var x in collection) { if (x == null) { throw new ArgumentNullException(string.Format("{0} can not be null", typeof(T).Name)); } x.Write(writer, srvVer); } } else { writer.WriteInt(0); } }
/// <summary> /// Writes the specified config. /// </summary> public static void Write(IBinaryStream stream, CacheClientConfiguration cfg, ClientProtocolVersion srvVer, 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, srvVer); 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> /// Reads data into this instance from the specified reader. /// </summary> /// <param name="reader">The reader.</param> /// <param name="srvVer">Server version.</param> private void Read(BinaryReader reader, ClientProtocolVersion srvVer) { // 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(); EncryptionEnabled = reader.ReadBoolean(); QueryEntities = reader.ReadCollectionRaw(r => new QueryEntity(r, srvVer)); 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)); if (reader.ReadBoolean()) { PlatformNearConfiguration = new PlatformNearCacheConfiguration(reader); } 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> /// Initializes a new instance of <see cref="ClientServerCompatibilityTest"/>. /// </summary> public ClientServerCompatibilityTest(string groupId, string serverVersion, int clientProtocolVersion) { _groupId = groupId; _serverVersion = serverVersion; _clientProtocolVersion = new ClientProtocolVersion(1, (short)clientProtocolVersion, 0); }
/// <summary> /// Writes this instance to the specified writer. /// </summary> /// <param name="writer">The writer.</param> /// <param name="srvVer">Server version.</param> void IBinaryRawWriteAwareEx <BinaryWriter> .Write(BinaryWriter writer, ClientProtocolVersion srvVer) { Write(writer, srvVer); }
/// <summary> /// Writes this instance. /// </summary> void IBinaryRawWriteAwareEx <IBinaryRawWriter> .Write(IBinaryRawWriter writer, ClientProtocolVersion srvVer) { writer.WriteString(KeyTypeName); writer.WriteString(ValueTypeName); writer.WriteString(TableName); writer.WriteString(KeyFieldName); writer.WriteString(ValueFieldName); if (Fields != null) { writer.WriteInt(Fields.Count); foreach (var field in Fields) { field.Write(writer, srvVer); } } else { writer.WriteInt(0); } if (Aliases != null) { writer.WriteInt(Aliases.Count); foreach (var queryAlias in Aliases) { writer.WriteString(queryAlias.FullName); writer.WriteString(queryAlias.Alias); } } else { writer.WriteInt(0); } if (Indexes != null) { writer.WriteInt(Indexes.Count); foreach (var index in Indexes) { if (index == null) { throw new InvalidOperationException("Invalid cache configuration: QueryIndex can't be null."); } index.Write(writer); } } else { writer.WriteInt(0); } }
/// <summary> /// Initializes a new instance of the <see cref="CacheConfiguration"/> class. /// </summary> /// <param name="reader">The reader.</param> /// <param name="srvVer">Server version.</param> internal CacheConfiguration(BinaryReader reader, ClientProtocolVersion srvVer) { Read(reader, srvVer); }
/// <summary> /// Writes this instance to the specified writer. /// </summary> /// <param name="writer">The writer.</param> /// <param name="srvVer">Server version.</param> internal void Write(BinaryWriter writer, ClientProtocolVersion srvVer) { // 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.WriteBoolean(EncryptionEnabled); writer.WriteCollectionRaw(QueryEntities, srvVer); 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 (PlatformNearConfiguration != null) { writer.WriteBoolean(true); PlatformNearConfiguration.Write(writer); } else { writer.WriteBoolean(false); } 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); } }