2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
11 #include "IAnnouncer.h"
12 #include "threads/CriticalSection.h"
13 #include "threads/Event.h"
14 #include "threads/Thread.h"
15 #include "utils/Variant.h"
24 namespace ANNOUNCEMENT
26 class CAnnouncementManager
: public CThread
29 CAnnouncementManager();
30 ~CAnnouncementManager() override
;
35 void AddAnnouncer(IAnnouncer
*listener
);
36 void RemoveAnnouncer(IAnnouncer
*listener
);
38 void Announce(AnnouncementFlag flag
, const std::string
& message
);
39 void Announce(AnnouncementFlag flag
, const std::string
& message
, const CVariant
& data
);
40 void Announce(AnnouncementFlag flag
,
41 const std::string
& message
,
42 const std::shared_ptr
<const CFileItem
>& item
);
43 void Announce(AnnouncementFlag flag
,
44 const std::string
& message
,
45 const std::shared_ptr
<const CFileItem
>& item
,
46 const CVariant
& data
);
48 void Announce(AnnouncementFlag flag
, const std::string
& sender
, const std::string
& message
);
49 void Announce(AnnouncementFlag flag
,
50 const std::string
& sender
,
51 const std::string
& message
,
52 const CVariant
& data
);
53 void Announce(AnnouncementFlag flag
,
54 const std::string
& sender
,
55 const std::string
& message
,
56 const std::shared_ptr
<const CFileItem
>& item
,
57 const CVariant
& data
);
59 // The sender is not related to the application name.
60 // Also it's part of Kodi's API - changing it will break
61 // a big number of python addons and third party json consumers.
62 static const std::string ANNOUNCEMENT_SENDER
;
65 void Process() override
;
66 void DoAnnounce(AnnouncementFlag flag
,
67 const std::string
& sender
,
68 const std::string
& message
,
69 const std::shared_ptr
<CFileItem
>& item
,
70 const CVariant
& data
);
71 void DoAnnounce(AnnouncementFlag flag
,
72 const std::string
& sender
,
73 const std::string
& message
,
74 const CVariant
& data
);
78 AnnouncementFlag flag
;
81 std::shared_ptr
<CFileItem
> item
;
84 std::list
<CAnnounceData
> m_announcementQueue
;
88 CAnnouncementManager(const CAnnouncementManager
&) = delete;
89 CAnnouncementManager
const& operator=(CAnnouncementManager
const&) = delete;
91 CCriticalSection m_announcersCritSection
;
92 CCriticalSection m_queueCritSection
;
93 std::vector
<IAnnouncer
*> m_announcers
;