public void expressHintInterest(Name.Component excludeComp = null) { Name hintName = new Name(prefix); hintName.append(this.getStartTimeComponent()).append(producerNameComponents.trackHint); Interest hintInterest = new Interest(hintName); if (excludeComp != null) { Exclude exclude = new Exclude(); exclude.appendAny(); // Debug.Log (" excluding hint num " + excludeComp.toNumber ()); exclude.appendComponent(excludeComp); hintInterest.setExclude(exclude); } hintInterest.setMustBeFresh(true); hintInterest.setInterestLifetimeMilliseconds(config.defaultHintLifetime); hintInterest.setChildSelector(1); HintHandler handler = new HintHandler(this); FaceSingleton.getFace().expressInterest(hintInterest, handler, handler); }
public void startOptConsumer() { Interest initialInterest = new Interest(new Name(optPrefix)); initialInterest.setMustBeFresh(true); initialInterest.setInterestLifetimeMilliseconds(defaultInitialLifetime); // for initial interest, the rightMostChild is preferred initialInterest.setChildSelector(1); face_.expressInterest(initialInterest, initialHandler_, initialHandler_); }
onContentSet (Namespace nameSpace, Namespace contentNamespace, long callbackId) { if (!(contentNamespace.getName().size() >= namespace_.getName().size() + 1 && contentNamespace.getName()[namespace_.getName().size()].isSegment())) { // Not a segment, ignore. return; } // TODO: Use the Namespace mechanism to validate the Data packet. var metaInfo = contentNamespace.getData().getMetaInfo(); if (metaInfo.getFinalBlockId().getValue().size() > 0 && metaInfo.getFinalBlockId().isSegment()) { finalSegmentNumber_ = metaInfo.getFinalBlockId().toSegment(); } // Report as many segments as possible where the node already has content. while (true) { var nextSegmentNumber = maxRetrievedSegmentNumber_ + 1; var nextSegment = debugGetRightmostLeaf (namespace_[Name.Component.fromSegment(nextSegmentNumber)]); if (nextSegment.getContent() == null) { break; } maxRetrievedSegmentNumber_ = nextSegmentNumber; fireOnSegment(nextSegment); if (finalSegmentNumber_ >= 0 && nextSegmentNumber == finalSegmentNumber_) { // Finished. fireOnSegment(null); return; } } if (finalSegmentNumber_ < 0 && !didRequestFinalSegment_) { didRequestFinalSegment_ = true; // Try to determine the final segment now. var interestTemplate = new Interest(); interestTemplate.setInterestLifetimeMilliseconds(4000.0); interestTemplate.setChildSelector(1); namespace_.expressInterest(interestTemplate); } requestNewSegments(interestPipelineSize_); }
void expressInitialInterest() { Debug.Log("expressInitialInterest: start"); Interest initialInterest = new Interest(this.prefix); initialInterest.setMustBeFresh(true); initialInterest.setInterestLifetimeMilliseconds(config.defaultInitialLifetime); // for initial interest, the rightMostChild is preferred initialInterest.setChildSelector(1); InitialDataHandler handler = new InitialDataHandler(this); Debug.Log("expressInitialInterest: " + initialInterest.toUri()); this.face.expressInterest(initialInterest, handler, handler); }
private void fetchFirstSegment(Interest baseInterest) { Interest interest = new Interest(baseInterest); interest.setChildSelector(1); interest.setMustBeFresh(true); try { face_.expressInterest(interest, this, this); } catch (IOException ex) { try { onError_.onError(net.named_data.jndn.util.SegmentFetcher.ErrorCode.IO_ERROR, "I/O error fetching the first segment " + ex); } catch (Exception exception) { logger_.log(ILOG.J2CsMapping.Util.Logging.Level.SEVERE, "Error in onError", exception); } } }
private void fetchNextSegment(Interest originalInterest_0, Name dataName, long segment) { // Start with the original Interest to preserve any special selectors. Interest interest = new Interest(originalInterest_0); // Changing a field clears the nonce so that the library will generate a new one. interest.setChildSelector(0); interest.setMustBeFresh(false); interest.setName(dataName.getPrefix(-1).appendSegment(segment)); try { face_.expressInterest(interest, this, this); } catch (IOException ex) { try { onError_.onError(net.named_data.jndn.util.SegmentFetcher.ErrorCode.IO_ERROR, "I/O error fetching the next segment " + ex); } catch (Exception exception) { logger_.log(ILOG.J2CsMapping.Util.Logging.Level.SEVERE, "Error in onError", exception); } } }
//fetchTrack public void expressInterestForTrack(string trackID, Name.Component excludeComp = null) { Name trackName = new Name(prefix); trackName.append(startTimeComponent).append(producerNameComponents.tracks).append(trackID); //.append ("0"); Interest trackInterest = new Interest(trackName); if (excludeComp != null) { Exclude exclude = new Exclude(); exclude.appendAny(); exclude.appendComponent(excludeComp); trackInterest.setExclude(exclude); } trackInterest.setMustBeFresh(true); trackInterest.setChildSelector(1); TrackHandler handler = new TrackHandler(this); FaceSingleton.getFace().expressInterest(trackInterest, handler, handler); }
static void Main(string[] args) { var interest = new Interest(); interest.wireDecode(new Blob(TlvInterest)); Console.Out.WriteLine("Interest:"); dumpInterest(interest); // Set the name again to clear the cached encoding so we encode again. interest.setName(interest.getName()); var encoding = interest.wireEncode(); Console.Out.WriteLine(""); Console.Out.WriteLine("Re-encoded interest " + encoding.toHex()); var reDecodedInterest = new Interest(); reDecodedInterest.wireDecode(encoding); Console.Out.WriteLine(""); Console.Out.WriteLine("Re-decoded Interest:"); dumpInterest(reDecodedInterest); var freshInterest = new Interest(new Name("/ndn/abc")); freshInterest.setMinSuffixComponents(4); freshInterest.setMaxSuffixComponents(6); freshInterest.setInterestLifetimeMilliseconds(30000); freshInterest.setChildSelector(1); freshInterest.setMustBeFresh(true); freshInterest.getKeyLocator().setType(KeyLocatorType.KEY_LOCATOR_DIGEST); freshInterest.getKeyLocator().setKeyData (new Blob(new byte[] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F })); freshInterest.getExclude().appendComponent(new Name("abc").get(0)).appendAny(); var identityStorage = new MemoryIdentityStorage(); var privateKeyStorage = new MemoryPrivateKeyStorage(); var keyChain = new KeyChain (new IdentityManager(identityStorage, privateKeyStorage), new SelfVerifyPolicyManager(identityStorage)); // Initialize the storage. var keyName = new Name("/testname/DSK-123"); var certificateName = keyName.getSubName(0, keyName.size() - 1).append ("KEY").append(keyName.get(-1)).append("ID-CERT").append("0"); identityStorage.addKey(keyName, KeyType.RSA, new Blob(DEFAULT_RSA_PUBLIC_KEY_DER)); privateKeyStorage.setKeyPairForKeyName (keyName, KeyType.RSA, new ByteBuffer(DEFAULT_RSA_PUBLIC_KEY_DER), new ByteBuffer(DEFAULT_RSA_PRIVATE_KEY_DER)); // Make a Face just so that we can sign the interest. var face = new Face("localhost"); face.setCommandSigningInfo(keyChain, certificateName); face.makeCommandInterest(freshInterest); Interest reDecodedFreshInterest = new Interest(); reDecodedFreshInterest.wireDecode(freshInterest.wireEncode()); Console.Out.WriteLine(""); Console.Out.WriteLine("Re-decoded fresh Interest:"); dumpInterest(reDecodedFreshInterest); VerifyCallbacks callbacks = new VerifyCallbacks("Freshly-signed Interest"); keyChain.verifyInterest(reDecodedFreshInterest, callbacks, callbacks); }