NIM 跨平台 C++ SDK
载入中...
搜索中...
未找到
v2_nim_api.hpp
浏览该文件的文档.
1#ifndef V2_NIM_API_H
2#define V2_NIM_API_H
21#if defined(WIN32) || defined(_WIN32)
22#include "wtypes.h"
23#else
24#include <dlfcn.h>
25#endif
26#ifdef ENABLE_NIM_V1
28namespace nim {
30} // namespace nim
31#endif
32namespace v2 {
34public:
41 static V2NIMClient& get();
42
59 auto error = initImpl(option);
60#ifdef ENABLE_NIM_V1
61 if (!error && !nim::nim_sdk_instance) {
63 if (!nim::nim_sdk_instance->LoadSdkDll("", internal::NIM_SDK_NAME)) {
65 nim::nim_sdk_instance = nullptr;
66 throw std::runtime_error("[V2NIMClient] load v1 sdk failed");
67 }
68 }
69#endif
70 return error;
71 }
72
75
88 auto error = uninitImpl();
89#ifdef ENABLE_NIM_V1
90 if (!error && nim::nim_sdk_instance) {
93 nim::nim_sdk_instance = nullptr;
94 }
95#endif
96 return error;
97 }
98
101
113
120 virtual V2NIMLoginService& getLoginService() const = 0;
121
129
138
146
154
162
170
177 virtual V2NIMTeamService& getTeamService() const = 0;
178
186
193 virtual V2NIMUserService& getUserService() const = 0;
194
202
209 virtual V2NIMAIService& getAIService() const = 0;
210
218
226
234
242};
243
245public:
246 virtual ~V2NIMChatroomClient() = default;
262 static nstd::optional<V2NIMError> init(const V2NIMInitOption& option);
263
271 static void uninit();
272
290
303 static void destroyInstance(uint32_t instanceId);
304
320 static nstd::shared_ptr<V2NIMChatroomClient> getInstance(uint32_t instanceId);
321
330
339 static void destroyAll();
340
348 virtual uint32_t getInstanceId() = 0;
349
362
394 virtual void enter(nstd::string roomId,
395 V2NIMChatroomEnterParams enterParams,
397 V2NIMFailureCallback failure) = 0;
398
405 virtual void exit() = 0;
406
414
422
430
438
460
473};
474
476namespace internal {
478public:
480 virtual void uninit() = 0;
482 virtual void destroyInstance(uint32_t instanceId) = 0;
483 virtual nstd::shared_ptr<V2NIMChatroomClient> getInstance(uint32_t instanceId) = 0;
485 virtual void destroyAll() = 0;
486};
488} // namespace internal
489
491 static const char* sdkFunctionV2InstanceGet = "v2_nim_instance_impl_get";
492 static V2NIMClient* nimInstance{nullptr};
493 if (nimInstance == nullptr) {
494 void** instances = internal::callSdkFunction<void**>(internal::NIM_SDK_NAME, sdkFunctionV2InstanceGet);
495 if (instances) {
496 nimInstance = reinterpret_cast<V2NIMClient*>(instances[internal::V2_NIM_INTERNEL_INSTANCE]);
502 }
503 }
504 if (!nimInstance) {
505 throw std::runtime_error("[V2NIMClient] get instance failed");
506 }
507 return *nimInstance;
508}
509
511 static const char* sdkFunctionV2InstanceGet = "v2_nim_chatroom_instance_impl_get";
513 void** instances = internal::callSdkFunction<void**>(internal::NIM_CHATROOM_SDK_NAME, sdkFunctionV2InstanceGet);
514 if (instances) {
519 }
520 }
522 throw std::runtime_error("[V2NIMChatroomClient] init, internalChatroomSdkExport is null");
523 }
525}
526
529 throw std::runtime_error("[V2NIMChatroomClient] uninit, internalChatroomSdkExport is null");
530 }
532}
533
536 throw std::runtime_error("[V2NIMChatroomClient] newInstance, internalChatroomSdkExport is null");
537 }
539}
540
541inline void V2NIMChatroomClient::destroyInstance(uint32_t instanceId) {
543 throw std::runtime_error("[V2NIMChatroomClient] destroyInstance, internalChatroomSdkExport is null");
544 }
546}
547
550 throw std::runtime_error("[V2NIMChatroomClient] getInstance, internalChatroomSdkExport is null");
551 }
553}
554
557 throw std::runtime_error("[V2NIMChatroomClient] getInstanceList, internalChatroomSdkExport is null");
558 }
560}
561
564 throw std::runtime_error("[V2NIMChatroomClient] destroyAll, internalChatroomSdkExport is null");
565 }
567}
568} // namespace v2
569#endif
SDK库辅助类,提供加载/卸载SDK库以及获取接口的方法
Definition: nim_sdk_util.h:38
void UnLoadSdkDll()
Definition: nim_sdk_util.cpp:62
Definition: ne_stl_continuous_container.h:15
Definition: ne_stl_smart_ptr.h:31
Definition: ne_stl_string.h:19
AI 数字人服务
Definition: v2_nim_ai_service.hpp:15
Definition: v2_nim_api.hpp:244
virtual V2NIMStorageService & getStorageService()=0
获取存储服务
virtual V2NIMChatroomQueueService & getChatroomQueueService()=0
获取聊天室队列服务
virtual void removeChatroomClientListener(V2NIMChatroomClientListener listener)=0
移除聊天室实例监听器
static nstd::shared_ptr< V2NIMChatroomClient > getInstance(uint32_t instanceId)
获取聊天室客户端实例
Definition: v2_nim_api.hpp:548
static nstd::vector< nstd::shared_ptr< V2NIMChatroomClient > > getInstanceList()
获取聊天室实例列表
Definition: v2_nim_api.hpp:555
virtual void addChatroomClientListener(V2NIMChatroomClientListener listener)=0
添加聊天室实例监听器
virtual void exit()=0
退出聊天室
virtual V2NIMChatroomInfo getChatroomInfo()=0
查询聊天室信息
virtual V2NIMChatroomService & getChatroomService()=0
获取聊天室服务
static void destroyAll()
销毁所有聊天室客户端实例
Definition: v2_nim_api.hpp:562
virtual void enter(nstd::string roomId, V2NIMChatroomEnterParams enterParams, V2NIMSuccessCallback< V2NIMChatroomEnterResult > success, V2NIMFailureCallback failure)=0
进入聊天室
virtual uint32_t getInstanceId()=0
获取聊天室客户端实例 ID
static void destroyInstance(uint32_t instanceId)
销毁聊天室客户端实例
Definition: v2_nim_api.hpp:541
static nstd::optional< V2NIMError > init(const V2NIMInitOption &option)
初始化
Definition: v2_nim_api.hpp:510
virtual nstd::optional< V2NIMError > updateAppKey(const nstd::string &appKey)=0
重新设置 App key,您可以在不重新初始化的情况下切换 App key
virtual ~V2NIMChatroomClient()=default
static nstd::shared_ptr< V2NIMChatroomClient > newInstance()
创建聊天室客户端实例
Definition: v2_nim_api.hpp:534
static void uninit()
反初始化
Definition: v2_nim_api.hpp:527
Definition: v2_nim_chatroom_queue_service.hpp:8
聊天室服务
Definition: v2_nim_chatroom_service.hpp:17
Definition: v2_nim_api.hpp:33
virtual nstd::optional< V2NIMError > initImpl(const V2NIMInitOption &option)=0
virtual V2NIMConversationService & getConversationService() const =0
获取会话服务
virtual V2NIMSettingService & getSettingService() const =0
获取设置服务
virtual V2NIMPassthroughService & getPassthroughService() const =0
获取透传服务
virtual V2NIMLoginService & getLoginService() const =0
获取登录服务
nstd::optional< V2NIMError > uninit()
反初始化
Definition: v2_nim_api.hpp:87
nstd::optional< V2NIMError > init(const V2NIMInitOption &option)
初始化
Definition: v2_nim_api.hpp:58
virtual nstd::optional< V2NIMError > uninitImpl()=0
static V2NIMClient & get()
获取 IM 客户端实例
Definition: v2_nim_api.hpp:490
virtual V2NIMLocalConversationService & getLocalConversationService() const =0
获取本地会话服务
virtual V2NIMUserService & getUserService() const =0
获取用户资料服务
virtual V2NIMSignallingService & getSignallingService() const =0
获取信令服务
virtual nstd::optional< V2NIMError > updateAppKey(const nstd::string &appKey)=0
重新设置 App key,您可以在不重新初始化的情况下切换 App key
virtual V2NIMNotificationService & getNotificationService() const =0
获取通知服务
virtual V2NIMStorageService & getStorageService() const =0
获取存储服务
virtual V2NIMMessageService & getMessageService() const =0
获取消息服务
virtual V2NIMFriendService & getFriendService() const =0
获取好友服务
virtual V2NIMConversationGroupService & getConversationGroupService() const =0
获取会话分组服务
virtual V2NIMStatisticsService & getStatisticsService() const =0
获取数据统计服务
virtual V2NIMAIService & getAIService() const =0
获取 AI 服务
virtual V2NIMSubscriptionService & getSubscriptionService() const =0
获取订阅服务
virtual V2NIMTeamService & getTeamService() const =0
获取群组服务
会话分组服务
Definition: v2_nim_conversation_group_service.hpp:14
会话服务
Definition: v2_nim_conversation_service.hpp:15
好友服务
Definition: v2_nim_friend_service.hpp:14
本地会话服务
Definition: v2_nim_local_conversation_service.hpp:17
登录服务
Definition: v2_nim_login_service.hpp:14
消息服务
Definition: v2_nim_message_service.hpp:14
通知服务
Definition: v2_nim_notification_service.hpp:14
Definition: v2_nim_passthrough_service.hpp:8
通知服务
Definition: v2_nim_setting_service.hpp:14
信令服务
Definition: v2_nim_signalling_service.hpp:17
数据统计服务
Definition: v2_nim_statistics_service.hpp:17
存储服务
Definition: v2_nim_storage_service.hpp:14
Definition: v2_nim_subscription_service.hpp:8
通用成功
Definition: v2_nim_def_callback.hpp:7
群组服务
Definition: v2_nim_team_service.hpp:15
用户资料服务
Definition: v2_nim_user_service.hpp:14
Definition: v2_nim_internal.hpp:91
Definition: v2_nim_api.hpp:477
virtual nstd::vector< nstd::shared_ptr< V2NIMChatroomClient > > getInstanceList()=0
virtual nstd::shared_ptr< V2NIMChatroomClient > newInstance()=0
virtual nstd::shared_ptr< V2NIMChatroomClient > getInstance(uint32_t instanceId)=0
virtual nstd::optional< V2NIMError > init(const V2NIMInitOption &option)=0
virtual void destroyInstance(uint32_t instanceId)=0
Definition: v2_nim_internal.hpp:35
Definition: v2_nim_internal.hpp:42
Definition: v2_nim_internal.hpp:53
namespace nim
nim::SDKInstance * nim_sdk_instance
Definition: nim_qchat_helper.h:12
static const char * NIM_SDK_NAME
Definition: v2_nim_internal.hpp:126
V2NIMClientAntispamUtilInternal * internalClientAntispamUtil
Definition: v2_nim_internal.hpp:39
V2NIMChatroomMessageUtilInternal * internalChatroomMessageUtil
Definition: v2_nim_internal.hpp:117
V2NIMChatroomSdkExport * internalChatroomSdkExport
Definition: v2_nim_api.hpp:487
V2NIMMessageUtilInternal * internalMessageUtil
Definition: v2_nim_internal.hpp:88
V2NIMConversationIdUtilInternal * internalConversationIdUtil
Definition: v2_nim_internal.hpp:50
@ V2_NIM_CHATROOM_MESSAGE_UTIL
Definition: v2_nim_internal.hpp:32
@ V2_NIM_CHATROOM_SDK_EXPORT
Definition: v2_nim_internal.hpp:31
@ V2_NIM_INTERNEL_INSTANCE
Definition: v2_nim_internal.hpp:25
@ V2_NIM_INTERNEL_CONVERSATION_ID_UTIL
Definition: v2_nim_internal.hpp:27
@ V2_NIM_INTERNEL_CLIENT_ANTI_SPAM_UTIL
Definition: v2_nim_internal.hpp:26
@ V2_NIM_INTERNEL_MESSAGE_UTIL
Definition: v2_nim_internal.hpp:28
static const char * NIM_CHATROOM_SDK_NAME
Definition: v2_nim_internal.hpp:127
Definition: v2_nim_ai_service.hpp:4
SDK库辅助方法
Definition: ne_stl_optional.h:16
Definition: ne_stl_bind.h:132
Definition: v2_nim_def_callback.hpp:206
Definition: v2_nim_def_struct.hpp:1957
Definition: v2_nim_def_struct.hpp:1986
Definition: v2_nim_def_struct.hpp:155