/// <summary> /// <see cref="BobNodeClient"/> constructor /// </summary> /// <param name="innerClient">Low-level BobNodeClient</param> /// <param name="keySerializer">Serializer for <typeparamref name="TKey"/> (null for default serializer)</param> /// <param name="keySerializationPoolSize">Size of the Key serialization pool (null - shared pool, 0 or less - pool is disabled, 1 or greater - custom pool with specified size)</param> protected internal BobNodeClient(BobNodeClient innerClient, BobKeySerializer <TKey> keySerializer, int?keySerializationPoolSize) { if (innerClient == null) { throw new ArgumentNullException(nameof(innerClient)); } _innerClient = innerClient; if (keySerializer != null || BobDefaultKeySerializers.TryGetKeySerializer <TKey>(out keySerializer)) { _keySerializer = keySerializer; } else { throw new ArgumentException($"KeySerializer is null and no default key serializer found for key type '{typeof(TKey).Name}'", nameof(keySerializer)); } keySerializationPoolSize = keySerializationPoolSize ?? innerClient.ConnectionParameters.KeySerializationPoolSize; if (keySerializationPoolSize == null) { _keySerializationPool = SharedKeySerializationArrayPools.GetOrCreateSharedPool(_keySerializer); } else if (keySerializationPoolSize.Value > 0) { _keySerializationPool = new ByteArrayPool(_keySerializer.SerializedSize, keySerializationPoolSize.Value); } else { _keySerializationPool = null; } }
public void GetOrCreateTest(Type keyType) { void CoreLogic <TKey>() { BobKeySerializer <TKey> keySerializer = null; Assert.True(BobDefaultKeySerializers.TryGetKeySerializer <TKey>(out keySerializer)); ByteArrayPool pool = SharedKeySerializationArrayPools.GetOrCreateSharedPool(keySerializer); Assert.NotNull(pool); Assert.True(pool.MaxElementCount > 0); Assert.Equal(keySerializer.SerializedSize, pool.ByteArrayLength); var pool2 = SharedKeySerializationArrayPools.GetOrCreateSharedPool(keySerializer); Assert.True(object.ReferenceEquals(pool, pool2)); Assert.True(SharedKeySerializationArrayPools.TryGetSharedPool(keySerializer, out pool2)); Assert.True(object.ReferenceEquals(pool, pool2)); } var referenceDelegate = new Action(CoreLogic <int>); var typedDelegate = (Action)Delegate.CreateDelegate(typeof(Action), referenceDelegate.Method.GetGenericMethodDefinition().MakeGenericMethod(keyType)); typedDelegate(); }
/// <summary> /// <see cref="BobClusterBuilder{TKey}"/> constructor /// </summary> public BobClusterBuilder() { _nodeConnectionParameters = new List <BobConnectionParameters>(); _operationTimeout = null; _connectionTimeout = null; _nodeSelectionPolicyFactory = null; _operationRetryCount = null; _keySerializer = null; _keySerializationPoolSize = null; _user = null; _password = null; }
/// <summary> /// <see cref="BobNodeClient"/> constructor /// </summary> /// <param name="connectionParameters">Node connection parameters</param> /// <param name="keySerializer">Serializer for <typeparamref name="TKey"/> (null for default serializer)</param> /// <param name="keySerializationPoolSize">Size of the Key serialization pool (null - shared pool, 0 or less - pool is disabled, 1 or greater - custom pool with specified size)</param> public BobNodeClient(BobConnectionParameters connectionParameters, BobKeySerializer <TKey> keySerializer, int?keySerializationPoolSize) : this(new BobNodeClient(connectionParameters), keySerializer, keySerializationPoolSize) { }
/// <summary> /// <see cref="BobClusterClient"/> constructor /// </summary> /// <param name="clients">List of clients for every bob node</param> /// <param name="nodeSelectionPolicyFactory">Factory to create node selection policy (null for <see cref="SequentialNodeSelectionPolicy"/>)</param> /// <param name="operationRetryCount">The number of times the operation retries in case of failure (null - default value (no retries), 0 - no retries, >= 1 - number of retries after failure, -1 - number of retries is equal to number of nodes)</param> /// <param name="keySerializer">Serializer for <typeparamref name="TKey"/> (null for default serializer)</param> /// <param name="keySerializationPoolSize">Size of the Key serialization pool (null - shared pool, 0 or less - pool is disabled, 1 or greater - custom pool with specified size)</param> public BobClusterClient(IEnumerable <BobNodeClient> clients, BobNodeSelectionPolicyFactory nodeSelectionPolicyFactory, int?operationRetryCount, BobKeySerializer <TKey> keySerializer, int?keySerializationPoolSize) : this(new BobClusterClient(clients, nodeSelectionPolicyFactory, operationRetryCount), keySerializer, keySerializationPoolSize) { }
/// <summary> /// <see cref="BobClusterClient"/> constructor /// </summary> /// <param name="nodeConnectionStrings">List of connection strings to nodes</param> /// <param name="nodeSelectionPolicyFactory">Factory to create node selection policy (null for <see cref="SequentialNodeSelectionPolicy"/>)</param> /// <param name="operationRetryCount">The number of times the operation retries in case of failure (null - default value (no retries), 0 - no retries, >= 1 - number of retries after failure, -1 - number of retries is equal to number of nodes)</param> /// <param name="keySerializer">Serializer for <typeparamref name="TKey"/> (null for default serializer)</param> /// <param name="keySerializationPoolSize">Size of the Key serialization pool (null - shared pool, 0 or less - pool is disabled, 1 or greater - custom pool with specified size)</param> public BobClusterClient(IEnumerable <string> nodeConnectionStrings, BobNodeSelectionPolicyFactory nodeSelectionPolicyFactory, int?operationRetryCount, BobKeySerializer <TKey> keySerializer, int?keySerializationPoolSize) : this(nodeConnectionStrings.Select(o => new BobNodeClient(o)).ToList(), nodeSelectionPolicyFactory, operationRetryCount, keySerializer, keySerializationPoolSize) { }
/// <summary> /// Specifies key serializer to convert <typeparamref name="TKey"/> into byte array /// </summary> /// <param name="keySerializer">Key serializer for <typeparamref name="TKey"/></param> /// <returns>The reference to the current builder instatnce</returns> public BobClusterBuilder <TKey> WithKeySerializer(BobKeySerializer <TKey> keySerializer) { _keySerializer = keySerializer; return(this); }