LCOV - code coverage report
Current view: top level - src/client - jami_signal.cpp (source / functions) Coverage Total Hit
Test: jami-coverage-filtered.info Lines: 96.4 % 111 107
Test Date: 2026-06-13 09:18:46 Functions: 60.0 % 5 3

            Line data    Source code
       1              : /*
       2              :  *  Copyright (C) 2004-2026 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 "jami_signal.h"
      19              : 
      20              : namespace jami {
      21              : 
      22              : SignalHandlerMap&
      23        32422 : getSignalHandlers()
      24              : {
      25              :     static SignalHandlerMap handlers = {
      26              :         /* Call */
      27            0 :         exported_callback<libjami::CallSignal::StateChange>(),
      28           38 :         exported_callback<libjami::CallSignal::TransferFailed>(),
      29           38 :         exported_callback<libjami::CallSignal::TransferSucceeded>(),
      30           38 :         exported_callback<libjami::CallSignal::RecordPlaybackStopped>(),
      31           38 :         exported_callback<libjami::CallSignal::VoiceMailNotify>(),
      32           38 :         exported_callback<libjami::CallSignal::IncomingMessage>(),
      33           38 :         exported_callback<libjami::CallSignal::IncomingCall>(),
      34           38 :         exported_callback<libjami::CallSignal::MediaChangeRequested>(),
      35           38 :         exported_callback<libjami::CallSignal::RecordPlaybackFilepath>(),
      36           38 :         exported_callback<libjami::CallSignal::ConferenceCreated>(),
      37           38 :         exported_callback<libjami::CallSignal::ConferenceChanged>(),
      38           38 :         exported_callback<libjami::CallSignal::UpdatePlaybackScale>(),
      39           38 :         exported_callback<libjami::CallSignal::ConferenceRemoved>(),
      40           38 :         exported_callback<libjami::CallSignal::RecordingStateChanged>(),
      41           38 :         exported_callback<libjami::CallSignal::RtcpReportReceived>(),
      42           38 :         exported_callback<libjami::CallSignal::PeerHold>(),
      43           38 :         exported_callback<libjami::CallSignal::VideoMuted>(),
      44           38 :         exported_callback<libjami::CallSignal::AudioMuted>(),
      45           38 :         exported_callback<libjami::CallSignal::ConnectionUpdate>(),
      46           38 :         exported_callback<libjami::CallSignal::OnConferenceInfosUpdated>(),
      47           38 :         exported_callback<libjami::CallSignal::RemoteRecordingChanged>(),
      48           38 :         exported_callback<libjami::CallSignal::MediaNegotiationStatus>(),
      49              : 
      50              :         /* Configuration */
      51           38 :         exported_callback<libjami::ConfigurationSignal::VolumeChanged>(),
      52           38 :         exported_callback<libjami::ConfigurationSignal::AccountsChanged>(),
      53           38 :         exported_callback<libjami::ConfigurationSignal::DeviceAuthStateChanged>(),
      54           38 :         exported_callback<libjami::ConfigurationSignal::AddDeviceStateChanged>(),
      55           38 :         exported_callback<libjami::ConfigurationSignal::AccountDetailsChanged>(),
      56           38 :         exported_callback<libjami::ConfigurationSignal::StunStatusFailed>(),
      57           38 :         exported_callback<libjami::ConfigurationSignal::RegistrationStateChanged>(),
      58           38 :         exported_callback<libjami::ConfigurationSignal::VolatileDetailsChanged>(),
      59           38 :         exported_callback<libjami::ConfigurationSignal::CertificatePinned>(),
      60           38 :         exported_callback<libjami::ConfigurationSignal::CertificatePathPinned>(),
      61           38 :         exported_callback<libjami::ConfigurationSignal::CertificateExpired>(),
      62           38 :         exported_callback<libjami::ConfigurationSignal::CertificateStateChanged>(),
      63           38 :         exported_callback<libjami::ConfigurationSignal::IncomingAccountMessage>(),
      64           38 :         exported_callback<libjami::ConfigurationSignal::ComposingStatusChanged>(),
      65           38 :         exported_callback<libjami::ConfigurationSignal::AccountMessageStatusChanged>(),
      66           38 :         exported_callback<libjami::ConfigurationSignal::NeedsHost>(),
      67           38 :         exported_callback<libjami::ConfigurationSignal::ActiveCallsChanged>(),
      68           38 :         exported_callback<libjami::ConfigurationSignal::ProfileReceived>(),
      69           38 :         exported_callback<libjami::ConfigurationSignal::IncomingTrustRequest>(),
      70           38 :         exported_callback<libjami::ConfigurationSignal::ContactAdded>(),
      71           38 :         exported_callback<libjami::ConfigurationSignal::ContactRemoved>(),
      72           38 :         exported_callback<libjami::ConfigurationSignal::KnownDevicesChanged>(),
      73           38 :         exported_callback<libjami::ConfigurationSignal::NameRegistrationEnded>(),
      74           38 :         exported_callback<libjami::ConfigurationSignal::RegisteredNameFound>(),
      75           38 :         exported_callback<libjami::ConfigurationSignal::UserSearchEnded>(),
      76           38 :         exported_callback<libjami::ConfigurationSignal::MediaParametersChanged>(),
      77           38 :         exported_callback<libjami::ConfigurationSignal::MigrationEnded>(),
      78           38 :         exported_callback<libjami::ConfigurationSignal::DeviceRevocationEnded>(),
      79           38 :         exported_callback<libjami::ConfigurationSignal::AccountProfileReceived>(),
      80           38 :         exported_callback<libjami::ConfigurationSignal::Error>(),
      81              : #if defined(__ANDROID__) || (defined(TARGET_OS_IOS) && TARGET_OS_IOS)
      82              :         exported_callback<libjami::ConfigurationSignal::GetHardwareAudioFormat>(),
      83              : #endif
      84              : #if defined(__ANDROID__) || (defined(TARGET_OS_IOS) && TARGET_OS_IOS)
      85              :         exported_callback<libjami::ConfigurationSignal::GetAppDataPath>(),
      86              :         exported_callback<libjami::ConfigurationSignal::GetDeviceName>(),
      87              : #endif
      88           38 :         exported_callback<libjami::ConfigurationSignal::HardwareDecodingChanged>(),
      89           38 :         exported_callback<libjami::ConfigurationSignal::HardwareEncodingChanged>(),
      90           38 :         exported_callback<libjami::ConfigurationSignal::MessageSend>(),
      91              : 
      92              :         /* Service-exposure */
      93           38 :         exported_callback<libjami::ServiceSignal::PeerServicesReceived>(),
      94           38 :         exported_callback<libjami::ServiceSignal::TunnelOpened>(),
      95           38 :         exported_callback<libjami::ServiceSignal::TunnelClosed>(),
      96              : 
      97              :         /* Presence */
      98           38 :         exported_callback<libjami::PresenceSignal::NewServerSubscriptionRequest>(),
      99           38 :         exported_callback<libjami::PresenceSignal::NearbyPeerNotification>(),
     100           38 :         exported_callback<libjami::PresenceSignal::ServerError>(),
     101           38 :         exported_callback<libjami::PresenceSignal::NewBuddyNotification>(),
     102           38 :         exported_callback<libjami::PresenceSignal::SubscriptionStateChanged>(),
     103              : 
     104              :         /* Audio */
     105           38 :         exported_callback<libjami::AudioSignal::DeviceEvent>(),
     106           38 :         exported_callback<libjami::AudioSignal::AudioMeter>(),
     107              : 
     108              :         /* DataTransfer */
     109           38 :         exported_callback<libjami::DataTransferSignal::DataTransferEvent>(),
     110              : 
     111              : #ifdef ENABLE_VIDEO
     112              :         /* MediaPlayer */
     113           38 :         exported_callback<libjami::MediaPlayerSignal::FileOpened>(),
     114              : 
     115              :         /* Video */
     116           38 :         exported_callback<libjami::VideoSignal::DeviceEvent>(),
     117           38 :         exported_callback<libjami::VideoSignal::DecodingStarted>(),
     118           38 :         exported_callback<libjami::VideoSignal::DecodingStopped>(),
     119              : #ifdef __ANDROID__
     120              :         exported_callback<libjami::VideoSignal::GetCameraInfo>(),
     121              :         exported_callback<libjami::VideoSignal::SetParameters>(),
     122              :         exported_callback<libjami::VideoSignal::RequestKeyFrame>(),
     123              :         exported_callback<libjami::VideoSignal::SetBitrate>(),
     124              : #endif
     125           38 :         exported_callback<libjami::VideoSignal::StartCapture>(),
     126           38 :         exported_callback<libjami::VideoSignal::StopCapture>(),
     127           38 :         exported_callback<libjami::VideoSignal::DeviceAdded>(),
     128           38 :         exported_callback<libjami::VideoSignal::ParametersChanged>(),
     129              : #endif
     130              : 
     131              :         /* Conversation */
     132           38 :         exported_callback<libjami::ConversationSignal::SwarmLoaded>(),
     133           38 :         exported_callback<libjami::ConversationSignal::MessagesFound>(),
     134           38 :         exported_callback<libjami::ConversationSignal::SwarmMessageReceived>(),
     135           38 :         exported_callback<libjami::ConversationSignal::SwarmMessageUpdated>(),
     136           38 :         exported_callback<libjami::ConversationSignal::ReactionAdded>(),
     137           38 :         exported_callback<libjami::ConversationSignal::ReactionRemoved>(),
     138           38 :         exported_callback<libjami::ConversationSignal::ConversationProfileUpdated>(),
     139           38 :         exported_callback<libjami::ConversationSignal::ConversationRequestReceived>(),
     140           38 :         exported_callback<libjami::ConversationSignal::ConversationRequestDeclined>(),
     141           38 :         exported_callback<libjami::ConversationSignal::ConversationReady>(),
     142           38 :         exported_callback<libjami::ConversationSignal::ConversationRemoved>(),
     143           38 :         exported_callback<libjami::ConversationSignal::ConversationMemberEvent>(),
     144           38 :         exported_callback<libjami::ConversationSignal::ConversationSyncFinished>(),
     145           38 :         exported_callback<libjami::ConversationSignal::ConversationCloned>(),
     146           38 :         exported_callback<libjami::ConversationSignal::CallConnectionRequest>(),
     147           38 :         exported_callback<libjami::ConversationSignal::OnConversationError>(),
     148           38 :         exported_callback<libjami::ConversationSignal::ConversationPreferencesUpdated>(),
     149              : 
     150              : #ifdef ENABLE_PLUGIN
     151           38 :         exported_callback<libjami::PluginSignal::WebViewMessageReceived>(),
     152              : #endif
     153        36031 :     };
     154              : 
     155        32421 :     return handlers;
     156           38 : }
     157              : 
     158              : }; // namespace jami
     159              : 
     160              : namespace libjami {
     161              : 
     162              : void
     163          844 : registerSignalHandlers(const std::map<std::string, std::shared_ptr<CallbackWrapperBase>>& handlers)
     164              : {
     165          844 :     auto& handlers_ = jami::getSignalHandlers();
     166         3928 :     for (auto& item : handlers) {
     167         3084 :         auto iter = handlers_.find(item.first);
     168         3084 :         if (iter == handlers_.end()) {
     169            0 :             JAMI_ERROR("Signal {} not supported", item.first);
     170            0 :             continue;
     171            0 :         }
     172         3084 :         iter->second = item.second;
     173              :     }
     174          844 : }
     175              : 
     176              : void
     177          867 : unregisterSignalHandlers()
     178              : {
     179          867 :     auto& handlers_ = jami::getSignalHandlers();
     180        80631 :     for (auto& item : handlers_) {
     181        79764 :         item.second = {};
     182              :     }
     183          867 : }
     184              : 
     185              : } // namespace libjami
        

Generated by: LCOV version 2.0-1