Skip to content
Snippets Groups Projects
dmFileSystemEventHandler.py 2.43 KiB
Newer Older
#!/usr/bin/env python

import os

from watchdog.events import FileSystemEventHandler

from dm.common.utility.loggingManager import LoggingManager

class DmFileSystemEventHandler(FileSystemEventHandler):

    def __init__(self, fileSystemObserver, daqPath, experiment):
        FileSystemEventHandler.__init__(self)
        self.logger = LoggingManager.getInstance().getLogger(self.__class__.__name__)
        self.fileSystemObserver = fileSystemObserver
        self.daqPath = daqPath
        self.experiment = experiment

    def dispatch(self, event):
        FileSystemEventHandler.dispatch(self, event)

    def on_any_event(self, event):
        FileSystemEventHandler.on_any_event(self, event)

    def on_created(self, event):
        FileSystemEventHandler.on_created(self, event)

    def on_deleted(self, event):
        FileSystemEventHandler.on_deleted(self, event)

    def on_modified(self, event):
        FileSystemEventHandler.on_modified(self, event)
        self.logger.debug('File system modified event: %s' % (event.__dict__))
        if not event.is_directory:
            self.fileSystemObserver.observedFileUpdated(filePath, self.daqPath, self.experiment)
        
    def on_moved(self, event):
        FileSystemEventHandler.on_moved(self, event)

####################################################################
# Testing

if __name__ == '__main__':
    import sys
    import time
    import logging
    from watchdog.observers import Observer
    from watchdog.observers.polling import PollingObserver
    from watchdog.observers.api import ObservedWatch
    from watchdog.observers.api import EventQueue
    from watchdog.observers.api import EventEmitter
    from watchdog.events import LoggingEventHandler
    logging.basicConfig(level=logging.INFO,
                        format='%(asctime)s - %(message)s',
                        datefmt='%Y-%m-%d %H:%M:%S')
    path = sys.argv[1] if len(sys.argv) > 1 else '.'
    eventHandler = DmFileSystemEventHandler()

    observer = PollingObserver()
    observedWatch = observer.schedule(eventHandler, path, recursive=True)
    print 'OBSERVED WATCH: ', observedWatch

    #observer.add_handler_for_watch(eventHandler2, observedWatch)
    #observer._clear_emitters()
    print observer.emitters

    observer.start()
    try:
        while True:
            time.sleep(1)
            print time.time()
    except KeyboardInterrupt:
        observer.stop()
    observer.join()