11299bfb2Sbeveloper /* 21299bfb2Sbeveloper * Copyright 2002, Marcus Overhagen. All rights reserved. 31299bfb2Sbeveloper * Distributed under the terms of the MIT License. 41299bfb2Sbeveloper */ 51d616657Sbeveloper 6e66fda40Sbeveloper #include <MediaNode.h> 7e66fda40Sbeveloper #include "TList.h" 8e66fda40Sbeveloper 91d616657Sbeveloper class Queue; 101d616657Sbeveloper 11e66fda40Sbeveloper struct Notification 12e66fda40Sbeveloper { 13e66fda40Sbeveloper BMessenger messenger; 14e66fda40Sbeveloper media_node node; 15e66fda40Sbeveloper int32 what; 16e66fda40Sbeveloper team_id team; 17e66fda40Sbeveloper }; 18e66fda40Sbeveloper 191d616657Sbeveloper class NotificationManager 201d616657Sbeveloper { 211d616657Sbeveloper public: 221d616657Sbeveloper NotificationManager(); 231d616657Sbeveloper ~NotificationManager(); 241d616657Sbeveloper 25*ced4130fSbeveloper void Dump(); 26*ced4130fSbeveloper 271d616657Sbeveloper void EnqueueMessage(BMessage *msg); 281d616657Sbeveloper 291d616657Sbeveloper void CleanupTeam(team_id team); 301d616657Sbeveloper 311d616657Sbeveloper private: 321d616657Sbeveloper void RequestNotifications(BMessage *msg); 331d616657Sbeveloper void CancelNotifications(BMessage *msg); 341d616657Sbeveloper void SendNotifications(BMessage *msg); 351d616657Sbeveloper 361d616657Sbeveloper void WorkerThread(); 371d616657Sbeveloper static int32 worker_thread(void *arg); 381d616657Sbeveloper 391d616657Sbeveloper private: 401d616657Sbeveloper Queue * fNotificationQueue; 411d616657Sbeveloper thread_id fNotificationThreadId; 421d616657Sbeveloper BLocker * fLocker; 43e66fda40Sbeveloper List<Notification> *fNotificationList; 441d616657Sbeveloper }; 45