You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by pt...@apache.org on 2018/11/19 14:32:09 UTC
ignite git commit: IGNITE-10098 .NET: Add missing TcpCommunicationSpi
properties
Repository: ignite
Updated Branches:
refs/heads/master c711d4f6f -> a198b3ff5
IGNITE-10098 .NET: Add missing TcpCommunicationSpi properties
This closes #5379
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/a198b3ff
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/a198b3ff
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/a198b3ff
Branch: refs/heads/master
Commit: a198b3ff5799899690419e3c0b6306a1eaebd6e7
Parents: c711d4f
Author: Max-Pudov <pu...@gmail.com>
Authored: Mon Nov 19 17:31:47 2018 +0300
Committer: Pavel Tupitsyn <pt...@apache.org>
Committed: Mon Nov 19 17:31:47 2018 +0300
----------------------------------------------------------------------
.../utils/PlatformConfigurationUtils.java | 12 +++
.../Apache.Ignite.Core.Tests.DotNetCore.csproj | 1 +
.../Apache.Ignite.Core.Tests.csproj | 1 +
.../ApiParity/TcpCommunicationSpiParityTest.cs | 84 +++++++++++++++++
.../IgniteConfigurationTest.cs | 16 +++-
.../Communication/Tcp/TcpCommunicationSpi.cs | 99 ++++++++++++++++++--
6 files changed, 201 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/a198b3ff/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformConfigurationUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformConfigurationUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformConfigurationUtils.java
index 4649584..fada9d1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformConfigurationUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformConfigurationUtils.java
@@ -711,9 +711,11 @@ public class PlatformConfigurationUtils {
TcpCommunicationSpi comm = new TcpCommunicationSpi();
comm.setAckSendThreshold(in.readInt());
+ comm.setConnectionsPerNode(in.readInt());
comm.setConnectTimeout(in.readLong());
comm.setDirectBuffer(in.readBoolean());
comm.setDirectSendBuffer(in.readBoolean());
+ comm.setFilterReachableAddresses(in.readBoolean());
comm.setIdleConnectionTimeout(in.readLong());
comm.setLocalAddress(in.readString());
comm.setLocalPort(in.readInt());
@@ -722,11 +724,15 @@ public class PlatformConfigurationUtils {
comm.setMessageQueueLimit(in.readInt());
comm.setReconnectCount(in.readInt());
comm.setSelectorsCount(in.readInt());
+ comm.setSelectorSpins(in.readLong());
+ comm.setSharedMemoryPort(in.readInt());
comm.setSlowClientQueueLimit(in.readInt());
comm.setSocketReceiveBuffer(in.readInt());
comm.setSocketSendBuffer(in.readInt());
+ comm.setSocketWriteTimeout(in.readLong());
comm.setTcpNoDelay(in.readBoolean());
comm.setUnacknowledgedMessagesBufferSize(in.readInt());
+ comm.setUsePairedConnections(in.readBoolean());
cfg.setCommunicationSpi(comm);
}
@@ -1297,9 +1303,11 @@ public class PlatformConfigurationUtils {
TcpCommunicationSpi tcp = (TcpCommunicationSpi) comm;
w.writeInt(tcp.getAckSendThreshold());
+ w.writeInt(tcp.getConnectionsPerNode());
w.writeLong(tcp.getConnectTimeout());
w.writeBoolean(tcp.isDirectBuffer());
w.writeBoolean(tcp.isDirectSendBuffer());
+ w.writeBoolean(tcp.isFilterReachableAddresses());
w.writeLong(tcp.getIdleConnectionTimeout());
w.writeString(tcp.getLocalAddress());
w.writeInt(tcp.getLocalPort());
@@ -1308,11 +1316,15 @@ public class PlatformConfigurationUtils {
w.writeInt(tcp.getMessageQueueLimit());
w.writeInt(tcp.getReconnectCount());
w.writeInt(tcp.getSelectorsCount());
+ w.writeLong(tcp.getSelectorSpins());
+ w.writeInt(tcp.getSharedMemoryPort());
w.writeInt(tcp.getSlowClientQueueLimit());
w.writeInt(tcp.getSocketReceiveBuffer());
w.writeInt(tcp.getSocketSendBuffer());
+ w.writeLong(tcp.getSocketWriteTimeout());
w.writeBoolean(tcp.isTcpNoDelay());
w.writeInt(tcp.getUnacknowledgedMessagesBufferSize());
+ w.writeBoolean(tcp.isUsePairedConnections());
}
else
w.writeBoolean(false);
http://git-wip-us.apache.org/repos/asf/ignite/blob/a198b3ff/modules/platforms/dotnet/Apache.Ignite.Core.Tests.DotNetCore/Apache.Ignite.Core.Tests.DotNetCore.csproj
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests.DotNetCore/Apache.Ignite.Core.Tests.DotNetCore.csproj b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.DotNetCore/Apache.Ignite.Core.Tests.DotNetCore.csproj
index 6550a7f..2ec0bdb 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests.DotNetCore/Apache.Ignite.Core.Tests.DotNetCore.csproj
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.DotNetCore/Apache.Ignite.Core.Tests.DotNetCore.csproj
@@ -42,6 +42,7 @@
<Compile Include="..\Apache.Ignite.Core.Tests\ApiParity\QueryEntityConfigurationParityTest.cs" Link="ApiParity\QueryEntityConfigurationParityTest.cs" />
<Compile Include="..\Apache.Ignite.Core.Tests\ApiParity\ServicesParityTest.cs" Link="ApiParity\ServicesParityTest.cs" />
<Compile Include="..\Apache.Ignite.Core.Tests\ApiParity\StreamerParityTest.cs" Link="ApiParity\StreamerParityTest.cs" />
+ <Compile Include="..\Apache.Ignite.Core.Tests\ApiParity\TcpCommunicationSpiParityTest.cs" Link="ApiParity\TcpCommunicationSpiParityTest.cs" />
<Compile Include="..\Apache.Ignite.Core.Tests\ApiParity\TransactionMetricsParityTest.cs" Link="ApiParity\TransactionMetricsParityTest.cs" />
<Compile Include="..\Apache.Ignite.Core.Tests\ApiParity\TransactionsParityTest.cs" Link="ApiParity\TransactionsParityTest.cs" />
<Compile Include="..\Apache.Ignite.Core.Tests\AssertExtensions.cs" Link="Common\AssertExtensions.cs" />
http://git-wip-us.apache.org/repos/asf/ignite/blob/a198b3ff/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj
index aa58afc..e2d4146 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj
@@ -94,6 +94,7 @@
<Compile Include="ApiParity\QueryEntityConfigurationParityTest.cs" />
<Compile Include="ApiParity\ServicesParityTest.cs" />
<Compile Include="ApiParity\StreamerParityTest.cs" />
+ <Compile Include="ApiParity\TcpCommunicationSpiParityTest.cs" />
<Compile Include="ApiParity\TransactionMetricsParityTest.cs" />
<Compile Include="ApiParity\TransactionsParityTest.cs" />
<Compile Include="AssertExtensions.cs" />
http://git-wip-us.apache.org/repos/asf/ignite/blob/a198b3ff/modules/platforms/dotnet/Apache.Ignite.Core.Tests/ApiParity/TcpCommunicationSpiParityTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/ApiParity/TcpCommunicationSpiParityTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/ApiParity/TcpCommunicationSpiParityTest.cs
new file mode 100644
index 0000000..be8bd11
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/ApiParity/TcpCommunicationSpiParityTest.cs
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+namespace Apache.Ignite.Core.Tests.ApiParity
+{
+ using System.Collections.Generic;
+ using Apache.Ignite.Core.Cache.Configuration;
+ using Apache.Ignite.Core.Communication.Tcp;
+ using NUnit.Framework;
+
+ /// <summary>
+ /// Tests that .NET <see cref="CacheConfiguration"/> has all properties from Java configuration APIs.
+ /// </summary>
+ public class TcpCommunicationSpiParityTest
+ {
+ /** Known property name mappings. */
+ private static readonly Dictionary<string, string> KnownMappings = new Dictionary<string, string>()
+ {
+ {"SocketReceiveBuffer", "SocketReceiveBufferSize"},
+ {"SocketSendBuffer", "SocketSendBufferSize"}
+ };
+
+ /** Properties that are not needed on .NET side. */
+ private static readonly string[] UnneededProperties =
+ {
+ // Java-specific.
+ "AddressResolver",
+ "Listener",
+ "run",
+ "ReceivedMessagesByType",
+ "ReceivedMessagesByNode",
+ "SentMessagesByType",
+ "SentMessagesByNode",
+ "SentMessagesCount",
+ "SentBytesCount",
+ "ReceivedMessagesCount",
+ "ReceivedBytesCount",
+ "OutboundMessagesQueueSize",
+ "resetMetrics",
+ "dumpStats",
+ "boundPort",
+ "SpiContext",
+ "simulateNodeFailure",
+ "cancel",
+ "order",
+ "onTimeout",
+ "endTime",
+ "id",
+ "connectionIndex",
+ "NodeFilter"
+ };
+
+ /** Properties that are missing on .NET side. */
+ private static readonly string[] MissingProperties = {};
+
+ /// <summary>
+ /// Tests the cache configuration parity.
+ /// </summary>
+ [Test]
+ public void TestTcpCommunicationSpi()
+ {
+ ParityTest.CheckConfigurationParity(
+ @"modules\core\src\main\java\org\apache\ignite\spi\communication\tcp\TcpCommunicationSpi.java",
+ typeof(TcpCommunicationSpi),
+ UnneededProperties,
+ MissingProperties,
+ KnownMappings);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a198b3ff/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationTest.cs
index c26e5a3..f0f3b7c 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationTest.cs
@@ -186,9 +186,11 @@ namespace Apache.Ignite.Core.Tests
var com = (TcpCommunicationSpi) cfg.CommunicationSpi;
var resCom = (TcpCommunicationSpi) resCfg.CommunicationSpi;
Assert.AreEqual(com.AckSendThreshold, resCom.AckSendThreshold);
+ Assert.AreEqual(com.ConnectionsPerNode, resCom.ConnectionsPerNode);
Assert.AreEqual(com.ConnectTimeout, resCom.ConnectTimeout);
Assert.AreEqual(com.DirectBuffer, resCom.DirectBuffer);
Assert.AreEqual(com.DirectSendBuffer, resCom.DirectSendBuffer);
+ Assert.AreEqual(com.FilterReachableAddresses, resCom.FilterReachableAddresses);
Assert.AreEqual(com.IdleConnectionTimeout, resCom.IdleConnectionTimeout);
Assert.AreEqual(com.LocalAddress, resCom.LocalAddress);
Assert.AreEqual(com.LocalPort, resCom.LocalPort);
@@ -197,12 +199,16 @@ namespace Apache.Ignite.Core.Tests
Assert.AreEqual(com.MessageQueueLimit, resCom.MessageQueueLimit);
Assert.AreEqual(com.ReconnectCount, resCom.ReconnectCount);
Assert.AreEqual(com.SelectorsCount, resCom.SelectorsCount);
+ Assert.AreEqual(com.SelectorSpins, resCom.SelectorSpins);
+ Assert.AreEqual(com.SharedMemoryPort, resCom.SharedMemoryPort);
Assert.AreEqual(com.SlowClientQueueLimit, resCom.SlowClientQueueLimit);
Assert.AreEqual(com.SocketReceiveBufferSize, resCom.SocketReceiveBufferSize);
Assert.AreEqual(com.SocketSendBufferSize, resCom.SocketSendBufferSize);
+ Assert.AreEqual(com.SocketWriteTimeout, resCom.SocketWriteTimeout);
Assert.AreEqual(com.TcpNoDelay, resCom.TcpNoDelay);
Assert.AreEqual(com.UnacknowledgedMessagesBufferSize, resCom.UnacknowledgedMessagesBufferSize);
-
+ Assert.AreEqual(com.UsePairedConnections, resCom.UsePairedConnections);
+
Assert.AreEqual(cfg.FailureDetectionTimeout, resCfg.FailureDetectionTimeout);
Assert.AreEqual(cfg.SystemWorkerBlockedTimeout, resCfg.SystemWorkerBlockedTimeout);
Assert.AreEqual(cfg.ClientFailureDetectionTimeout, resCfg.ClientFailureDetectionTimeout);
@@ -750,7 +756,13 @@ namespace Apache.Ignite.Core.Tests
TcpNoDelay = false,
SlowClientQueueLimit = 98,
SocketSendBufferSize = 2045,
- UnacknowledgedMessagesBufferSize = 3450
+ UnacknowledgedMessagesBufferSize = 3450,
+ ConnectionsPerNode = 12,
+ UsePairedConnections = true,
+ SharedMemoryPort = 1234,
+ SocketWriteTimeout = 2222,
+ SelectorSpins = 12,
+ FilterReachableAddresses = true
},
FailureDetectionTimeout = TimeSpan.FromSeconds(3.5),
SystemWorkerBlockedTimeout = TimeSpan.FromSeconds(8.5),
http://git-wip-us.apache.org/repos/asf/ignite/blob/a198b3ff/modules/platforms/dotnet/Apache.Ignite.Core/Communication/Tcp/TcpCommunicationSpi.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Communication/Tcp/TcpCommunicationSpi.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Communication/Tcp/TcpCommunicationSpi.cs
index d272906..b070f9a 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Communication/Tcp/TcpCommunicationSpi.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Communication/Tcp/TcpCommunicationSpi.cs
@@ -40,6 +40,9 @@ namespace Apache.Ignite.Core.Communication.Tcp
/// <summary> Default value of <see cref="AckSendThreshold"/> property. </summary>
public const int DefaultAckSendThreshold = 16;
+ /// <summary> Default value of <see cref="ConnectionsPerNode"/> property. </summary>
+ public const int DefaultConnectionsPerNode = 1;
+
/// <summary> Default value of <see cref="ConnectTimeout"/> property. </summary>
public static readonly TimeSpan DefaultConnectTimeout = TimeSpan.FromSeconds(5);
@@ -49,6 +52,9 @@ namespace Apache.Ignite.Core.Communication.Tcp
/// <summary> Default value of <see cref="DirectSendBuffer"/> property. </summary>
public const bool DefaultDirectSendBuffer = false;
+ /// <summary> Default value of <see cref="FilterReachableAddresses"/> property. </summary>
+ public const bool DefaultFilterReachableAddresses = false;
+
/// <summary> Default value of <see cref="IdleConnectionTimeout"/> property. </summary>
public static readonly TimeSpan DefaultIdleConnectionTimeout = TimeSpan.FromSeconds(30);
@@ -70,31 +76,49 @@ namespace Apache.Ignite.Core.Communication.Tcp
/// <summary> Default value of <see cref="SelectorsCount"/> property. </summary>
public static readonly int DefaultSelectorsCount = Math.Min(4, Environment.ProcessorCount);
+ /// <summary> Default value of <see cref="SelectorSpins"/> property. </summary>
+ public const long DefaultSelectorSpins = 0;
+
+ /// <summary> Default value of <see cref="SharedMemoryPort"/> property. </summary>
+ public const int DefaultSharedMemoryPort = -1;
+
/// <summary> Default socket buffer size. </summary>
public const int DefaultSocketBufferSize = 32 * 1024;
+ /// <summary> Default value of <see cref="SocketWriteTimeout"/> property. </summary>
+ public const long DefaultSocketWriteTimeout = 2000;
+
/// <summary> Default value of <see cref="TcpNoDelay"/> property. </summary>
public const bool DefaultTcpNoDelay = true;
+ /// <summary> Default value of <see cref="UsePairedConnections"/> property. </summary>
+ public const bool DefaultUsePairedConnections = false;
+
/// <summary>
/// Initializes a new instance of the <see cref="TcpCommunicationSpi"/> class.
/// </summary>
public TcpCommunicationSpi()
{
AckSendThreshold = DefaultAckSendThreshold;
+ ConnectionsPerNode = DefaultConnectionsPerNode;
ConnectTimeout = DefaultConnectTimeout;
DirectBuffer = DefaultDirectBuffer;
DirectSendBuffer = DefaultDirectSendBuffer;
+ FilterReachableAddresses = DefaultFilterReachableAddresses;
IdleConnectionTimeout = DefaultIdleConnectionTimeout;
LocalPort = DefaultLocalPort;
LocalPortRange = DefaultLocalPortRange;
MaxConnectTimeout = DefaultMaxConnectTimeout;
MessageQueueLimit = DefaultMessageQueueLimit;
ReconnectCount = DefaultReconnectCount;
+ SharedMemoryPort = DefaultSharedMemoryPort;
SelectorsCount = DefaultSelectorsCount;
+ SelectorSpins = DefaultSelectorSpins;
SocketReceiveBufferSize = DefaultSocketBufferSize;
SocketSendBufferSize = DefaultSocketBufferSize;
+ SocketWriteTimeout = DefaultSocketWriteTimeout;
TcpNoDelay = DefaultTcpNoDelay;
+ UsePairedConnections = DefaultUsePairedConnections;
}
/// <summary>
@@ -104,9 +128,11 @@ namespace Apache.Ignite.Core.Communication.Tcp
internal TcpCommunicationSpi(IBinaryRawReader reader)
{
AckSendThreshold = reader.ReadInt();
+ ConnectionsPerNode = reader.ReadInt();
ConnectTimeout = reader.ReadLongAsTimespan();
DirectBuffer = reader.ReadBoolean();
DirectSendBuffer = reader.ReadBoolean();
+ FilterReachableAddresses = reader.ReadBoolean();
IdleConnectionTimeout = reader.ReadLongAsTimespan();
LocalAddress = reader.ReadString();
LocalPort = reader.ReadInt();
@@ -115,15 +141,19 @@ namespace Apache.Ignite.Core.Communication.Tcp
MessageQueueLimit = reader.ReadInt();
ReconnectCount = reader.ReadInt();
SelectorsCount = reader.ReadInt();
+ SelectorSpins = reader.ReadLong();
+ SharedMemoryPort = reader.ReadInt();
SlowClientQueueLimit = reader.ReadInt();
SocketReceiveBufferSize = reader.ReadInt();
SocketSendBufferSize = reader.ReadInt();
+ SocketWriteTimeout = reader.ReadLong();
TcpNoDelay = reader.ReadBoolean();
UnacknowledgedMessagesBufferSize = reader.ReadInt();
+ UsePairedConnections = reader.ReadBoolean();
}
/// <summary>
- /// Gets or sets the number of received messages per connection to node
+ /// Gets or sets the number of received messages per connection to node
/// after which acknowledgment message is sent.
/// </summary>
[DefaultValue(DefaultAckSendThreshold)]
@@ -136,14 +166,14 @@ namespace Apache.Ignite.Core.Communication.Tcp
public TimeSpan ConnectTimeout { get; set; }
/// <summary>
- /// Gets or sets a value indicating whether to allocate direct (ByteBuffer.allocateDirect)
+ /// Gets or sets a value indicating whether to allocate direct (ByteBuffer.allocateDirect)
/// or heap (ByteBuffer.allocate) buffer.
/// </summary>
[DefaultValue(DefaultDirectBuffer)]
public bool DirectBuffer { get; set; }
/// <summary>
- /// Gets or sets a value indicating whether to allocate direct (ByteBuffer.allocateDirect)
+ /// Gets or sets a value indicating whether to allocate direct (ByteBuffer.allocateDirect)
/// or heap (ByteBuffer.allocate) send buffer.
/// </summary>
[DefaultValue(DefaultDirectSendBuffer)]
@@ -156,7 +186,7 @@ namespace Apache.Ignite.Core.Communication.Tcp
public TimeSpan IdleConnectionTimeout { get; set; }
/// <summary>
- /// Gets or sets the local host address for socket binding. Note that one node could have
+ /// Gets or sets the local host address for socket binding. Note that one node could have
/// additional addresses beside the loopback one. This configuration parameter is optional.
/// </summary>
public string LocalAddress { get; set; }
@@ -193,7 +223,7 @@ namespace Apache.Ignite.Core.Communication.Tcp
/// <summary>
/// Gets or sets the message queue limit for incoming and outgoing messages.
/// <para />
- /// When set to positive number send queue is limited to the configured value.
+ /// When set to positive number send queue is limited to the configured value.
/// <c>0</c> disables the limitation.
/// </summary>
[DefaultValue(DefaultMessageQueueLimit)]
@@ -216,11 +246,11 @@ namespace Apache.Ignite.Core.Communication.Tcp
/// <summary>
/// Gets or sets slow client queue limit.
/// <para/>
- /// When set to a positive number, communication SPI will monitor clients outbound message queue sizes
+ /// When set to a positive number, communication SPI will monitor clients outbound message queue sizes
/// and will drop those clients whose queue exceeded this limit.
/// <para/>
/// Usually this value should be set to the same value as <see cref="MessageQueueLimit"/> which controls
- /// message back-pressure for server nodes. The default value for this parameter is <c>0</c>
+ /// message back-pressure for server nodes. The default value for this parameter is <c>0</c>
/// which means unlimited.
/// </summary>
public int SlowClientQueueLimit { get; set; }
@@ -230,7 +260,7 @@ namespace Apache.Ignite.Core.Communication.Tcp
/// </summary>
[DefaultValue(DefaultSocketBufferSize)]
public int SocketReceiveBufferSize { get; set; }
-
+
/// <summary>
/// Gets or sets the size of the socket send buffer.
/// </summary>
@@ -250,21 +280,66 @@ namespace Apache.Ignite.Core.Communication.Tcp
public bool TcpNoDelay { get; set; }
/// <summary>
- /// Gets or sets the maximum number of stored unacknowledged messages per connection to node.
- /// If number of unacknowledged messages exceeds this number
+ /// Gets or sets the maximum number of stored unacknowledged messages per connection to node.
+ /// If number of unacknowledged messages exceeds this number
/// then connection to node is closed and reconnect is attempted.
/// </summary>
public int UnacknowledgedMessagesBufferSize { get; set; }
/// <summary>
+ /// Gets or sets the number of connections per node.
+ /// </summary>
+ [DefaultValue(DefaultConnectionsPerNode)]
+ public int ConnectionsPerNode { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether separate connections should be used for incoming and outgoing data.
+ /// Set this to <c>true</c> if <see cref="ConnectionsPerNode"/> should maintain connection for outgoing
+ /// and incoming messages separately. In this case total number of connections between local and each remote
+ /// node is equals to <see cref="ConnectionsPerNode"/> * 2.
+ /// </summary>
+ public bool UsePairedConnections { get; set; }
+
+ /// <summary>
+ /// Gets or sets a local port to accept shared memory connections.
+ /// </summary>
+ [DefaultValue(DefaultSharedMemoryPort)]
+ public int SharedMemoryPort { get; set; }
+
+ /// <summary>
+ /// Gets or sets socket write timeout for TCP connection. If message can not be written to
+ /// socket within this time then connection is closed and reconnect is attempted.
+ /// <para />
+ /// Default value is <see cref="DefaultSocketWriteTimeout"/>.
+ /// </summary>
+ [DefaultValue(DefaultSocketWriteTimeout)]
+ public long SocketWriteTimeout { get; set; }
+
+ /// <summary>
+ /// Gets or sets a values that defines how many non-blocking selectors should be made.
+ /// Can be set to <see cref="Int64.MaxValue"/> so selector threads will never block.
+ /// <para />
+ /// Default value is <see cref="DefaultSelectorSpins"/>.
+ /// </summary>
+ public long SelectorSpins { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether filter for reachable addresses
+ /// should be enabled on creating tcp client.
+ /// </summary>
+ public bool FilterReachableAddresses { get; set; }
+
+ /// <summary>
/// Writes this instance to the specified writer.
/// </summary>
internal void Write(IBinaryRawWriter writer)
{
writer.WriteInt(AckSendThreshold);
+ writer.WriteInt(ConnectionsPerNode);
writer.WriteLong((long) ConnectTimeout.TotalMilliseconds);
writer.WriteBoolean(DirectBuffer);
writer.WriteBoolean(DirectSendBuffer);
+ writer.WriteBoolean(FilterReachableAddresses);
writer.WriteLong((long) IdleConnectionTimeout.TotalMilliseconds);
writer.WriteString(LocalAddress);
writer.WriteInt(LocalPort);
@@ -273,11 +348,15 @@ namespace Apache.Ignite.Core.Communication.Tcp
writer.WriteInt(MessageQueueLimit);
writer.WriteInt(ReconnectCount);
writer.WriteInt(SelectorsCount);
+ writer.WriteLong(SelectorSpins);
+ writer.WriteInt(SharedMemoryPort);
writer.WriteInt(SlowClientQueueLimit);
writer.WriteInt(SocketReceiveBufferSize);
writer.WriteInt(SocketSendBufferSize);
+ writer.WriteLong(SocketWriteTimeout);
writer.WriteBoolean(TcpNoDelay);
writer.WriteInt(UnacknowledgedMessagesBufferSize);
+ writer.WriteBoolean(UsePairedConnections);
}
}
}