1/* 2 * Copyright 2002, Marcus Overhagen. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef NOTIFICATION_MANAGER_H 6#define NOTIFICATION_MANAGER_H 7 8 9#include <Locker.h> 10#include <MediaNode.h> 11#include <Messenger.h> 12 13#include "Queue.h" 14#include "TList.h" 15 16 17struct Notification { 18 BMessenger messenger; 19 media_node node; 20 int32 what; 21 team_id team; 22}; 23 24class NotificationManager { 25public: 26 NotificationManager(); 27 ~NotificationManager(); 28 29 void Dump(); 30 31 void EnqueueMessage(BMessage* message); 32 33 void CleanupTeam(team_id team); 34 35private: 36 void RequestNotifications(BMessage* message); 37 void CancelNotifications(BMessage* message); 38 void SendNotifications(BMessage* message); 39 40 void WorkerThread(); 41 static int32 worker_thread(void* arg); 42 43private: 44 Queue fNotificationQueue; 45 thread_id fNotificationThreadId; 46 BLocker fLocker; 47 List<Notification> fNotificationList; 48}; 49 50#endif // NOTIFICATION_MANAGER_H 51