def __init__(self, dir, communicator, getUsedFiles=as_dictionary, ctx=None, worker_wait=60, worker_count=1, worker_batch=10): """ Intialise the instance variables. """ self.log = logging.getLogger("fsclient." + __name__) self.communicator = communicator self.master = None #: Reference back to FSServer. self.serverProxy = None self.selfProxy = None self.dropBoxDir = dir self.host = "" self.port = 0 self.dirImportWait = 0 self.throttleImport = 5 self.timeToLive = 0 self.timeToIdle = 0 self.readers = "" self.importArgs = "" #: Id self.id = '' # Overriding methods to allow for simpler testing self.getUsedFiles = perf(getUsedFiles) # Threading primitives self.worker_wait = worker_wait self.worker_count = worker_count self.worker_batch = worker_batch self.event = get_event() self.queue = Queue.Queue(0) self.state = MonitorState(self.event) self.resources = Resources(stop_event=self.event) if ctx: # Primarily used for testing self.ctx = ctx else: self.ctx = ServerContext( server_id="DropBox", communicator=communicator, stop_event=self.event) self.resources.add(self.ctx) self.workers = [ MonitorWorker( worker_wait, worker_batch, self.event, self.queue, self.callback) for x in range(worker_count)] for worker in self.workers: worker.start() self.eventRecord("Directory", self.dropBoxDir)