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()