示例#1
0
        public void AddOrUpdate(int id, UnixTime time)
        {
            var oldYear = _id2time[id].Year;

            _id2time[id] = time;

            if (_years.ContainsKey(oldYear))
            {
                _years[oldYear].Remove(id);
                _byYear[oldYear].DelayRemove(id);
            }

            var newYear = time.Year;

            if (!_years.ContainsKey(newYear))
            {
                _years[newYear] = new CountSet();
                var list = _byYear[newYear] = DelaySortedList <int> .CreateDefault();

                _years[newYear].Add(id);
                list.Load(id);
            }
            else
            {
                _years[newYear].Add(id);
                _byYear[newYear].DelayAdd(id);
            }
        }
示例#2
0
        private void AddImpl(Like like, bool import)
        {
            if (_likee2likers[like.LikeeId] != null)
            {
                var list = _likee2likers[like.LikeeId];
                {
                    if (import)
                    {
                        var rawList = list.GetList();
                        int index   = rawList.CustomBinarySearch(like.LikerId);
                        if (index < 0)
                        {
                            list.Insert(~index, like.LikerId);
                        }
                    }
                    else
                    {
                        if (!list.FullContains(like.LikerId))
                        {
                            list.DelayAdd(like.LikerId);
                        }
                    }
                }
            }
            else
            {
                _likee2likers[like.LikeeId] = DelaySortedList <int> .CreateDefault();

                _likee2likers[like.LikeeId].Load(like.LikerId);
            }

            DelaySortedList <LikeBucket> likes;

            if (_liker2likes[like.LikerId] == null)
            {
                _liker2likes[like.LikerId] = new DelaySortedList <LikeBucket>(BucketIdComparer.Default);
            }

            likes = _liker2likes[like.LikerId];

            LikeBucket bucket = new LikeBucket(like.LikeeId, like.Timestamp.Seconds, 1);

            if (import)
            {
                var rawList = likes.GetList();
                int index   = rawList.BinarySearch(bucket, BucketIdComparer.Default);
                if (index >= 0)
                {
                    rawList[index] += bucket;
                }
                else
                {
                    likes.Insert(~index, bucket);
                }
            }
            else
            {
                likes.UpdateOrAdd(bucket, x => x + bucket);
            }
        }
        public void AddOrUpdate(int id, string name)
        {
            short nameId = _storage.Get(name);

            if (_names[id] == 0)
            {
                _ids.DelayAdd(id);
            }
            else
            {
                _byName[_names[id]].DelayRemove(id);
            }

            _names[id] = nameId;

            if (_byName[nameId] == null)
            {
                _byName[nameId] = DelaySortedList <int> .CreateDefault();

                _byName[nameId].Load(id);
            }
            else
            {
                _byName[nameId].DelayAdd(id);
            }
        }
示例#4
0
        public void AddOrUpdate(int id, string name)
        {
            short nameId = _storage.Get(name);

            if (_names[id] == 0)
            {
                _ids.DelayAdd(id);
            }
            else
            {
                _byName[_names[id]].DelayRemove(id);
            }

            _names[id] = nameId;

            DelaySortedList <int> nameGroup;

            if (!_byName.TryGetValue(nameId, out nameGroup))
            {
                nameGroup = DelaySortedList <int> .CreateDefault();

                _byName.Add(nameId, nameGroup);
                nameGroup.Load(id);
            }
            else
            {
                nameGroup.DelayAdd(id);
            }
        }
示例#5
0
        public SexContext()
        {
            _filter[0] = new CountSet();
            _filter[1] = new CountSet();
            _groups[0] = DelaySortedList <int> .CreateDefault();

            _groups[1] = DelaySortedList <int> .CreateDefault();
        }
示例#6
0
 public void Add(int id, short interestId)
 {
     _ids.Add(id);
     if (_id2AccId[interestId] == null)
     {
         _id2AccId[interestId] = DelaySortedList <int> .CreateDefault();
     }
     _id2AccId[interestId].DelayAdd(id);
 }
