Package net.tomp2p.storage

Examples of net.tomp2p.storage.Data


    private static void putDST(final PeerDHT peer, final int index, final String word, final Interval interval,
            final int height) throws IOException {
        Interval inter = interval;
        for (int i = 0; i <= height; i++) {
            Number160 key = Number160.createHash(inter.toString());
            FuturePut futurePut = peer.put(key).data(new Number160(index), new Data(word)).start();
            futurePut.awaitUninterruptibly();
            System.out.println("stored " + word + " in " + inter + " status: " + futurePut.isSuccess());
            inter = inter.split(index);
        }
        System.out.println("for DHT.put() we used " + (height + 1) + " DHT calls");
View Full Code Here


    private static void execute(PeerDHT peer, Query query) throws IOException, ClassNotFoundException {
        Number160 locationKey = Number160.createHash(query.getCollectionName());
        if (query.getQueryType() == QueryType.INSERT) {
            if (query.getValueType() == ValueType.SINGLE) {
                peer.add(locationKey).data(new Data(query.getValue())).start().awaitUninterruptibly();
            } else if (query.getValueType() == ValueType.ARRAY) {
                for (String value : query.getValues()) {
                    peer.add(locationKey).data(new Data(value)).start().awaitUninterruptibly();
                }
            } else if (query.getValueType() == ValueType.MAP) {
                Map<Number160, Data> dataMap = new HashMap<Number160, Data>();
                for (Map.Entry<String, String> entry : query.getValueMap().entrySet()) {
                    dataMap.put(Number160.createHash(entry.getKey()), new Data(entry.getValue()));
                }
                peer.put(locationKey).dataMapContent(dataMap).start().awaitUninterruptibly();
            }
        } else if (query.getQueryType() == QueryType.SELECT) {
            FutureGet futureDHT = peer.get(locationKey).all().start();
View Full Code Here

      dataLock640.unlock(lock);
    }
  }

  private Data getInternal(Number640 key) {
    Data data = backend.get(key);
    if (data != null && !data.hasPrepareFlag()) {
      return data;
    } else {
      return null;
    }
  }
View Full Code Here

        }
      }
    }

  private void deletePredecessors(Number640 key, NavigableMap<Number640, Data> sortedMap) {
    Data version = sortedMap.remove(key);
    // check if version has been already deleted
    if (version == null) {
      return;
    }
    // check if version is initial version
    if (version.basedOnSet().isEmpty()) {
      return;
    }
    // remove all predecessor versions recursively
    for (Number160 basedOnKey : version.basedOnSet()) {
      deletePredecessors(new Number640(key.locationAndDomainAndContentKey(), basedOnKey), sortedMap);
    }
  }
