Esempio n. 1
0
        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));
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 static RpcServer()
 {
     RpcSerializerRegistry.Register <DefaultRpcSerializer>(Constants.DefaultSerializerKey);
     RpcSerializerRegistry.Register <DefaultRpcSerializer>("wire");
 }