/** * @param interest the {@link Interest} to check * @return true if the {@link Interest} has no child selector */ private static boolean hasNoChildSelector(Interest interest) { return interest.getChildSelector() < 0; }
private static boolean isRightMost(Interest interest) { return interest.getChildSelector() == Interest.CHILD_SELECTOR_RIGHT; }
private static boolean isLeftMost(Interest interest) { return interest.getChildSelector() == Interest.CHILD_SELECTOR_LEFT; }
private static boolean isAttributesRequest(Name name, Interest interest) { return name.equals(interest.getName()) && interest.getChildSelector() == -1; }
private static boolean hasSelectors(Interest interest) { return interest.getChildSelector() != -1 || interest.getExclude().size() > 0; }
@Override public boolean has(Interest interest) { if (interest.getChildSelector() != -1) { for (Name name : table.keySet()) { // TODO this logic must be more complex; must match selectors as well if (interest.matchesName(name)) { return true; } } return false; } else { return has(interest.getName()); } }
/** * {@inheritDoc} */ @Override public void onInterest(Name prefix, Interest interest, Face face, long interestFilterId, InterestFilter filter) { logger.finer("Serving packet for: " + interest.toUri()); if (interest.getChildSelector() == -1) { try { interest.getName().get(-1).toSegment(); } catch (EncodingException e) { interest.setChildSelector(Interest.CHILD_SELECTOR_LEFT); } } try { Data data = repository.get(interest); data = processPipeline(data); face.putData(data); } catch (Exception e) { logger.log(Level.FINE, "Failed to find data satisfying: " + interest.toUri(), e); } }
if (interest.getChildSelector() == Interest.CHILD_SELECTOR_LEFT) {