示例#7
0
 public void LoadBatch(int id, short cityId)
 {
     _raw[id] = cityId;
     _ids.Load(id);
     if (_id2AccId[cityId] == null)
     {
         _id2AccId[cityId] = DelaySortedList <int> .CreateDefault();
     }
     _id2AccId[cityId].Load(id);
 }
示例#8
0
        public void LoadBatch(int id, Phone phone)
        {
            _phones[id] = phone;

            if (!_code2ids.ContainsKey(phone.Code))
            {
                _code2ids[phone.Code] = DelaySortedList <int> .CreateDefault();
            }
            _code2ids[phone.Code].Load(id);
            _ids.Load(id);
        }
示例#9
0
 public void LoadBatch(int id, IEnumerable <short> interestsIds)
 {
     foreach (var interestId in interestsIds)
     {
         if (_id2AccId[interestId] == null)
         {
             _id2AccId[interestId] = DelaySortedList <int> .CreateDefault();
         }
         _id2AccId[interestId].Load(id);
     }
 }
示例#10
0
        public StatusContext()
        {
            _raw[(int)Status.Complicated] = new CountSet();
            _raw[(int)Status.Free]        = new CountSet();
            _raw[(int)Status.Reserved]    = new CountSet();

            _groups[(int)Status.Complicated] = DelaySortedList <int> .CreateDefault();

            _groups[(int)Status.Free] = DelaySortedList <int> .CreateDefault();

            _groups[(int)Status.Reserved] = DelaySortedList <int> .CreateDefault();
        }
示例#11
0
        public void LoadBatch(int id, Email email)
        {
            email.Prefix = string.Intern(email.Prefix);

            _emails[id] = email;

            if (!_domain2ids.ContainsKey(email.DomainId))
            {
                _domain2ids[email.DomainId] = DelaySortedList <int> .CreateDefault();
            }
            _domain2ids[email.DomainId].Load(id);
        }
示例#12
0
 public void Add(int id, short countryId)
 {
     if (_raw[id] == 0)
     {
         _ids.DelayAdd(id);
     }
     _raw[id] = countryId;
     if (_id2AccId[countryId] == null)
     {
         _id2AccId[countryId] = DelaySortedList <int> .CreateDefault();
     }
     _id2AccId[countryId].DelayAdd(id);
 }
示例#13
0
        public void LoadBatch(int id, UnixTime item)
        {
            var newYear = item.Year;

            if (!_years.ContainsKey(newYear))
            {
                _years[newYear]  = new CountSet();
                _byYear[newYear] = DelaySortedList <int> .CreateDefault();
            }

            _years[newYear].Add(id);
            _byYear[newYear].Load(id);
            _id2time[id] = item;
        }
示例#14
0
        public void Add(int id, Phone phone)
        {
            if (!_phones[id].IsNotEmpty())
            {
                _ids.DelayAdd(id);
            }

            _phones[id] = phone;

            if (!_code2ids.ContainsKey(phone.Code))
            {
                _code2ids[phone.Code] = DelaySortedList <int> .CreateDefault();
            }
            _code2ids[phone.Code].DelayAdd(id);
        }
        public void LoadBatch(int id, string name)
        {
            short nameId = _storage.Get(name);

            _names[id] = nameId;

            if (_byName[nameId] == null)
            {
                _byName[nameId] = DelaySortedList <int> .CreateDefault();
            }

            _byName[nameId].Load(id);

            _ids.Load(id);
        }
示例#16
0
        public void LoadBatch(int id, string lastname)
        {
            short nameId = _storage.Get(lastname);

            _names[id] = nameId;

            DelaySortedList <int> nameGroup;

            if (!_byName.TryGetValue(nameId, out nameGroup))
            {
                nameGroup = DelaySortedList <int> .CreateDefault();

                _byName.Add(nameId, nameGroup);
            }

            nameGroup.Load(id);

            _ids.Load(id);
        }