LCOV - code coverage report
Current view: top level - src/client - jami_signal.cpp (source / functions) Coverage Total Hit
Test: jami-coverage-filtered.info Lines: 97.4 % 116 113
Test Date: 2026-08-23 08:52:56 Functions: 100.0 % 3 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        36024 : getSignalHandlers()
      24              : {
      25              :     static SignalHandlerMap handlers = {
      26              :         /* Call */
      27            0 :         exported_callback<libjami::CallSignal::StateChange>(),
      28           45 :         exported_callback<libjami::CallSignal::TransferFailed>(),
      29           45 :         exported_callback<libjami::CallSignal::TransferSucceeded>(),
      30           45 :         exported_callback<libjami::CallSignal::RecordPlaybackStopped>(),
      31           45 :         exported_callback<libjami::CallSignal::VoiceMailNotify>(),
      32           45 :         exported_callback<libjami::CallSignal::IncomingMessage>(),
      33           45 :         exported_callback<libjami::CallSignal::IncomingCall>(),
      34           45 :         exported_callback<libjami::CallSignal::MediaChangeRequested>(),
      35           45 :         exported_callback<libjami::CallSignal::RecordPlaybackFilepath>(),
      36           45 :         exported_callback<libjami::CallSignal::ConferenceCreated>(),
      37           45 :         exported_callback<libjami::CallSignal::ConferenceChanged>(),
      38           45 :         exported_callback<libjami::CallSignal::UpdatePlaybackScale>(),
      39           45 :         exported_callback<libjami::CallSignal::ConferenceRemoved>(),
      40           45 :         exported_callback<libjami::CallSignal::RecordingStateChanged>(),
      41           45 :         exported_callback<libjami::CallSignal::RtcpReportReceived>(),
      42           45 :         exported_callback<libjami::CallSignal::PeerHold>(),
      43           45 :         exported_callback<libjami::CallSignal::VideoMuted>(),
      44           45 :         exported_callback<libjami::CallSignal::AudioMuted>(),
      45           45 :         exported_callback<libjami::CallSignal::ConnectionUpdate>(),
      46           45 :         exported_callback<libjami::CallSignal::OnConferenceInfosUpdated>(),
      47           45 :         exported_callback<libjami::CallSignal::RemoteRecordingChanged>(),
      48           45 :         exported_callback<libjami::CallSignal::MediaNegotiationStatus>(),
      49              : 
      50              :         /* Configuration */
      51           45 :         exported_callback<libjami::ConfigurationSignal::VolumeChanged>(),
      52           45 :         exported_callback<libjami::ConfigurationSignal::AccountsChanged>(),
      53           45 :         exported_callback<libjami::ConfigurationSignal::DeviceAuthStateChanged>(),
      54           45 :         exported_callback<libjami::ConfigurationSignal::AddDeviceStateChanged>(),
      55           45 :         exported_callback<libjami::ConfigurationSignal::AccountDetailsChanged>(),
      56           45 :         exported_callback<libjami::ConfigurationSignal::StunStatusFailed>(),
      57           45 :         exported_callback<libjami::ConfigurationSignal::RegistrationStateChanged>(),
      58           45 :         exported_callback<libjami::ConfigurationSignal::VolatileDetailsChanged>(),
      59           45 :         exported_callback<libjami::ConfigurationSignal::CertificatePinned>(),
      60           45 :         exported_callback<libjami::ConfigurationSignal::CertificatePathPinned>(),
      61           45 :         exported_callback<libjami::ConfigurationSignal::CertificateExpired>(),
      62           45 :         exported_callback<libjami::ConfigurationSignal::CertificateStateChanged>(),
      63           45 :         exported_callback<libjami::ConfigurationSignal::IncomingAccountMessage>(),
      64           45 :         exported_callback<libjami::ConfigurationSignal::ComposingStatusChanged>(),
      65           45 :         exported_callback<libjami::ConfigurationSignal::AccountMessageStatusChanged>(),
      66           45 :         exported_callback<libjami::ConfigurationSignal::NeedsHost>(),
      67           45 :         exported_callback<libjami::ConfigurationSignal::ActiveCallsChanged>(),
      68           45 :         exported_callback<libjami::ConfigurationSignal::ProfileReceived>(),
      69           45 :         exported_callback<libjami::ConfigurationSignal::IncomingTrustRequest>(),
      70           45 :         exported_callback<libjami::ConfigurationSignal::ContactAdded>(),
      71           45 :         exported_callback<libjami::ConfigurationSignal::ContactRemoved>(),
      72           45 :         exported_callback<libjami::ConfigurationSignal::KnownDevicesChanged>(),
      73           45 :         exported_callback<libjami::ConfigurationSignal::NameRegistrationEnded>(),
      74           45 :         exported_callback<libjami::ConfigurationSignal::RegisteredNameFound>(),
      75           45 :         exported_callback<libjami::ConfigurationSignal::UserSearchEnded>(),
      76           45 :         exported_callback<libjami::ConfigurationSignal::MediaParametersChanged>(),
      77           45 :         exported_callback<libjami::ConfigurationSignal::MigrationEnded>(),
      78           45 :         exported_callback<libjami::ConfigurationSignal::DeviceRevocationEnded>(),
      79           45 :         exported_callback<libjami::ConfigurationSignal::AccountProfileReceived>(),
      80           45 :         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           45 :         exported_callback<libjami::ConfigurationSignal::HardwareDecodingChanged>(),
      89           45 :         exported_callback<libjami::ConfigurationSignal::HardwareEncodingChanged>(),
      90           45 :         exported_callback<libjami::ConfigurationSignal::MessageSend>(),
      91              : 
      92              :         /* Service-exposure */
      93           45 :         exported_callback<libjami::ServiceSignal::PeerServicesReceived>(),
      94           45 :         exported_callback<libjami::ServiceSignal::TunnelOpened>(),
      95           45 :         exported_callback<libjami::ServiceSignal::TunnelClosed>(),
      96              : 
      97              :         /* Presence */
      98           45 :         exported_callback<libjami::PresenceSignal::NewServerSubscriptionRequest>(),
      99           45 :         exported_callback<libjami::PresenceSignal::NearbyPeerNotification>(),
     100           45 :         exported_callback<libjami::PresenceSignal::ServerError>(),
     101           45 :         exported_callback<libjami::PresenceSignal::NewBuddyNotification>(),
     102           45 :         exported_callback<libjami::PresenceSignal::SubscriptionStateChanged>(),
     103              : 
     104              :         /* Audio */
     105           45 :         exported_callback<libjami::AudioSignal::DeviceEvent>(),
     106           45 :         exported_callback<libjami::AudioSignal::AudioMeter>(),
     107              : 
     108              :         /* DataTransfer */
     109           45 :         exported_callback<libjami::DataTransferSignal::DataTransferEvent>(),
     110              : 
     111              : #ifdef ENABLE_VIDEO
     112              :         /* MediaPlayer */
     113           45 :         exported_callback<libjami::MediaPlayerSignal::FileOpened>(),
     114              : 
     115              :         /* Video */
     116           45 :         exported_callback<libjami::VideoSignal::DeviceEvent>(),
     117           45 :         exported_callback<libjami::VideoSignal::DecodingStarted>(),
     118           45 :         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           45 :         exported_callback<libjami::VideoSignal::StartCapture>(),
     126           45 :         exported_callback<libjami::VideoSignal::StopCapture>(),
     127           45 :         exported_callback<libjami::VideoSignal::DeviceAdded>(),
     128           45 :         exported_callback<libjami::VideoSignal::ParametersChanged>(),
     129              : #endif
     130              : 
     131              :         /* Conversation */
     132           45 :         exported_callback<libjami::ConversationSignal::SwarmLoaded>(),
     133           45 :         exported_callback<libjami::ConversationSignal::MessagesFound>(),
     134           45 :         exported_callback<libjami::ConversationSignal::SwarmMessageReceived>(),
     135           45 :         exported_callback<libjami::ConversationSignal::SwarmMessageUpdated>(),
     136           45 :         exported_callback<libjami::ConversationSignal::ReactionAdded>(),
     137           45 :         exported_callback<libjami::ConversationSignal::ReactionRemoved>(),
     138           45 :         exported_callback<libjami::ConversationSignal::ConversationProfileUpdated>(),
     139           45 :         exported_callback<libjami::ConversationSignal::ConversationRequestReceived>(),
     140           45 :         exported_callback<libjami::ConversationSignal::ConversationRequestDeclined>(),
     141           45 :         exported_callback<libjami::ConversationSignal::ConversationReady>(),
     142           45 :         exported_callback<libjami::ConversationSignal::ConversationRemoved>(),
     143           45 :         exported_callback<libjami::ConversationSignal::ConversationMemberEvent>(),
     144           45 :         exported_callback<libjami::ConversationSignal::ConversationSyncFinished>(),
     145           45 :         exported_callback<libjami::ConversationSignal::ConversationCloned>(),
     146           45 :         exported_callback<libjami::ConversationSignal::CallConnectionRequest>(),
     147           45 :         exported_callback<libjami::ConversationSignal::OnConversationError>(),
     148           45 :         exported_callback<libjami::ConversationSignal::ConversationPreferencesUpdated>(),
     149           45 :         exported_callback<libjami::ConversationSignal::CollaborativeDocumentUpdate>(),
     150           45 :         exported_callback<libjami::ConversationSignal::CollaborativeAwarenessChanged>(),
     151           45 :         exported_callback<libjami::ConversationSignal::CollaborativeParticipantLeft>(),
     152           45 :         exported_callback<libjami::ConversationSignal::CollaborativeDocumentRenamed>(),
     153           45 :         exported_callback<libjami::ConversationSignal::CollaborativeDocumentRemoved>(),
     154           45 :         exported_callback<libjami::ConversationSignal::CollaborativeAttachmentAdded>(),
     155              : 
     156              : #ifdef ENABLE_PLUGIN
     157           45 :         exported_callback<libjami::PluginSignal::WebViewMessageReceived>(),
     158              : #endif
     159        40569 :     };
     160              : 
     161        36024 :     return handlers;
     162           45 : }
     163              : 
     164              : }; // namespace jami
     165              : 
     166              : namespace libjami {
     167              : 
     168              : void
     169          913 : registerSignalHandlers(const std::map<std::string, std::shared_ptr<CallbackWrapperBase>>& handlers)
     170              : {
     171          913 :     auto& handlers_ = jami::getSignalHandlers();
     172         4062 :     for (auto& item : handlers) {
     173         3149 :         auto iter = handlers_.find(item.first);
     174         3149 :         if (iter == handlers_.end()) {
     175            0 :             JAMI_ERROR("Signal {} not supported", item.first);
     176            0 :             continue;
     177              :         }
     178         3149 :         iter->second = item.second;
     179              :     }
     180          913 : }
     181              : 
     182              : void
     183          958 : unregisterSignalHandlers()
     184              : {
     185          958 :     auto& handlers_ = jami::getSignalHandlers();
     186        94842 :     for (auto& item : handlers_) {
     187        93884 :         item.second = {};
     188              :     }
     189          958 : }
     190              : 
     191              : } // namespace libjami
        

Generated by: LCOV version 2.0-1