From 6a99d9bf65aa5878cb409945ed2bdbdcb916d047 Mon Sep 17 00:00:00 2001
From: chenqiyang <1406175257@qq.com>
Date: 星期五, 02 九月 2022 14:56:40 +0800
Subject: [PATCH] 更新linphone sdk

---
 Shared.IOS.HDLLinphoneSDK/Shared.IOS.HDLLinphoneSDK/Library/belle-sip.framework/Headers/mainloop.h |  128 +++++++++++++++++++++++++++++++++++++-----
 1 files changed, 112 insertions(+), 16 deletions(-)

diff --git a/Shared.IOS.HDLLinphoneSDK/Shared.IOS.HDLLinphoneSDK/Library/belle-sip.framework/Headers/mainloop.h b/Shared.IOS.HDLLinphoneSDK/Shared.IOS.HDLLinphoneSDK/Library/belle-sip.framework/Headers/mainloop.h
index 9fe0db3..d2baf93 100755
--- a/Shared.IOS.HDLLinphoneSDK/Shared.IOS.HDLLinphoneSDK/Library/belle-sip.framework/Headers/mainloop.h
+++ b/Shared.IOS.HDLLinphoneSDK/Shared.IOS.HDLLinphoneSDK/Library/belle-sip.framework/Headers/mainloop.h
@@ -20,6 +20,10 @@
 #ifndef BELLE_SIP_MAINLOOP_H
 #define BELLE_SIP_MAINLOOP_H
 
+#include "defs.h"
+#include "utils.h"
+#include "types.h"
+
 #define BELLE_SIP_EVENT_READ 1
 #define BELLE_SIP_EVENT_WRITE (1<<1)
 #define BELLE_SIP_EVENT_ERROR (1<<2)
@@ -112,8 +116,22 @@
 
 /**
  * Schedule an arbitrary task at next main loop iteration.
+ * @note thread-safe
 **/
 BELLESIP_EXPORT void belle_sip_main_loop_do_later(belle_sip_main_loop_t *ml, belle_sip_callback_t func, void *data);
+
+/**
+ * Same as #belle_sip_main_loop_do_later() but allow to give a name to the task.
+ * @param[in] timer_name The name of the task. If NULL, the task will be named as though
+ * #belle_sip_main_loop_do_later() was called.
+ * @note thread-safe
+**/
+BELLESIP_EXPORT void belle_sip_main_loop_do_later_with_name(
+	belle_sip_main_loop_t *ml,
+	belle_sip_callback_t func,
+	void *data,
+	const char *timer_name
+);
 
 /**
  * Creates a timeout source, similarly to belle_sip_main_loop_add_timeout().
@@ -122,14 +140,30 @@
 **/
 BELLESIP_EXPORT belle_sip_source_t * belle_sip_timeout_source_new(belle_sip_source_func_t func, void *data, unsigned int timeout_value_ms);
 
-BELLESIP_EXPORT void belle_sip_source_set_timeout(belle_sip_source_t *s, unsigned int value_ms);
+/**
+ * Set the timeout duration.
+ * @param[in] s The source to modify.
+ * @param[in] value_ms The new timeout duration in milliseconds. Only values in [0;INT_MAX] are valid to define a new
+ * duration. Higher values will cause the timer to be disabled.
+ * @deprecated Since 2020-05-20 (SDK 4.4). Use belle_sip_source_set_timeout_int64() instead.
+ */
+BELLESIP_DEPRECATED BELLESIP_EXPORT void belle_sip_source_set_timeout(belle_sip_source_t *s, unsigned int value_ms);
+/**
+ * Set the timeout duration.
+ * @param[in] s The source to modify.
+ * @param[in] value_ms Positive values willbe taken as the new duration to set. Negative values will cause the timer
+ * to be disabled.
+ */
+BELLESIP_EXPORT void belle_sip_source_set_timeout_int64(belle_sip_source_t *s, int64_t value_ms);
+
 /**
  * Cancel a source. Will be removed at next iterate. It is not freed.
  **/
 BELLESIP_EXPORT void belle_sip_source_cancel(belle_sip_source_t * src);
 
 
-BELLESIP_EXPORT unsigned int belle_sip_source_get_timeout(const belle_sip_source_t *s);
+BELLESIP_DEPRECATED BELLESIP_EXPORT unsigned int belle_sip_source_get_timeout(const belle_sip_source_t *s);
+BELLESIP_EXPORT int64_t belle_sip_source_get_timeout_int64(const belle_sip_source_t *s);
 
 BELLESIP_EXPORT belle_sip_source_t * belle_sip_socket_source_new(belle_sip_source_func_t func, void *data, belle_sip_socket_t fd, unsigned int events, unsigned int timeout_value_ms);
 /*
@@ -165,41 +199,103 @@
 BELLESIP_EXPORT void belle_sip_main_loop_cancel_source(belle_sip_main_loop_t *ml, unsigned long id);
 
 BELLE_SIP_END_DECLS
-#ifndef BELLE_SIP_USE_STL
-#define BELLE_SIP_USE_STL 1
-#endif
 
-#if ((defined(WIN32) && defined(__cplusplus)) || __cplusplus >= 201103L) && BELLE_SIP_USE_STL
+#if (defined(WIN32) && defined(__cplusplus)) || __cplusplus >= 201103L
 /*Only Visual Studio 2018 properly defines __cplusplus according to c++ level. */
 
 #include <functional>
