package org.torproject.jtor.directory; import java.util.Collection; import java.util.List; import java.util.Set; import org.torproject.jtor.data.HexDigest; import org.torproject.jtor.events.EventHandler; /** * * Main interface for accessing directory information and interacting * with directory authorities and caches. * */ public interface Directory { boolean haveMinimumRouterInfo(); void loadFromStore(); void storeCertificates(); void storeConsensus(); void storeDescriptors(); Collection<DirectoryServer> getDirectoryAuthorities(); DirectoryServer getRandomDirectoryAuthority(); Router getRandomDirectoryServer(); void addCertificate(KeyCertificate certificate); Set<HexDigest> getRequiredCertificates(); void addRouterDescriptor(RouterDescriptor router); void addConsensusDocument(ConsensusDocument consensus); ConsensusDocument getCurrentConsensusDocument(); void registerConsensusChangedHandler(EventHandler handler); void unregisterConsensusChangedHandler(EventHandler handler); KeyCertificate findCertificate(HexDigest authorityFingerprint); Router getRouterByName(String name); List<Router> getRouterListByNames(List<String> names); List<Router> getRoutersWithDownloadableDescriptors(); List<Router> getAllRouters(); void markDescriptorInvalid(RouterDescriptor descriptor); }