GetKeysBetween() публичный Метод

Returns a list of keys stored at this node that exist between the two addresses. Such keys returned are the storest path between the two addresses.
public GetKeysBetween ( AHAddress add1, AHAddress add2 ) : LinkedList
add1 AHAddress One of the address end points.
add2 AHAddress Another of the address end points.
Результат LinkedList
Пример #1
0
        public void Test2()
        {
            TableServerData          tsd = new TableServerData("0");
            RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();

            MemBlock[] addresses = new MemBlock[100];
            byte[]     value     = new byte[20];
            rng.GetBytes(value);
            DateTime now       = DateTime.UtcNow;
            DateTime lease_end = now.AddMinutes(1);

            for (int i = 0; i < addresses.Length; i++)
            {
                addresses[i] = (new AHAddress(rng)).ToMemBlock();
                tsd.AddEntry(new Entry(addresses[i], value, now, lease_end));
            }

            AHAddress             start   = new AHAddress(rng);
            AHAddress             end     = new AHAddress(rng);
            LinkedList <MemBlock> keys_se = tsd.GetKeysBetween(start, end);
            LinkedList <MemBlock> keys_es = tsd.GetKeysBetween(end, start);
            String output = " - " + start + ":" + end;

            if (start.IsLeftOf(end))
            {
                foreach (MemBlock address in addresses)
                {
                    AHAddress addr = new AHAddress(address);
                    if (addr.IsLeftOf(end) && addr.IsRightOf(start))
                    {
                        Assert.IsTrue(keys_se.Contains(address), addr + " in lse" + output);
                        Assert.IsTrue(keys_es.Contains(address), addr + " in les" + output);
                    }
                    else
                    {
                        Assert.IsFalse(keys_se.Contains(address), addr + " out lse" + output);
                        Assert.IsFalse(keys_es.Contains(address), addr + " out les" + output);
                    }
                }
            }
            else
            {
                foreach (MemBlock address in addresses)
                {
                    AHAddress addr = new AHAddress(address);
                    if (addr.IsLeftOf(start) && addr.IsRightOf(end))
                    {
                        Assert.IsTrue(keys_se.Contains(address), addr + " in rse" + output);
                        Assert.IsTrue(keys_es.Contains(address), addr + " in res" + output);
                    }
                    else
                    {
                        Assert.IsFalse(keys_se.Contains(address), addr + " out rse" + output);
                        Assert.IsFalse(keys_es.Contains(address), addr + " out res" + output);
                    }
                }
            }

            LinkedList <MemBlock> keys = tsd.GetKeys();

            foreach (MemBlock addr in addresses)
            {
                Assert.IsTrue(keys.Contains(addr), "keys does not contain: " + (new AHAddress(addr)));
            }
        }
Пример #2
0
    public void Test2() {
      TableServerData tsd = new TableServerData("0");
      RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
      MemBlock[] addresses = new MemBlock[100];
      byte[] value = new byte[20];
      rng.GetBytes(value);
      DateTime now = DateTime.UtcNow;
      DateTime lease_end = now.AddMinutes(1);
      for(int i = 0; i < addresses.Length; i++) {
        addresses[i] = (new AHAddress(rng)).ToMemBlock();
        tsd.AddEntry(new Entry(addresses[i], value, now, lease_end));
      }

      AHAddress start = new AHAddress(rng);
      AHAddress end = new AHAddress(rng);
      LinkedList<MemBlock> keys_se = tsd.GetKeysBetween(start, end);
      LinkedList<MemBlock> keys_es = tsd.GetKeysBetween(end, start);
      String output = " - " +start + ":" + end;
      if(start.IsLeftOf(end)) {
        foreach(MemBlock address in addresses) {
          AHAddress addr = new AHAddress(address);
          if(addr.IsLeftOf(end) && addr.IsRightOf(start)) {
            Assert.IsTrue(keys_se.Contains(address), addr + " in lse" + output);
            Assert.IsTrue(keys_es.Contains(address), addr + " in les" + output);
          }
          else {
            Assert.IsFalse(keys_se.Contains(address), addr + " out lse" + output);
            Assert.IsFalse(keys_es.Contains(address), addr + " out les" + output);
          }
        }
      }
      else {
        foreach(MemBlock address in addresses) {
          AHAddress addr = new AHAddress(address);
          if(addr.IsLeftOf(start) && addr.IsRightOf(end)) {
            Assert.IsTrue(keys_se.Contains(address), addr + " in rse" + output);
            Assert.IsTrue(keys_es.Contains(address), addr + " in res" + output);
          }
          else {
            Assert.IsFalse(keys_se.Contains(address), addr + " out rse" + output);
            Assert.IsFalse(keys_es.Contains(address), addr + " out res" + output);
          }
        }
      }

      LinkedList<MemBlock> keys = tsd.GetKeys();
      foreach(MemBlock addr in addresses) {
        Assert.IsTrue(keys.Contains(addr), "keys does not contain: " + (new AHAddress(addr)));
      }
    }