+#include <memory>
 
-typedef std::function<int (unsigned int)> belle_sip_source_cpp_func_t;
+/**
+ * A generic deleter for belle_sip_object_t objects that limits itself to decrementing the
+ * reference counter. This class is to be used by std::unique_ptr and std::shared_ptr maybe.
+ */
+template <typename T>
+struct BelleSipObjectDeleter {
+	constexpr BelleSipObjectDeleter() noexcept = default;
+	void operator()(T *ptr) const noexcept {belle_sip_object_unref(ptr);}
+};
 
+using BelleSipSourcePtr = std::unique_ptr<belle_sip_source_t, BelleSipObjectDeleter<belle_sip_source_t>>;
+using belle_sip_source_cpp_func_t = std::function<int(unsigned int)>;
+using BelleSipDoLaterFunc = std::function<void()>;
 
-/*purpose of this function is to simplify c++ timer integration.
+/**
+ * The purpose of this function is to simplify c++ timer integration.
  * ex:
  * std::string helloworld("Hello world):
  * belle_sip_source_cpp_func_t *func = new belle_sip_source_cpp_func_t([helloworld](unsigned int events) {
  *						std::cout << helloworld << std::endl;
  *						return BELLE_SIP_STOP;
  *					});
- *create timer
- *mTimer = belle_sip_main_loop_create_cpp_timeout( mainloop
+ * // create timer
+ * belle_sip_source_t *timer = belle_sip_main_loop_create_cpp_timeout( mainloop
+ *												, func
+ *												, 1000
+ *												,"timer for c++");
+ * [...]
+ * // Unref the timer when you doesn't need it anymore
+ * belle_sip_object_unref(timer);
+ *
+ * @warning Not thread-sfae
+ * @deprecated Since 2020-04-17.
+ */
+BELLESIP_DEPRECATED BELLESIP_EXPORT belle_sip_source_t *belle_sip_main_loop_create_cpp_timeout(belle_sip_main_loop_t *ml
+								, belle_sip_source_cpp_func_t *func
+								, unsigned int timeout_value_ms
+								, const char* timer_name);
+
+/*
+ * This variant does the same except that:
+ * - it does not require to pass the std::function as a pointer allocated with new()
+ * - the std::function shall return true/false instead of BELLE_SIP_CONTINUE/BELLE_SIP_STOP.
+ */
+BELLESIP_EXPORT belle_sip_source_t * belle_sip_main_loop_create_cpp_timeout_2(belle_sip_main_loop_t *ml,
+							const std::function<bool ()> &func,
+							unsigned int timeout_value_ms,
+							const std::string &timer_name);
+		
+/**
+ * The purpose of this function is to simplify c++ timer integration.
+ * Unlike the deprecated overload of this function, there is no need to
+ * allocate anything with new and to unref the timer.
+ *
+ * ex:
+ * std::string helloworld{"Hello world};
+ * auto func = [helloworld](unsigned int events) {
+ *					std::cout << helloworld << std::endl;
+ *					return BELLE_SIP_STOP;
+ *				});
+ *
+ * // create the timer
+ * auto timer = belle_sip_main_loop_create_cpp_timeout( mainloop
  *												, func
  *												, 1000
  *												,"timer for c++");
  *
  */
-
-BELLESIP_EXPORT belle_sip_source_t * belle_sip_main_loop_create_cpp_timeout(belle_sip_main_loop_t *ml
-								, belle_sip_source_cpp_func_t *func
+BELLESIP_EXPORT BelleSipSourcePtr belle_sip_main_loop_create_cpp_timeout(belle_sip_main_loop_t *ml
+								, const belle_sip_source_cpp_func_t &func
 								, unsigned int timeout_value_ms
 								, const char* timer_name);
 
-BELLESIP_EXPORT void belle_sip_main_loop_cpp_do_later(belle_sip_main_loop_t *ml, const std::function<void (void)> &func);
+/**
+ * C++ wrapper for #belle_sip_main_loop_do_later().
+ * @note thread-safe
+ */
+BELLESIP_EXPORT void belle_sip_main_loop_cpp_do_later(belle_sip_main_loop_t *ml, const BelleSipDoLaterFunc &func);
+
+/**
+ * Overload of the previous function that allow to give a name to the task.
+ * @note thread-safe
+ */
+BELLESIP_EXPORT void belle_sip_main_loop_cpp_do_later(
+	belle_sip_main_loop_t *ml,
+	const BelleSipDoLaterFunc &func,
+	const char *task_name
+);
 
 
-#endif
+#endif // C++ declarations
 
-#endif
+#endif // #ifndef BELLE_SIP_MAINLOOP_H

--
Gitblit v1.8.0