Merge branch 'devel' of dev.sourcefabric.org:airtime into devel

This commit is contained in:
james 2011-06-28 12:48:15 -04:00
commit 99029e4772
2 changed files with 19 additions and 7 deletions

View File

@ -15,9 +15,15 @@ from airtimefilemonitor.airtimeprocessevent import AirtimeProcessEvent
from airtimefilemonitor.mediaconfig import AirtimeMediaConfig from airtimefilemonitor.mediaconfig import AirtimeMediaConfig
def handleSigTERM(signum, frame): def handleSigTERM(signum, frame):
logger = logging.getLogger()
logger.info("Main Process Shutdown, TERM signal caught. %d") logger.info("Main Process Shutdown, TERM signal caught. %d")
if p is not None: for p in processes:
p.terminate() p.terminate()
logger.info("Killed process. %d", p.pid)
notifier_daemon_pid = open('/var/run/airtime-notifier.pid', 'r').read()
os.kill(int(notifier_daemon_pid), 9)
logger.info("Killed process. %d", int(notifier_daemon_pid))
sys.exit(0) sys.exit(0)
@ -30,7 +36,7 @@ except Exception, e:
sys.exit() sys.exit()
logger = logging.getLogger() logger = logging.getLogger()
p = None processes = []
try: try:
config = AirtimeMediaConfig() config = AirtimeMediaConfig()
@ -43,7 +49,7 @@ try:
#create 5 worker processes #create 5 worker processes
for i in range(5): for i in range(5):
p = Process(target=notifier.process_file_events, args=(pe.multi_queue,)) p = Process(target=notifier.process_file_events, args=(pe.multi_queue,))
p.daemon = True processes.append(p)
p.start() p.start()
signal.signal(signal.SIGTERM, handleSigTERM) signal.signal(signal.SIGTERM, handleSigTERM)

View File

@ -31,6 +31,7 @@ class AirtimeProcessEvent(ProcessEvent):
self.supported_file_formats = ['mp3', 'ogg'] self.supported_file_formats = ['mp3', 'ogg']
self.temp_files = {} self.temp_files = {}
self.moved_files = {} self.moved_files = {}
self.gui_replaced = {}
self.renamed_files = {} self.renamed_files = {}
self.file_events = [] self.file_events = []
self.multi_queue = mpQueue() self.multi_queue = mpQueue()
@ -222,16 +223,18 @@ class AirtimeProcessEvent(ProcessEvent):
def process_IN_MODIFY(self, event): def process_IN_MODIFY(self, event):
if not event.dir: if not event.dir:
#self.logger.info("%s: %s", event.maskname, event.pathname) self.logger.info("%s: %s", event.maskname, event.pathname)
if event.pathname in self.renamed_files: if event.pathname in self.renamed_files:
pass pass
elif self.is_audio_file(event.name): elif self.is_audio_file(event.name):
self.file_events.append({'filepath': event.pathname, 'mode': self.config.MODE_MODIFY}) self.file_events.append({'filepath': event.pathname, 'mode': self.config.MODE_MODIFY})
def process_IN_MOVED_FROM(self, event): def process_IN_MOVED_FROM(self, event):
#self.logger.info("%s: %s", event.maskname, event.pathname) self.logger.info("%s: %s", event.maskname, event.pathname)
if not event.dir: if not event.dir:
if event.pathname in self.temp_files: if "goutputstream" in event.pathname:
self.gui_replaced[event.cookie] = None
elif event.pathname in self.temp_files:
del self.temp_files[event.pathname] del self.temp_files[event.pathname]
self.temp_files[event.cookie] = event.pathname self.temp_files[event.cookie] = event.pathname
elif event.pathname in self.renamed_files: elif event.pathname in self.renamed_files:
@ -240,13 +243,16 @@ class AirtimeProcessEvent(ProcessEvent):
self.moved_files[event.cookie] = event.pathname self.moved_files[event.cookie] = event.pathname
def process_IN_MOVED_TO(self, event): def process_IN_MOVED_TO(self, event):
#self.logger.info("%s: %s", event.maskname, event.pathname) self.logger.info("%s: %s", event.maskname, event.pathname)
#if stuff dropped in stor via a UI move must change file permissions. #if stuff dropped in stor via a UI move must change file permissions.
self.set_needed_file_permissions(event.pathname, event.dir) self.set_needed_file_permissions(event.pathname, event.dir)
if not event.dir: if not event.dir:
if event.cookie in self.temp_files: if event.cookie in self.temp_files:
del self.temp_files[event.cookie] del self.temp_files[event.cookie]
self.file_events.append({'filepath': event.pathname, 'mode': self.config.MODE_MODIFY}) self.file_events.append({'filepath': event.pathname, 'mode': self.config.MODE_MODIFY})
elif event.cookie in self.gui_replaced:
del self.gui_replaced[event.cookie]
self.file_events.append({'filepath': event.pathname, 'mode': self.config.MODE_MODIFY})
elif event.cookie in self.moved_files: elif event.cookie in self.moved_files:
old_filepath = self.moved_files[event.cookie] old_filepath = self.moved_files[event.cookie]
del self.moved_files[event.cookie] del self.moved_files[event.cookie]