&hQi@ddlZddlZddlmZddlmZGddZy)N)Observer)PatternMatchingEventHandlerc0eZdZdZdZdZdZddZdZy) FileSystemWatcherServicez Servizio di backend che monitora il file system per cambiamenti e pubblica eventi sull'Event Bus del Kernel. (Linux Only - case-sensitive filesystem) c^||_|jdg|_t|_y)Nwatches)coregetconfig_watchesrobserver)selfcore_apiconfigs g/mnt/ssd/data/python-lab/Jarvis-Cognitive/services/filesystemwatcherservice/filesystemwatcherservice.py__init__z!FileSystemWatcherService.__init__ s% $jjB7  cD|jd|js|jddy|jD]5}|jd}tjj |s4tjj |jj|}tjj|}tjj|s|jd|d|jddg}|jd d }|jd }|j||}|jj||| |jd |8|jj|jdy)NzAvvio servizio...z=Nessuna cartella da monitorare definita nella configurazione.warningpathz&La cartella da monitorare non esiste: errorpatterns* recursiveFevent_to_publish)rz'Monitoraggio attivato per la cartella: zServizio avviato e operativo.)logr r osrisabsjoinr base_dirnormpathisdircreate_event_handlerr schedulestart)r watch_configrrrr event_handlers rr$zFileSystemWatcherService.startsZ $%"" HHTV_ `  // GL##F+D77==&ww||DII$6$6=77##D)D77==&A$H'R#'' SE:H$((etfE F+ G.  01rc|jd|jjr4|jj|jj |jdy)NzArresto servizio...zServizio fermato.)rr is_alivestopr)r s rr)zFileSystemWatcherService.stop1sL &' == ! ! # MM   MM    $%rcB|jjd||y)Nz [FSWATCHER] )r r)r messagelevels rrzFileSystemWatcherService.log8s WI.6rcNGddt}||j||ddS)z4Factory per creare gestori di eventi personalizzati.c0eZdZfdZdZdZdZxZS)>FileSystemWatcherService.create_event_handler..Handlerc@t|di|||_||_y)N)superrr event_name)r rr3kwargs __class__s rrzGFileSystemWatcherService.create_event_handler..Handler.__init__@s! *6*$ ",rc&|j|yNprocessr events r on_createdzIFileSystemWatcherService.create_event_handler..Handler.on_createdE U#rc&|j|yr7r8r:s r on_modifiedzJFileSystemWatcherService.create_event_handler..Handler.on_modifiedHr=rc|jry|jj|j|j|j |jdy)z9Metodo generico per processare un evento del file system.N) event_typer is_directory)rBr publish_eventr3rAsrc_pathr:s rr9zFFileSystemWatcherService.create_event_handler..Handler.processKsF%% ''"'"2"2!NN$)$6$6:r)__name__ __module__ __qualname__rr<r?r9 __classcell__)r5s@rHandlerr/?s -  $ $ rrIT)rr3rignore_directoriescase_sensitive)rr )r rrrIs rr"z-FileSystemWatcherService.create_event_handler;s1 1 0YY'#   rN)info) rErFrG__doc__rr$r)rr"r1rrrrs! # 2@&7" rr)rtimewatchdog.observersrwatchdog.eventsrrr1rrrQs '7W W r