View Full Code Here

          return null;
        }
      }
      SortedMap<Number640, Data> result = backend.remove(from, to, true);
      for (Map.Entry<Number640, Data> entry : result.entrySet()) {
        Data data = entry.getValue();
        if (data.publicKey() == null || data.publicKey().equals(publicKey)) {
          backend.removeTimeout(entry.getKey());
        }
      }
      return result;
    } finally {
View Full Code Here

    DigestInfo digestInfo = new DigestInfo();
    for (Number640 number640 : number640s) {
      KeyLock<Number640>.RefCounterLock lock = dataLock640.lock(number640);
      try {
        if (backend.contains(number640)) {
          Data data = getInternal(number640);
          if (data != null) {
            digestInfo.put(number640, data.basedOnSet());
          }
        }
      } finally {
        lock.unlock();
      }
View Full Code Here

      if (!securityEntryCheck(key.locationAndDomainAndContentKey(), publicKey, newData.publicKey(),
              newData.isProtectedEntry())) {
        return PutStatus.FAILED_SECURITY;
      }

      final Data data = backend.get(key);
      boolean changed = false;
      if (data!=null && newData.publicKey() != null) {
        data.publicKey(newData.publicKey());
        changed = true;
      }
      if (data!=null && newData.isSigned()) {
        data.signature(newData.signature());
        changed = true;
      }
      if (data!=null) {
        data.validFromMillis(newData.validFromMillis());
        data.ttlSeconds(newData.ttlSeconds());
        changed = true;
      }
      if (changed) {
        long expiration = data.expirationMillis();
        // handle timeout
        backend.addTimeout(key, expiration);
        found = backend.put(key, data);
      }
    } finally {
View Full Code Here

      if (!securityEntryCheck(key.locationAndDomainAndContentKey(), publicKey, newData.publicKey(),
          newData.isProtectedEntry())) {
        return PutStatus.FAILED_SECURITY;
      }

      final Data data = backend.get(key);
      if (data != null) {
        // remove prepare flag
        data.prepareFlag(false);

        data.validFromMillis(newData.validFromMillis());
        data.ttlSeconds(newData.ttlSeconds());

        long expiration = data.expirationMillis();
        // handle timeout
        backend.addTimeout(key, expiration);
        found = backend.put(key, data);
      }
    } finally {
View Full Code Here

        Number160 nr1 = new Number160(RND);

        Map<Number160, Data> contentMap = new HashMap<Number160, Data>();
        System.out.println("first we store 1000 items from 0-999 under key " + nr1);
        for (int i = 0; i < nrPeers; i++) {
            contentMap.put(new Number160(i), new Data("data " + i));
        }
        FuturePut futurePut = peers[peer30].put(nr1).dataMapContent(contentMap)
                .domainKey(Number160.createHash("my_domain")).start();
        futurePut.awaitUninterruptibly();
        // store another one
        Number160 nr2 = new Number160(RND);
        contentMap = new HashMap<Number160, Data>();
        System.out.println("then we store 1000 items from 800-1799 under key " + nr2);
        for (int i = range1; i < range2; i++) {
            contentMap.put(new Number160(i), new Data("data " + i));
        }
        futurePut = peers[peer60].put(nr2).dataMapContent(contentMap).domainKey(Number160.createHash("my_domain"))
                .start();
        futurePut.awaitUninterruptibly();
        // digest the first entry
View Full Code Here

        final boolean isSyncFromOldVersion = message.type() == Type.REQUEST_2;
        final KeyMap640Keys keysMap = message.keyMap640Keys(0);
        final Map<Number640, Data> retVal = new HashMap<Number640, Data>();
       
        for (Map.Entry<Number640, Collection<Number160>> entry : keysMap.keysMap().entrySet()) {
            Data data = storageLayer.get(entry.getKey());
            if(entry.getValue().size() != 1) {
              continue;
            }
            if (data != null) {
                // found, check if same
                if (entry.getValue().iterator().next().equals(data.hash())) {
                    retVal.put(entry.getKey(), new Data().flag1());
                    LOG.debug("no sync required");
                } else {
                    // get the checksums
                  // TODO: don't copy data, toBytes does a copy!
                    List<Checksum> checksums = RSync.checksums(data.toBytes(), blockSize);
                    AlternativeCompositeByteBuf abuf = AlternativeCompositeByteBuf.compBuffer();
                    DataBuffer dataBuffer = SyncUtils.encodeChecksum(checksums, entry.getKey().versionKey(), data.hash(), abuf);
                    retVal.put(entry.getKey(), new Data(dataBuffer));
                    LOG.debug("sync required hash = {}", data.hash());
                }
            } else {
              if(isSyncFromOldVersion) {
                //TODO: the client could send us his history to figure out what the latest version in this history is
                Entry<Number640, Data> latest = storageLayer.
                    get(entry.getKey().minVersionKey(), entry.getKey().maxVersionKey(), 1, false).lastEntry();
                // TODO: don't copy data, toBytes does a copy!
                List<Checksum> checksums = RSync.checksums(latest.getValue().toBytes(), blockSize);
                AlternativeCompositeByteBuf abuf = AlternativeCompositeByteBuf.compBuffer();
                    DataBuffer dataBuffer = SyncUtils.encodeChecksum(checksums, latest.getKey().versionKey(),
                        latest.getValue().hash(), abuf);
                    retVal.put(entry.getKey(), new Data(dataBuffer));
                    LOG.debug("sync required for version");
              } else {
                // not found
                retVal.put(entry.getKey(), new Data().flag2());
                LOG.debug("copy required, not found on this peer {}", entry.getKey());
              }
            }
        }
        responseMessage.setDataMap(new DataMap(retVal));
View Full Code Here

TOP

Related Classes of net.tomp2p.storage.Data

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.