def _fetchNextSegment(self, originalInterest, dataName, segment): # Start with the original Interest to preserve any special selectors. interest = Interest(originalInterest) # 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)) self._face.expressInterest(interest, self._onData, self._onTimeout)
def _fetchFirstSegment(self, baseInterest): interest = Interest(baseInterest) interest.setChildSelector(1) interest.setMustBeFresh(True) self._face.expressInterest(interest, self._onData, self._onTimeout)
def expressInterest( self, interestOrName, arg2, arg3 = None, arg4 = None, arg5 = None): """ Send the Interest through the transport, read the entire response and call onData(interest, data). There are two forms of expressInterest. The first form takes the exact interest (including lifetime): expressInterest(interest, onData [, onTimeout] [, wireFormat]). The second form creates the interest from a name and optional interest template: expressInterest(name [, interestTemplate], onData [, onTimeout] [, wireFormat]). :param Interest interest: The Interest (if the first form is used). This copies the Interest. :param Name name: A name for the Interest (if the second form is used). :param Interest interestTemplate: (optional) if not None, copy interest selectors from the template (if the second form is used). If omitted, use a default interest lifetime. :param onData: When a matching data packet is received, this calls onData(interest, data) where interest is the interest given to expressInterest and data is the received Data object. NOTE: You must not change the interest object - if you need to change it then make a copy. :type onData: function object :param onTimeout: (optional) If the interest times out according to the interest lifetime, this calls onTimeout(interest) where interest is the interest given to expressInterest. However, if onTimeout is None or omitted, this does not use it. :type onTimeout: function object :param wireFormat: (optional) A WireFormat object used to encode the message. If omitted, use WireFormat.getDefaultWireFormat(). :type wireFormat: A subclass of WireFormat :return: The pending interest ID which can be used with removePendingInterest. :rtype: int """ # expressInterest(interest, onData) # expressInterest(interest, onData, wireFormat) # expressInterest(interest, onData, onTimeout) # expressInterest(interest, onData, onTimeout, wireFormat) if type(interestOrName) is Interest: # Node.expressInterest requires a copy of the interest. interest = Interest(interestOrName) onData = arg2 if isinstance(arg3, WireFormat): onTimeout = None wireFormat = arg3 else: onTimeout = arg3 wireFormat = arg4 else: # The first argument is a name. Make the interest from the name and # possible template. interest = Interest(interestOrName) # expressInterest(name, interestTemplate, onData) # expressInterest(name, interestTemplate, onData, wireFormat) # expressInterest(name, interestTemplate, onData, onTimeout) # expressInterest(name, interestTemplate, onData, onTimeout, wireFormat) if type(arg2) is Interest: template = arg2 interest.setMinSuffixComponents(template.getMinSuffixComponents()) interest.setMaxSuffixComponents(template.getMaxSuffixComponents()) interest.setKeyLocator(template.getKeyLocator()) interest.setExclude(template.getExclude()) interest.setChildSelector(template.getChildSelector()) interest.setMustBeFresh(template.getMustBeFresh()) interest.setScope(template.getScope()) interest.setInterestLifetimeMilliseconds( template.getInterestLifetimeMilliseconds()) # Don't copy the nonce. onData = arg3 if isinstance(arg4, WireFormat): onTimeout = None wireFormat = arg4 else: onTimeout = arg4 wireFormat = arg5 # expressInterest(name, onData) # expressInterest(name, onData, wireFormat) # expressInterest(name, onData, onTimeout) # expressInterest(name, onData, onTimeout, wireFormat) else: # Set a default interest lifetime. interest.setInterestLifetimeMilliseconds(4000.0) onData = arg2 if isinstance(arg3, WireFormat): onTimeout = None wireFormat = arg3 else: onTimeout = arg3 wireFormat = arg4 if wireFormat == None: # Don't use a default argument since getDefaultWireFormat can change. wireFormat = WireFormat.getDefaultWireFormat() return self._node.expressInterest( interest, onData, onTimeout, wireFormat)