コード例 #1
0
 /// <summary>
 /// Removes and disposes of the contents of the cachedContentTree.
 /// </summary>
 private void CleanUpCachedContentTree()
 {
     if (cachedContentTree.Any())
     {
         foreach (var rangeValuePair in cachedContentTree)
         {
             cachedContentTree.Remove(rangeValuePair.Value);
             rangeValuePair.Value.Dispose();
         }
     }
     totalContentLength = 0;
 }
コード例 #2
0
        public void QueryEmptyTree_RemoveAllElementsFromTree_ExpectNoException()
        {
            // Arrang
            var standardItemComparer = new RangeItemComparer();
            var rangeTree            = new RangeTree <int, RangeItem>(standardItemComparer);
            var item = new RangeItem(1, 3);

            rangeTree.Add(item);
            rangeTree.Remove(item);

            // Act & Assert
            Assert.That(() => rangeTree.Query(2), Throws.Nothing);
        }
コード例 #3
0
        public void AddUser(Guid uid, double lon, double lat)
        {
            var lonLat = S2LatLng.FromDegrees(lat, lon);

            var cellId = S2CellId.FromLatLng(lonLat);

            var cellIdStorageLevel = cellId.ParentForLevel(_level);

            //var userList = new UserList { s2CellId = cellIdStorageLevel, list = new List<Guid>() };

            var query_res = rtree.Query(cellIdStorageLevel);

            _currentUsersLocations[uid] = cellIdStorageLevel;
            SimpleRangeItem rangeItem = null;

            if (query_res.Count > 0)
            {
                var users = new List <Guid>();
                foreach (var item in query_res)
                {
                    users.AddRange(item.Content);
                }

                rangeItem = new SimpleRangeItem {
                    Range = new Range <S2CellId>(cellIdStorageLevel), Content = users
                };

                rtree.Remove(query_res[0]);
            }

            if (rangeItem == null)
            {
                rangeItem = new SimpleRangeItem {
                    Range = new Range <S2CellId>(cellIdStorageLevel), Content = new List <Guid> ()
                };
            }
            rangeItem.Content.Add(uid);

            rtree.Add(rangeItem);
        }