]> git.mxchange.org Git - quix0rs-apt-p2p.git/blobdiff - apt_dht/apt_dht_conf.py
Rename project to apt-p2p.
[quix0rs-apt-p2p.git] / apt_dht / apt_dht_conf.py
index 3fad6259f43cb55fc5367d68d31b7936ea017a6a..aaf20133aec6794c35d43f045047c4ec9cc7dccc 100644 (file)
@@ -1,23 +1,38 @@
 
+"""Loading of configuration files and parameters.
+
+@type version: L{twisted.python.versions.Version}
+@var version: the version of this program
+@type DEFAULT_CONFIG_FILES: C{list} of C{string}
+@var DEFAULT_CONFIG_FILES: the default config files to load (in order)
+@var DEFAULTS: the default config parameter values for the main program
+@var DHT_DEFAULTS: the default config parameter values for the default DHT
+
+"""
+
 import os, sys
 from ConfigParser import SafeConfigParser
 
 from twisted.python import log, versions
 
 class ConfigError(Exception):
+    """Errors that occur in the loading of configuration variables."""
     def __init__(self, message):
         self.message = message
     def __str__(self):
         return repr(self.message)
 
-version = versions.Version('apt-dht', 0, 0, 0)
+version = versions.Version('apt-p2p', 0, 0, 0)
+
+# Set the home parameter
 home = os.path.expandvars('${HOME}')
 if home == '${HOME}' or not os.path.isdir(home):
     home = os.path.expanduser('~')
     if not os.path.isdir(home):
         home = os.path.abspath(os.path.dirname(sys.argv[0]))
-DEFAULT_CONFIG_FILES=['/etc/apt-dht/apt-dht.conf',
-                      home + '/.apt-dht/apt-dht.conf']
+
+DEFAULT_CONFIG_FILES=['/etc/apt-p2p/apt-p2p.conf',
+                      home + '/.apt-p2p/apt-p2p.conf']
 
 DEFAULTS = {
 
@@ -25,7 +40,7 @@ DEFAULTS = {
     'PORT': '9977',
     
     # Directory to store the downloaded files in
-    'CACHE_DIR': home + '/.apt-dht/cache',
+    'CACHE_DIR': home + '/.apt-p2p/cache',
     
     # Other directories containing packages to share with others
     # WARNING: all files in these directories will be hashed and available
@@ -50,7 +65,7 @@ DEFAULTS = {
     # Which DHT implementation to use.
     # It must be possile to do "from <DHT>.DHT import DHT" to get a class that
     # implements the IDHT interface.
-    'DHT': 'apt_dht_Khashmir',
+    'DHT': 'apt_p2p_Khashmir',
 
     # Whether to only run the DHT (for providing only a bootstrap node)
     'DHT-ONLY': 'no',
@@ -80,6 +95,14 @@ DHT_DEFAULTS = {
     # how many hosts to post to
     'STORE_REDUNDANCY': '3',
     
+    # How many values to attempt to retrieve from the DHT.
+    # Setting this to 0 will try and get all values (which could take a while if
+    # a lot of nodes have values). Setting it negative will try to get that
+    # number of results from only the closest STORE_REDUNDANCY nodes to the hash.
+    # The default is a large negative number so all values from the closest
+    # STORE_REDUNDANCY nodes will be retrieved.
+    'RETRIEVE_VALUES': '-10000',
+
     ###  ROUTING TABLE STUFF
     # how many times in a row a node can fail to respond before it's booted from the routing table
     'MAX_FAILURES': '3',
@@ -97,10 +120,13 @@ DHT_DEFAULTS = {
     'SPEW': 'yes',
 }
 
-class AptDHTConfigParser(SafeConfigParser):
-    """
-    Adds 'gettime' to ConfigParser to interpret the suffixes.
+class AptP2PConfigParser(SafeConfigParser):
+    """Adds 'gettime' and 'getstringlist' to ConfigParser objects.
+    
+    @ivar time_multipliers: the 'gettime' suffixes and the multipliers needed
+        to convert them to seconds
     """
+    
     time_multipliers={
         's': 1,    #seconds
         'm': 60,   #minutes
@@ -109,6 +135,7 @@ class AptDHTConfigParser(SafeConfigParser):
         }
 
     def gettime(self, section, option):
+        """Read the config parameter as a time value."""
         mult = 1
         value = self.get(section, option)
         if len(value) == 0:
@@ -118,14 +145,21 @@ class AptDHTConfigParser(SafeConfigParser):
             mult = self.time_multipliers[suffix]
             value = value[:-1]
         return int(value)*mult
+    
     def getstring(self, section, option):
+        """Read the config parameter as a string."""
         return self.get(section,option)
+    
     def getstringlist(self, section, option):
+        """Read the multi-line config parameter as a list of strings."""
         return self.get(section,option).split()
+
     def optionxform(self, option):
+        """Use all uppercase in the config parameters names."""
         return option.upper()
 
-config = AptDHTConfigParser(DEFAULTS)
+# Initialize the default config parameters
+config = AptP2PConfigParser(DEFAULTS)
 config.add_section(config.get('DEFAULT', 'DHT'))
 for k in DHT_DEFAULTS:
     config.set(config.get('DEFAULT', 'DHT'), k, DHT_DEFAULTS[k])