Example #1
0
 def __init__(self, address, data_dir, capacity, pyro_uri, ntp_server=None):
     """
     Inicializa una instancia de un servidor TagFS compartido en la red.
     
     @type address: C{str}
     @param address: Dirección IP de la interfaz donde debe escuchar esta
        instancia del servidor de TagFS.        
     
     @type data_dir: C{str}
     @param data_dir: Ruta absoluta al directorio utilizado para almacenar
         los archivos y otros datos relacionados con el funcionamiento
         del servidor.
         
     @type capacity: C{int}
     @param capacity: Capacidad de almacenamiento en bytes de este servidor.
         TagFS garantizará que la capacidad utilizada por todos los
         archivos almacenados en este servidor no sobrepasará esta
         capacidad.
         
     @type pyro_uri: C{str}
     @param pyro_uri: URI de PyRO correspondiente a este servidor.
     
     @type ntp_server: C{str}
     @para ntp_server: Host del servidor NTP que se utilizará para obtener
         el tiempo durante el proceso de sincronización de los servidores.
     """
     self._address = address
     self._data_dir = data_dir
     if not os.path.isdir(self._data_dir):
         os.mkdir(self._data_dir)
     self._pyro_uri = pyro_uri
     self._init_index()
     self._init_files()
     self._init_status(capacity)
     self._init_autodiscovery()
     self._mrsw_lock = sync.mrsw()
     # Keep this last! This requires the index, locks, etc.
     self._sync_thread = threading.Thread(target=self._sync_servers)
     self._sync_thread.start()
     # TODO Change to use an NTP or local.
     if ntp_server:
         self._time_provider = NTPTimeProvider(ntp_server)
     else:
         self._time_provider = LocalTimeProvider()