117 void post(std::function<
void()> cb);
127template<
typename TProto>
131 using TFunc = std::function<TProto>;
144 : cb_(std::forward<TFunc>(func))
158 file_ = other->file_;
166 constexpr const TFunc&
operator*() const noexcept {
return cb_; }
169 constexpr explicit operator bool() const noexcept {
return static_cast<bool>(cb_); }
181template<
typename TProto>
185 using TFunc = std::function<TProto>;
190 template<
typename TCallback>
191 auto ioContextWrapper(TCallback&& fun)
193 return [
this, fun {std::forward<TCallback>(fun)}](
194 auto&&... args) ->
decltype(fun(std::forward<
decltype(args)>(args)...)) {
195 post([fun {std::move(fun)}, forwardArgs = std::make_tuple(std::move(args)...)]()
mutable {
196 std::apply(std::move(fun), std::move(forwardArgs));
214 cb_ = ioContextWrapper(func);
225 cb_ = ioContextWrapper(other.cb_);
226 file_ = other->file_;
234 constexpr const TFunc&
operator*() const noexcept {
return cb_; }
237 constexpr explicit operator bool() const noexcept {
return static_cast<bool>(cb_); }
247std::pair<std::string, std::shared_ptr<CallbackWrapperBase>>
252 return std::make_pair((
const std::string&) Ts::name,
254 std::forward<std::function<typename Ts::cb_type>>(func), file, linum));
258std::pair<std::string, std::shared_ptr<CallbackWrapperBase>>
263 return std::make_pair((
const std::string&) Ts::name,
265 std::forward<std::function<typename Ts::cb_type>>(func), file, linum));
271using MediaMap = std::map<std::string, std::string>;
void post(std::function< void()> cb)
constexpr const TFunc & operator*() const noexcept
CallbackWrapper(const std::shared_ptr< CallbackWrapperBase > &p) noexcept
CallbackWrapper(TFunc &&func, const char *filename, uint32_t linum) noexcept
CallbackWrapper() noexcept
SerializedCallbackWrapper(TFunc &&func, const char *filename, uint32_t linum) noexcept
constexpr const TFunc & operator*() const noexcept
SerializedCallbackWrapper(const std::shared_ptr< CallbackWrapperBase > &p) noexcept
SerializedCallbackWrapper() noexcept
const char * version() noexcept
Return the library version as string.
@ LIBJAMI_FLAG_CONSOLE_LOG
@ LIBJAMI_FLAG_IOS_EXTENSION
@ LIBJAMI_FLAG_NO_AUTOLOAD
@ LIBJAMI_FLAG_AUTOANSWER
@ LIBJAMI_FLAG_NO_AUTOSYNC
@ LIBJAMI_FLAG_NO_LOCAL_AUDIO
@ LIBJAMI_FLAG_NO_LOCAL_VIDEO
@ LIBJAMI_FLAG_NO_LOCAL_MEDIA
void logging(const std::string &whom, const std::string &action) noexcept
Control log handlers.
bool initialized() noexcept
void fini() noexcept
Stop and freeing any resource allocated by daemon.
bool init(enum InitFlag flags) noexcept
Initialize globals, create underlaying daemon.
void registerSignalHandlers(const std::map< std::string, std::shared_ptr< CallbackWrapperBase > > &handlers)
std::string_view platform() noexcept
Return the target platform (OS) as a string.
std::string_view arch() noexcept
Return the target architecture as a string.
void unregisterSignalHandlers()
std::map< std::string, std::string > MediaMap
std::pair< std::string, std::shared_ptr< CallbackWrapperBase > > exportable_serialized_callback(std::function< typename Ts::cb_type > &&func, const char *file=CURRENT_FILENAME(), uint32_t linum=CURRENT_LINE())
bool start(const std::filesystem::path &config_file) noexcept
Start asynchronously daemon created by init().
std::pair< std::string, std::shared_ptr< CallbackWrapperBase > > exportable_callback(std::function< typename Ts::cb_type > &&func, const char *file=CURRENT_FILENAME(), uint32_t linum=CURRENT_LINE())
Return an exportable callback object.