Line data Source code
1 : /*
2 : * Copyright (C) 2004-2024 Savoir-faire Linux Inc.
3 : *
4 : * Author: Guillaume Roguez <Guillaume.Roguez@savoirfairelinux.com>
5 : *
6 : * This program is free software; you can redistribute it and/or modify
7 : * it under the terms of the GNU General Public License as published by
8 : * the Free Software Foundation; either version 3 of the License, or
9 : * (at your option) any later version.
10 : *
11 : * This program is distributed in the hope that it will be useful,
12 : * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 : * GNU General Public License for more details.
15 : *
16 : * You should have received a copy of the GNU General Public License
17 : * along with this program; if not, write to the Free Software
18 : * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 : */
20 :
21 : #include "ring_signal.h"
22 :
23 : namespace jami {
24 :
25 : SignalHandlerMap&
26 25148 : getSignalHandlers()
27 : {
28 : static SignalHandlerMap handlers = {
29 : /* Call */
30 35 : exported_callback<libjami::CallSignal::StateChange>(),
31 72 : exported_callback<libjami::CallSignal::TransferFailed>(),
32 72 : exported_callback<libjami::CallSignal::TransferSucceeded>(),
33 72 : exported_callback<libjami::CallSignal::RecordPlaybackStopped>(),
34 72 : exported_callback<libjami::CallSignal::VoiceMailNotify>(),
35 72 : exported_callback<libjami::CallSignal::IncomingMessage>(),
36 72 : exported_callback<libjami::CallSignal::IncomingCall>(),
37 72 : exported_callback<libjami::CallSignal::IncomingCallWithMedia>(),
38 72 : exported_callback<libjami::CallSignal::MediaChangeRequested>(),
39 72 : exported_callback<libjami::CallSignal::RecordPlaybackFilepath>(),
40 72 : exported_callback<libjami::CallSignal::ConferenceCreated>(),
41 72 : exported_callback<libjami::CallSignal::ConferenceChanged>(),
42 72 : exported_callback<libjami::CallSignal::UpdatePlaybackScale>(),
43 72 : exported_callback<libjami::CallSignal::ConferenceRemoved>(),
44 72 : exported_callback<libjami::CallSignal::RecordingStateChanged>(),
45 72 : exported_callback<libjami::CallSignal::RtcpReportReceived>(),
46 72 : exported_callback<libjami::CallSignal::PeerHold>(),
47 72 : exported_callback<libjami::CallSignal::VideoMuted>(),
48 72 : exported_callback<libjami::CallSignal::AudioMuted>(),
49 72 : exported_callback<libjami::CallSignal::SmartInfo>(),
50 72 : exported_callback<libjami::CallSignal::ConnectionUpdate>(),
51 72 : exported_callback<libjami::CallSignal::OnConferenceInfosUpdated>(),
52 72 : exported_callback<libjami::CallSignal::RemoteRecordingChanged>(),
53 72 : exported_callback<libjami::CallSignal::MediaNegotiationStatus>(),
54 :
55 : /* Configuration */
56 72 : exported_callback<libjami::ConfigurationSignal::VolumeChanged>(),
57 72 : exported_callback<libjami::ConfigurationSignal::AccountsChanged>(),
58 72 : exported_callback<libjami::ConfigurationSignal::AccountDetailsChanged>(),
59 72 : exported_callback<libjami::ConfigurationSignal::StunStatusFailed>(),
60 72 : exported_callback<libjami::ConfigurationSignal::RegistrationStateChanged>(),
61 72 : exported_callback<libjami::ConfigurationSignal::VolatileDetailsChanged>(),
62 72 : exported_callback<libjami::ConfigurationSignal::CertificatePinned>(),
63 72 : exported_callback<libjami::ConfigurationSignal::CertificatePathPinned>(),
64 72 : exported_callback<libjami::ConfigurationSignal::CertificateExpired>(),
65 72 : exported_callback<libjami::ConfigurationSignal::CertificateStateChanged>(),
66 72 : exported_callback<libjami::ConfigurationSignal::IncomingAccountMessage>(),
67 72 : exported_callback<libjami::ConfigurationSignal::ComposingStatusChanged>(),
68 72 : exported_callback<libjami::ConfigurationSignal::AccountMessageStatusChanged>(),
69 72 : exported_callback<libjami::ConfigurationSignal::NeedsHost>(),
70 72 : exported_callback<libjami::ConfigurationSignal::ActiveCallsChanged>(),
71 72 : exported_callback<libjami::ConfigurationSignal::ProfileReceived>(),
72 72 : exported_callback<libjami::ConfigurationSignal::IncomingTrustRequest>(),
73 72 : exported_callback<libjami::ConfigurationSignal::ContactAdded>(),
74 72 : exported_callback<libjami::ConfigurationSignal::ContactRemoved>(),
75 72 : exported_callback<libjami::ConfigurationSignal::ExportOnRingEnded>(),
76 72 : exported_callback<libjami::ConfigurationSignal::KnownDevicesChanged>(),
77 72 : exported_callback<libjami::ConfigurationSignal::NameRegistrationEnded>(),
78 72 : exported_callback<libjami::ConfigurationSignal::RegisteredNameFound>(),
79 72 : exported_callback<libjami::ConfigurationSignal::UserSearchEnded>(),
80 72 : exported_callback<libjami::ConfigurationSignal::MediaParametersChanged>(),
81 72 : exported_callback<libjami::ConfigurationSignal::MigrationEnded>(),
82 72 : exported_callback<libjami::ConfigurationSignal::DeviceRevocationEnded>(),
83 72 : exported_callback<libjami::ConfigurationSignal::AccountProfileReceived>(),
84 72 : exported_callback<libjami::ConfigurationSignal::Error>(),
85 : #if defined(__ANDROID__) || (defined(TARGET_OS_IOS) && TARGET_OS_IOS)
86 : exported_callback<libjami::ConfigurationSignal::GetHardwareAudioFormat>(),
87 : #endif
88 : #if defined(__ANDROID__) || (defined(TARGET_OS_IOS) && TARGET_OS_IOS)
89 : exported_callback<libjami::ConfigurationSignal::GetAppDataPath>(),
90 : exported_callback<libjami::ConfigurationSignal::GetDeviceName>(),
91 : #endif
92 72 : exported_callback<libjami::ConfigurationSignal::HardwareDecodingChanged>(),
93 72 : exported_callback<libjami::ConfigurationSignal::HardwareEncodingChanged>(),
94 72 : exported_callback<libjami::ConfigurationSignal::MessageSend>(),
95 :
96 : /* Presence */
97 72 : exported_callback<libjami::PresenceSignal::NewServerSubscriptionRequest>(),
98 72 : exported_callback<libjami::PresenceSignal::NearbyPeerNotification>(),
99 72 : exported_callback<libjami::PresenceSignal::ServerError>(),
100 72 : exported_callback<libjami::PresenceSignal::NewBuddyNotification>(),
101 72 : exported_callback<libjami::PresenceSignal::SubscriptionStateChanged>(),
102 :
103 : /* Audio */
104 72 : exported_callback<libjami::AudioSignal::DeviceEvent>(),
105 72 : exported_callback<libjami::AudioSignal::AudioMeter>(),
106 :
107 : /* DataTransfer */
108 72 : exported_callback<libjami::DataTransferSignal::DataTransferEvent>(),
109 :
110 : #ifdef ENABLE_VIDEO
111 : /* MediaPlayer */
112 72 : exported_callback<libjami::MediaPlayerSignal::FileOpened>(),
113 :
114 : /* Video */
115 72 : exported_callback<libjami::VideoSignal::DeviceEvent>(),
116 72 : exported_callback<libjami::VideoSignal::DecodingStarted>(),
117 72 : exported_callback<libjami::VideoSignal::DecodingStopped>(),
118 : #ifdef __ANDROID__
119 : exported_callback<libjami::VideoSignal::GetCameraInfo>(),
120 : exported_callback<libjami::VideoSignal::SetParameters>(),
121 : exported_callback<libjami::VideoSignal::RequestKeyFrame>(),
122 : exported_callback<libjami::VideoSignal::SetBitrate>(),
123 : #endif
124 72 : exported_callback<libjami::VideoSignal::StartCapture>(),
125 72 : exported_callback<libjami::VideoSignal::StopCapture>(),
126 72 : exported_callback<libjami::VideoSignal::DeviceAdded>(),
127 72 : exported_callback<libjami::VideoSignal::ParametersChanged>(),
128 : #endif
129 :
130 : /* Conversation */
131 72 : exported_callback<libjami::ConversationSignal::ConversationLoaded>(),
132 72 : exported_callback<libjami::ConversationSignal::SwarmLoaded>(),
133 72 : exported_callback<libjami::ConversationSignal::MessagesFound>(),
134 72 : exported_callback<libjami::ConversationSignal::MessageReceived>(),
135 72 : exported_callback<libjami::ConversationSignal::SwarmMessageReceived>(),
136 72 : exported_callback<libjami::ConversationSignal::SwarmMessageUpdated>(),
137 72 : exported_callback<libjami::ConversationSignal::ReactionAdded>(),
138 72 : exported_callback<libjami::ConversationSignal::ReactionRemoved>(),
139 72 : exported_callback<libjami::ConversationSignal::ConversationProfileUpdated>(),
140 72 : exported_callback<libjami::ConversationSignal::ConversationRequestReceived>(),
141 72 : exported_callback<libjami::ConversationSignal::ConversationRequestDeclined>(),
142 72 : exported_callback<libjami::ConversationSignal::ConversationReady>(),
143 72 : exported_callback<libjami::ConversationSignal::ConversationRemoved>(),
144 72 : exported_callback<libjami::ConversationSignal::ConversationMemberEvent>(),
145 72 : exported_callback<libjami::ConversationSignal::ConversationSyncFinished>(),
146 72 : exported_callback<libjami::ConversationSignal::ConversationCloned>(),
147 72 : exported_callback<libjami::ConversationSignal::CallConnectionRequest>(),
148 72 : exported_callback<libjami::ConversationSignal::OnConversationError>(),
149 72 : exported_callback<libjami::ConversationSignal::ConversationPreferencesUpdated>(),
150 :
151 : #ifdef ENABLE_PLUGIN
152 72 : exported_callback<libjami::PluginSignal::WebViewMessageReceived>(),
153 : #endif
154 31736 : };
155 :
156 25147 : return handlers;
157 : }
158 :
159 : }; // namespace jami
160 :
161 : namespace libjami {
162 :
163 : void
164 651 : registerSignalHandlers(const std::map<std::string, std::shared_ptr<CallbackWrapperBase>>& handlers)
165 : {
166 651 : auto& handlers_ = jami::getSignalHandlers();
167 2632 : for (auto& item : handlers) {
168 1981 : auto iter = handlers_.find(item.first);
169 1981 : if (iter == handlers_.end()) {
170 0 : JAMI_ERR("Signal %s not supported", item.first.c_str());
171 0 : continue;
172 : }
173 1981 : iter->second = item.second;
174 : }
175 651 : }
176 :
177 : void
178 704 : unregisterSignalHandlers()
179 : {
180 704 : auto& handlers_ = jami::getSignalHandlers();
181 65472 : for (auto& item : handlers_) {
182 64768 : item.second = {};
183 : }
184 704 : }
185 :
186 : } // namespace libjami
|