in modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfiguration.cs [301:662]
internal void Write(BinaryWriter writer)
{
Debug.Assert(writer != null);
// Simple properties
writer.WriteBooleanNullable(_clientMode);
writer.WriteIntArray(IncludedEventTypes == null ? null : IncludedEventTypes.ToArray());
writer.WriteTimeSpanAsLongNullable(_metricsExpireTime);
writer.WriteIntNullable(_metricsHistorySize);
writer.WriteTimeSpanAsLongNullable(_metricsLogFrequency);
writer.WriteTimeSpanAsLongNullable(_metricsUpdateFrequency);
writer.WriteIntNullable(_networkSendRetryCount);
writer.WriteTimeSpanAsLongNullable(_networkSendRetryDelay);
writer.WriteTimeSpanAsLongNullable(_networkTimeout);
writer.WriteString(WorkDirectory);
writer.WriteString(Localhost);
writer.WriteTimeSpanAsLongNullable(_failureDetectionTimeout);
writer.WriteTimeSpanAsLongNullable(_clientFailureDetectionTimeout);
writer.WriteTimeSpanAsLongNullable(_longQueryWarningTimeout);
writer.WriteBooleanNullable(_isActiveOnStart);
writer.WriteBooleanNullable(_authenticationEnabled);
writer.WriteTimeSpanAsLongNullable(_sysWorkerBlockedTimeout);
writer.WriteIntNullable(_sqlQueryHistorySize);
writer.WriteBooleanNullable(_javaPeerClassLoadingEnabled);
writer.WriteIntNullable((int?) _asyncContinuationExecutor);
if (SqlSchemas == null)
writer.WriteInt(0);
else
{
writer.WriteInt(SqlSchemas.Count);
foreach (string sqlSchema in SqlSchemas)
{
writer.WriteString(sqlSchema);
}
}
writer.WriteObjectDetached(ConsistentId);
// Thread pools
writer.WriteIntNullable(_publicThreadPoolSize);
writer.WriteIntNullable(_stripedThreadPoolSize);
writer.WriteIntNullable(_serviceThreadPoolSize);
writer.WriteIntNullable(_systemThreadPoolSize);
writer.WriteIntNullable(_asyncCallbackThreadPoolSize);
writer.WriteIntNullable(_managementThreadPoolSize);
writer.WriteIntNullable(_dataStreamerThreadPoolSize);
writer.WriteIntNullable(_utilityCacheThreadPoolSize);
writer.WriteIntNullable(_queryThreadPoolSize);
// Cache config
writer.WriteCollectionRaw(CacheConfiguration);
// Discovery config
var disco = DiscoverySpi;
if (disco != null)
{
writer.WriteBoolean(true);
var tcpDisco = disco as TcpDiscoverySpi;
if (tcpDisco == null)
throw new InvalidOperationException("Unsupported discovery SPI: " + disco.GetType());
tcpDisco.Write(writer);
}
else
writer.WriteBoolean(false);
var enc = EncryptionSpi;
if (enc != null)
{
writer.WriteBoolean(true);
var keystoreEnc = enc as KeystoreEncryptionSpi;
if (keystoreEnc == null)
throw new InvalidOperationException("Unsupported encryption SPI: " + enc.GetType());
writer.WriteString(keystoreEnc.MasterKeyName);
writer.WriteInt(keystoreEnc.KeySize);
writer.WriteString(keystoreEnc.KeyStorePath);
writer.WriteCharArray(
keystoreEnc.KeyStorePassword == null ? null : keystoreEnc.KeyStorePassword.ToCharArray());
}
else
writer.WriteBoolean(false);
// Communication config
var comm = CommunicationSpi;
if (comm != null)
{
writer.WriteBoolean(true);
var tcpComm = comm as TcpCommunicationSpi;
if (tcpComm == null)
throw new InvalidOperationException("Unsupported communication SPI: " + comm.GetType());
tcpComm.Write(writer);
}
else
writer.WriteBoolean(false);
// Binary config
if (BinaryConfiguration != null)
{
writer.WriteBoolean(true);
if (BinaryConfiguration.CompactFooterInternal != null)
{
writer.WriteBoolean(true);
writer.WriteBoolean(BinaryConfiguration.CompactFooter);
}
else
{
writer.WriteBoolean(false);
}
// Name mapper.
var mapper = BinaryConfiguration.NameMapper as BinaryBasicNameMapper;
writer.WriteBoolean(mapper != null && mapper.IsSimpleName);
}
else
{
writer.WriteBoolean(false);
}
// User attributes
var attrs = UserAttributes;
if (attrs == null)
writer.WriteInt(0);
else
{
writer.WriteInt(attrs.Count);
foreach (var pair in attrs)
{
writer.WriteString(pair.Key);
writer.Write(pair.Value);
}
}
// Atomic
if (AtomicConfiguration != null)
{
writer.WriteBoolean(true);
writer.WriteInt(AtomicConfiguration.AtomicSequenceReserveSize);
writer.WriteInt(AtomicConfiguration.Backups);
writer.WriteInt((int) AtomicConfiguration.CacheMode);
}
else
writer.WriteBoolean(false);
// Tx
if (TransactionConfiguration != null)
{
writer.WriteBoolean(true);
writer.WriteInt(TransactionConfiguration.PessimisticTransactionLogSize);
writer.WriteInt((int) TransactionConfiguration.DefaultTransactionConcurrency);
writer.WriteInt((int) TransactionConfiguration.DefaultTransactionIsolation);
writer.WriteLong((long) TransactionConfiguration.DefaultTimeout.TotalMilliseconds);
writer.WriteInt((int) TransactionConfiguration.PessimisticTransactionLogLinger.TotalMilliseconds);
writer.WriteLong((long) TransactionConfiguration.DefaultTimeoutOnPartitionMapExchange.TotalMilliseconds);
}
else
writer.WriteBoolean(false);
// Event storage
if (EventStorageSpi == null)
{
writer.WriteByte(0);
}
else if (EventStorageSpi is NoopEventStorageSpi)
{
writer.WriteByte(1);
}
else
{
var memEventStorage = EventStorageSpi as MemoryEventStorageSpi;
if (memEventStorage == null)
{
throw new IgniteException(string.Format(
"Unsupported IgniteConfiguration.EventStorageSpi: '{0}'. " +
"Supported implementations: '{1}', '{2}'.",
EventStorageSpi.GetType(), typeof(NoopEventStorageSpi), typeof(MemoryEventStorageSpi)));
}
writer.WriteByte(2);
memEventStorage.Write(writer);
}
#pragma warning disable 618 // Obsolete
if (MemoryConfiguration != null)
{
writer.WriteBoolean(true);
MemoryConfiguration.Write(writer);
}
else
{
writer.WriteBoolean(false);
}
#pragma warning restore 618
// SQL connector.
#pragma warning disable 618 // Obsolete
if (SqlConnectorConfiguration != null)
{
writer.WriteBoolean(true);
SqlConnectorConfiguration.Write(writer);
}
#pragma warning restore 618
else
{
writer.WriteBoolean(false);
}
// Client connector.
if (ClientConnectorConfiguration != null)
{
writer.WriteBoolean(true);
ClientConnectorConfiguration.Write(writer);
}
else
{
writer.WriteBoolean(false);
}
writer.WriteBoolean(ClientConnectorConfigurationEnabled);
// Persistence.
#pragma warning disable 618 // Obsolete
if (PersistentStoreConfiguration != null)
{
writer.WriteBoolean(true);
PersistentStoreConfiguration.Write(writer);
}
else
{
writer.WriteBoolean(false);
}
#pragma warning restore 618
// Data storage.
if (DataStorageConfiguration != null)
{
writer.WriteBoolean(true);
DataStorageConfiguration.Write(writer);
}
else
{
writer.WriteBoolean(false);
}
// SSL Context factory.
SslFactorySerializer.Write(writer, SslContextFactory);
// Failure handler.
if (FailureHandler == null)
{
writer.WriteBoolean(false);
}
else
{
writer.WriteBoolean(true);
if (FailureHandler is NoOpFailureHandler)
{
writer.WriteByte(0);
}
else if (FailureHandler is StopNodeFailureHandler)
{
writer.WriteByte(1);
}
else
{
var failHnd = FailureHandler as StopNodeOrHaltFailureHandler;
if (failHnd == null)
{
throw new InvalidOperationException(string.Format(
"Unsupported IgniteConfiguration.FailureHandler: '{0}'. " +
"Supported implementations: '{1}', '{2}', '{3}'.",
FailureHandler.GetType(), typeof(NoOpFailureHandler), typeof(StopNodeFailureHandler),
typeof(StopNodeOrHaltFailureHandler)));
}
writer.WriteByte(2);
failHnd.Write(writer);
}
}
if (ExecutorConfiguration == null)
{
writer.WriteInt(0);
}
else
{
writer.WriteInt(ExecutorConfiguration.Count);
foreach (var exec in ExecutorConfiguration)
{
writer.WriteString(exec.Name);
writer.WriteInt(exec.Size);
}
}
// Plugins (should be last).
if (PluginConfigurations != null)
{
var pos = writer.Stream.Position;
writer.WriteInt(0); // reserve count
var cnt = 0;
foreach (var cfg in PluginConfigurations)
{
if (cfg.PluginConfigurationClosureFactoryId != null)
{
writer.WriteInt(cfg.PluginConfigurationClosureFactoryId.Value);
cfg.WriteBinary(writer);
cnt++;
}
}
writer.Stream.WriteInt(pos, cnt);
}
else
{
writer.WriteInt(0);
}
// Local event listeners (should be last).
if (LocalEventListeners != null)
{
writer.WriteInt(LocalEventListeners.Count);
foreach (var listener in LocalEventListeners)
{
ValidateLocalEventListener(listener);
writer.WriteIntArray(listener.EventTypes.ToArray());
}
}
else
{
writer.WriteInt(0);
}
}