LCOV - code coverage report
Current view: top level - foo/src/client - ring_signal.cpp (source / functions) Hit Total Coverage
Test: jami-coverage-filtered.info Lines: 108 110 98.2 %
Date: 2025-10-16 08:11:43 Functions: 3 3 100.0 %

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

Generated by: LCOV version 1.14