Пример #1
0
        internal RiakObject(string bucketType, string bucket, string key, RpbContent content, byte[] vectorClock)
        {
            BucketType = bucketType;
            Bucket     = bucket;
            Key        = key;

            this.vectorClock = vectorClock;

            if (content != null)
            {
                Value = content.value;

                vtag = content.vtag.FromRiakString();

                ContentEncoding = content.content_encoding.FromRiakString();
                ContentType     = content.content_type.FromRiakString();

                foreach (var userMeta in content.usermeta)
                {
                    userMetaData.Add(userMeta.key.FromRiakString(), userMeta.value.FromRiakString());
                }

                links.AddRange(content.links.Select(l => new RiakLink(l)));

                // TODO - FUTURE: look at how other clients use this data
                LastModified     = content.last_mod;
                LastModifiedUsec = content.last_mod_usecs;

                foreach (var index in content.indexes)
                {
                    var name = index.key.FromRiakString();

                    if (name.EndsWith(RiakConstants.IndexSuffix.Integer))
                    {
                        IntIndex(name.Remove(name.Length - RiakConstants.IndexSuffix.Integer.Length))
                        .Add(index.value.FromRiakString());
                    }
                    else
                    {
                        BinIndex(name.Remove(name.Length - RiakConstants.IndexSuffix.Binary.Length))
                        .Add(index.value.FromRiakString());
                    }
                }
            }

            hashCode = CalculateHashCode();
        }
Пример #2
0
        internal RiakObject(string bucket, string key, RpbContent content, byte[] vectorClock)
        {
            Bucket      = bucket;
            Key         = key;
            VectorClock = vectorClock;

            Value            = content.Value;
            VTag             = content.VTag.FromRiakString();
            ContentEncoding  = content.ContentEncoding.FromRiakString();
            ContentType      = content.ContentType.FromRiakString();
            UserMetaData     = content.UserMeta.ToDictionary(p => p.Key.FromRiakString(), p => p.Value.FromRiakString());
            Indexes          = content.Indexes.ToDictionary(p => p.Key.FromRiakString(), p => p.Value.FromRiakString());
            Links            = content.Links.Select(l => new RiakLink(l)).ToList();
            Siblings         = new List <RiakObject>();
            LastModified     = content.LastMod;
            LastModifiedUsec = content.LastModUSecs;

            _hashCode = CalculateHashCode();
        }
Пример #3
0
        internal RiakObject(string bucket, string key, RpbContent content, byte[] vectorClock)
        {
            Bucket      = bucket;
            Key         = key;
            VectorClock = vectorClock;


            Value            = content.value;
            VTag             = content.vtag.FromRiakString();
            ContentEncoding  = content.content_encoding.FromRiakString();
            ContentType      = content.content_type.FromRiakString();
            UserMetaData     = content.usermeta.ToDictionary(p => p.key.FromRiakString(), p => p.value.FromRiakString());
            Links            = content.links.Select(l => new RiakLink(l)).ToList();
            Siblings         = new List <RiakObject>();
            LastModified     = content.last_mod;
            LastModifiedUsec = content.last_mod_usecs;

            _intIndexes = new Dictionary <string, IntIndex>();
            _binIndexes = new Dictionary <string, BinIndex>();

            foreach (var index in content.indexes)
            {
                var name = index.key.FromRiakString();

                if (name.EndsWith(RiakConstants.IndexSuffix.Integer))
                {
                    IntIndex(name.Remove(name.Length - RiakConstants.IndexSuffix.Integer.Length))
                    .Add(index.value.FromRiakString());
                }
                else
                {
                    BinIndex(name.Remove(name.Length - RiakConstants.IndexSuffix.Binary.Length))
                    .Add(index.value.FromRiakString());
                }
            }

            _hashCode = CalculateHashCode();
        }