Пример #1
0
        public void TryParsePrimitive(object instance, bool isSuccess, object value)
        {
            var success = RedisValueExtractor.TryParsePrimitive(instance, out RedisValue result);

            Assert.AreEqual(isSuccess, success);
            Assert.AreEqual((RedisValue)(string)value, result);
        }
Пример #2
0
        private IEnumerable <T> GetValues(RedisKey key, RedisValue[] values)
        {
            foreach (var value in values)
            {
                if (!value.HasValue)
                {
                    log.LogDebug("{0} Redis value is null", key);
                    yield break;
                }

                if (RedisValueExtractor.IsPrimitive <T>())
                {
                    yield return(RedisValueExtractor.SafeConvert <T>(value));
                }
                else
                {
                    var data = (byte[])value;
                    if ((data == null) ||
                        (data.Length == 0))
                    {
                        log.LogDebug("{0} Data length is zero", key);
                        yield break;
                    }

                    yield return(serializer.Deserialize <T>(data));
                }
            }
        }
Пример #3
0
        private RedisValue GetValue(T instance)
        {
            if (!RedisValueExtractor.TryParsePrimitive(instance, out RedisValue redisValue))
            {
                return(serializer.Serialize(instance));
            }

            return(redisValue);
        }
Пример #4
0
 public void Construct()
 {
     Assert.IsTrue(RedisValueExtractor.IsPrimitive <int>());
     Assert.IsTrue(RedisValueExtractor.IsPrimitive <int?>());
     Assert.IsTrue(RedisValueExtractor.IsPrimitive <bool>());
     Assert.IsTrue(RedisValueExtractor.IsPrimitive <byte[]>());
     Assert.IsTrue(RedisValueExtractor.IsPrimitive <string>());
     Assert.IsFalse(RedisValueExtractor.IsPrimitive <Identity>());
 }
Пример #5
0
        public void TryParsePrimitiveComplex()
        {
            var success = RedisValueExtractor.TryParsePrimitive <int?>(1, out RedisValue result);

            Assert.AreEqual(true, success);
            Assert.AreEqual((RedisValue)1, result);

            success = RedisValueExtractor.TryParsePrimitive <int?>(null, out result);
            Assert.AreEqual(true, success);
            Assert.AreEqual(RedisValue.Null, result);
        }
Пример #6
0
        public void SafeConvert()
        {
            var result = RedisValueExtractor.SafeConvert <int>(1);

            Assert.AreEqual(1, result);
            var resultString = RedisValueExtractor.SafeConvert <string>("1");

            Assert.AreEqual("1", resultString);
            var resultBool = RedisValueExtractor.SafeConvert <bool>(true);

            Assert.AreEqual(true, resultBool);
        }
Пример #7
0
        public void RegisterObjectHashSet <T>(IDataSerializer serializer, bool isWellKnown = false)
            where T : class
        {
            if (isWellKnown &&
                RedisValueExtractor.IsPrimitive <T>())
            {
                throw new ArgumentOutOfRangeException(nameof(isWellKnown), "Primitive type can't be well known ");
            }

            var serialization = new ObjectHashSetSerialization <T>(loggerFactory.CreateLogger <ObjectHashSetSerialization <T> >(), serializer, isWellKnown);
            var persistency   = new ObjectListSerialization <T>(loggerFactory.CreateLogger <ObjectListSerialization <T> >(), link, serialization, new RedisSet(loggerFactory.CreateLogger <RedisSet>(), link, link.IndexManager), link.IndexManager);

            link.Register(persistency);
        }