NIM PC Cross Platform SDK
载入中...
搜索中...
未找到
v2_nim_api.hpp
浏览该文件的文档.
1#ifndef V2_NIM_API_H
2#define V2_NIM_API_H
17#ifdef WIN32
18#include "wtypes.h"
19#else
20#include <dlfcn.h>
21#endif
22#ifdef ENABLE_NIM_V1
24namespace nim {
26} // namespace nim
27#endif
28namespace v2 {
30public:
37 static V2NIMClient& get();
38
55 auto error = initImpl(option);
56#ifdef ENABLE_NIM_V1
57 if (!error && !nim::nim_sdk_instance) {
59 if (!nim::nim_sdk_instance->LoadSdkDll("", internal::NIM_SDK_NAME)) {
61 nim::nim_sdk_instance = nullptr;
62 throw std::runtime_error("[V2NIMClient] load v1 sdk failed");
63 }
64 }
65#endif
66 return error;
67 }
68
71
84 auto error = uninitImpl();
85#ifdef ENABLE_NIM_V1
86 if (!error && nim::nim_sdk_instance) {
89 nim::nim_sdk_instance = nullptr;
90 }
91#endif
92 return error;
93 }
94
97
104 virtual V2NIMLoginService& getLoginService() const = 0;
105
113
121
129
137
145
152 virtual V2NIMTeamService& getTeamService() const = 0;
153
161
168 virtual V2NIMUserService& getUserService() const = 0;
169
177
184 virtual V2NIMAIService& getAIService() const = 0;
185
193
201};
202
204public:
205 virtual ~V2NIMChatroomClient() = default;
221 static nstd::optional<V2NIMError> init(const V2NIMInitOption& option);
222
230 static void uninit();
231
249
262 static void destroyInstance(uint32_t instanceId);
263
279 static nstd::shared_ptr<V2NIMChatroomClient> getInstance(uint32_t instanceId);
280
289
298 static void destroyAll();
299
307 virtual uint32_t getInstanceId() = 0;
308
340 virtual void enter(nstd::string roomId,
341 V2NIMChatroomEnterParams enterParams,
343 V2NIMFailureCallback failure) = 0;
344
351 virtual void exit() = 0;
352
360
368
376
398
411};
412
414namespace internal {
416public:
418 virtual void uninit() = 0;
420 virtual void destroyInstance(uint32_t instanceId) = 0;
421 virtual nstd::shared_ptr<V2NIMChatroomClient> getInstance(uint32_t instanceId) = 0;
423 virtual void destroyAll() = 0;
424};
426} // namespace internal
427
429 static const char* sdkFunctionV2InstanceGet = "v2_nim_instance_impl_get";
430 static V2NIMClient* nimInstance{nullptr};
431 if (nimInstance == nullptr) {
432 void** instances = internal::callSdkFunction<void**>(internal::NIM_SDK_NAME, sdkFunctionV2InstanceGet);
433 if (instances) {
434 nimInstance = reinterpret_cast<V2NIMClient*>(instances[internal::V2_NIM_INTERNEL_INSTANCE]);
440 }
441 }
442 if (!nimInstance) {
443 throw std::runtime_error("[V2NIMClient] get instance failed");
444 }
445 return *nimInstance;
446}
447
449 static const char* sdkFunctionV2InstanceGet = "v2_nim_chatroom_instance_impl_get";
451 void** instances = internal::callSdkFunction<void**>(internal::NIM_CHATROOM_SDK_NAME, sdkFunctionV2InstanceGet);
452 if (instances) {
457 }
458 }
460 throw std::runtime_error("[V2NIMChatroomClient] init, internalChatroomSdkExport is null");
461 }
463}
464
467 throw std::runtime_error("[V2NIMChatroomClient] uninit, internalChatroomSdkExport is null");
468 }
470}
471
474 throw std::runtime_error("[V2NIMChatroomClient] newInstance, internalChatroomSdkExport is null");
475 }
477}
478
479inline void V2NIMChatroomClient::destroyInstance(uint32_t instanceId) {
481 throw std::runtime_error("[V2NIMChatroomClient] destroyInstance, internalChatroomSdkExport is null");
482 }
484}
485
488 throw std::runtime_error("[V2NIMChatroomClient] getInstance, internalChatroomSdkExport is null");
489 }
491}
492
495 throw std::runtime_error("[V2NIMChatroomClient] getInstanceList, internalChatroomSdkExport is null");
496 }
498}
499
502 throw std::runtime_error("[V2NIMChatroomClient] destroyAll, internalChatroomSdkExport is null");
503 }
505}
506} // namespace v2
507#endif
SDK库辅助方法
namespace nim
nim::SDKInstance * nim_sdk_instance
Definition: nim_qchat_helper.h:12
Definition: v2_nim_ai_service.hpp:4
static const char * NIM_SDK_NAME
Definition: v2_nim_internal.hpp:117
V2NIMClientAntispamUtilInternal * internalClientAntispamUtil
Definition: v2_nim_internal.hpp:37
V2NIMChatroomMessageUtilInternal * internalChatroomMessageUtil
Definition: v2_nim_internal.hpp:108
V2NIMChatroomSdkExport * internalChatroomSdkExport
Definition: v2_nim_api.hpp:425
V2NIMMessageUtilInternal * internalMessageUtil
Definition: v2_nim_internal.hpp:81
V2NIMConversationIdUtilInternal * internalConversationIdUtil
Definition: v2_nim_internal.hpp:48
@ V2_NIM_CHATROOM_MESSAGE_UTIL
Definition: v2_nim_internal.hpp:30
@ V2_NIM_CHATROOM_SDK_EXPORT
Definition: v2_nim_internal.hpp:29
@ V2_NIM_INTERNEL_INSTANCE
Definition: v2_nim_internal.hpp:23
@ V2_NIM_INTERNEL_CONVERSATION_ID_UTIL
Definition: v2_nim_internal.hpp:25
@ V2_NIM_INTERNEL_CLIENT_ANTI_SPAM_UTIL
Definition: v2_nim_internal.hpp:24
@ V2_NIM_INTERNEL_MESSAGE_UTIL
Definition: v2_nim_internal.hpp:26
static const char * NIM_CHATROOM_SDK_NAME
Definition: v2_nim_internal.hpp:118
Definition: ne_stl_bind.h:132
Definition: ne_stl_continuous_container.h:15
Definition: ne_stl_optional.h:16
Definition: ne_stl_smart_ptr.h:30
Definition: ne_stl_string.h:19
AI 数字人服务
Definition: v2_nim_ai_service.hpp:15
Definition: v2_nim_api.hpp:29
virtual nstd::optional< V2NIMError > initImpl(const V2NIMInitOption &option)=0
virtual V2NIMConversationService & getConversationService() const =0
获取会话服务
virtual V2NIMSettingService & getSettingService() const =0
获取设置服务
virtual V2NIMLoginService & getLoginService() const =0
获取登录服务
nstd::optional< V2NIMError > uninit()
反初始化
Definition: v2_nim_api.hpp:83
nstd::optional< V2NIMError > init(const V2NIMInitOption &option)
初始化
Definition: v2_nim_api.hpp:54
virtual nstd::optional< V2NIMError > uninitImpl()=0
static V2NIMClient & get()
获取 IM 客户端实例
Definition: v2_nim_api.hpp:428
virtual V2NIMUserService & getUserService() const =0
获取用户资料服务
virtual V2NIMSignallingService & getSignallingService() const =0
获取信令服务
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 V2NIMAIService & getAIService() const =0
获取 AI 服务
virtual V2NIMSubscriptionService & getSubscriptionService() const =0
获取订阅服务
virtual V2NIMTeamService & getTeamService() const =0
获取群组服务
Definition: v2_nim_api.hpp:203
virtual V2NIMStorageService & getStorageService()=0
获取存储服务
virtual void removeChatroomClientListener(V2NIMChatroomClientListener listener)=0
移除聊天室实例监听器
static nstd::shared_ptr< V2NIMChatroomClient > getInstance(uint32_t instanceId)
获取聊天室客户端实例
Definition: v2_nim_api.hpp:486
static nstd::vector< nstd::shared_ptr< V2NIMChatroomClient > > getInstanceList()
获取聊天室实例列表
Definition: v2_nim_api.hpp:493
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:500
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:479
static nstd::optional< V2NIMError > init(const V2NIMInitOption &option)
初始化
Definition: v2_nim_api.hpp:448
virtual ~V2NIMChatroomClient()=default
static nstd::shared_ptr< V2NIMChatroomClient > newInstance()
创建聊天室客户端实例
Definition: v2_nim_api.hpp:472
static void uninit()
反初始化
Definition: v2_nim_api.hpp:465
Definition: v2_nim_api.hpp:415
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_chatroom_service.hpp:17
会话分组服务
Definition: v2_nim_conversation_group_service.hpp:14
会话服务
Definition: v2_nim_conversation_service.hpp:15
通用成功
Definition: v2_nim_def_callback.hpp:7
Definition: v2_nim_def_callback.hpp:204
Definition: v2_nim_def_struct.hpp:117
Definition: v2_nim_def_struct.hpp:1734
Definition: v2_nim_def_struct.hpp:1763
好友服务
Definition: v2_nim_friend_service.hpp:14
Definition: v2_nim_internal.hpp:33
Definition: v2_nim_internal.hpp:40
Definition: v2_nim_internal.hpp:51
Definition: v2_nim_internal.hpp:84
登录服务
Definition: v2_nim_login_service.hpp:14
消息服务
Definition: v2_nim_message_service.hpp:14
通知服务
Definition: v2_nim_notification_service.hpp:14
通知服务
Definition: v2_nim_setting_service.hpp:14
信令服务
Definition: v2_nim_signalling_service.hpp:17
存储服务
Definition: v2_nim_storage_service.hpp:14
Definition: v2_nim_subscription_service.hpp:8
群组服务
Definition: v2_nim_team_service.hpp:15
用户资料服务
Definition: v2_nim_user_service.hpp:14
SDK库辅助类,提供加载/卸载SDK库以及获取接口的方法
Definition: nim_sdk_util.h:38
void UnLoadSdkDll()
Definition: nim_sdk_util.cpp:62