private void InitializeSerializer(string serializerKey) { serializerKey = serializerKey?.Trim(); if (String.IsNullOrEmpty(serializerKey)) { serializerKey = Constants.DefaultSerializerKey; } _serializer = RpcSerializerRegistry.Get(serializerKey); if (_serializer == null && serializerKey != Constants.DefaultSerializerKey) { serializerKey = Constants.DefaultSerializerKey; _serializer = RpcSerializerRegistry.Get(serializerKey); } if (_serializer != null) { var serializerKeyBytes = Encoding.UTF8.GetBytes(serializerKey); Buffer.BlockCopy(serializerKeyBytes, 0, _serializerKeyBytes, 0, Math.Min(_serializerKeyBytes.Length, serializerKeyBytes.Length)); } }
private static IWireSerializer GetSerializer(RpcPartitionedMessage message) { IWireSerializer result = null; var serializerKey = message.Header.SerializerKey; if (String.IsNullOrEmpty(serializerKey)) { serializerKey = Constants.DefaultSerializerKey; } _serializerLock.EnterUpgradeableReadLock(); try { if (serializerKey == _serializerKey) { result = _serializer; } else { _serializerLock.EnterWriteLock(); try { _serializer = (result = RpcSerializerRegistry.Get(serializerKey)); _serializerKey = serializerKey; } finally { _serializerLock.ExitWriteLock(); } } } finally { _serializerLock.ExitUpgradeableReadLock(); } return(result); }