Merge pull request #11 from FGadvancer/main

refactor: change cpp structure.
dev_1
OpenIM-Gordon 1 year ago committed by GitHub
commit 8c78e767d8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 2
      c/src/test.c
  2. 11
      cpp/include/libopenimsdkcc.h
  3. 10
      cpp/include/wrapp_cpp_function.inc
  4. 31
      cpp/src/libopenimsdkcc.cc
  5. 12
      go/export.go

@ -56,7 +56,7 @@ int main(int argc, char **argv)
printf("return :%s\n",loginUserID);
char operationID1[] = "12345,create";
char *message = create_text_message(operationID1, "哈哈");
char *message = create_text_message(operationID1, "hello");
printf("return :%s\n",message);
char operationID2[] = "12345,get_all_conversation_list";
get_all_conversation_list(c_base_callback, operationID2);

@ -1,6 +1,6 @@
#pragma once
#include "openimsdk.h"
#include "libopenimsdk.h"
#include <functional>
#include <string>
#include <memory>
@ -145,7 +145,8 @@ public:
void GetAdvancedHistoryMessageList(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& getAdvancedHistoryCallback , const std::string& operationID, const std::string& getMessageOptions);
// send message
void SendMessage(const std::function<void(const std::string&, int, const std::string&, const std::string&, int)>& callback, const std::string& operationID, const std::string& message, const std::string& recvID, const std::string& groupID, const std::string& offlinePushInfo);
void SendMessage(const std::function<void(const std::string&, int, const std::string&, const std::string&, int)>& callback, const std::string& operationID,
const std::string& message, const std::string& recvID, const std::string& groupID, const std::string& offlinePushInfo,bool isOnlineOnly);
// // =====================================================user===============================================
// //
@ -226,6 +227,10 @@ public:
// remove black
void RemoveBlack(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& removeUserID);
// set friends ex
void SetFriendsEx(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback,
const std::string& operationID, const std::string& friendIDs,const std::string& ex);
// // =====================================================group===============================================
// //
@ -234,7 +239,7 @@ public:
void CreateGroup(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& groupReqInfo);
// join group
void JoinGroup(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& groupID, const std::string& reqMsg, int joinSource);
void JoinGroup(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& groupID, const std::string& reqMsg, int joinSource,const std::string& ex);
// quit group
void QuitGroup(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& groupID);

@ -1,3 +1,13 @@
/*
Using C++ template functions and recursion to initialize a function pointer pool,
combined with lambda expressions, this implementation manages function pointers,
achieving acquisition and release of pointers.All wrappers are used to convert
and map C++ functions to C functions, and with the use of indexed locking,
a thread-safe function pointer pool is implemented.For example, the wrapping
functions essentially map C++ functions to C functions. When a C function callback is triggered,
the function pointer pool, initialized through template recursion, locates the corresponding C++ function and invokes it.
*/
#define MAX_NUM_OF_CB_S 10
#define MAX_NUM_OF_CB_I_S 10
#define MAX_NUM_OF_CB_S_I_S_S 10

@ -1,6 +1,6 @@
#include "openimsdkcc.h"
#include "../include/libopenimsdk.h"
#include "wrapp_cpp_function.inc"
#include "../include/wrapp_cpp_function.inc"
namespace openim {
@ -407,14 +407,16 @@ void OpenIMManager::GetAdvancedHistoryMessageList(const std::function<void(const
}
// send message
void SendMessage(const std::function<void(const std::string&, int, const std::string&, const std::string&,int)>& sendMessageCallback, const std::string& operationID, const std::string& message,const std::string& recvID,const std::string& groupID,const std::string& offlinePushInfo)
void SendMessage(const std::function<void(const std::string&, int, const std::string&, const std::string&,int)>& sendMessageCallback,
const std::string& operationID, const std::string& message,const std::string& recvID,const std::string& groupID,const std::string& offlinePushInfo,bool isOnlineOnly)
{
char* operationID_cs=const_cast<char*>(operationID.c_str());
char* message_cs=const_cast<char*>(message.c_str());
char* recvID_cs=const_cast<char*>(recvID.c_str());
char* groupID_cs=const_cast<char*>(groupID.c_str());
char* offlinePushInfo_cs=const_cast<char*>(offlinePushInfo.c_str());
send_message(_wrapper_callonce_cpp_function(sendMessageCallback),operationID_cs,message_cs,recvID_cs,groupID_cs,offlinePushInfo_cs);
int isOnlineOnly_c = isOnlineOnly ? 1 : 0;
send_message(_wrapper_callonce_cpp_function(sendMessageCallback),operationID_cs,message_cs,recvID_cs,groupID_cs,offlinePushInfo_cs,isOnlineOnly_c);
}
// // ===================================================== user ===============================================
@ -588,11 +590,13 @@ void OpenIMManager::RefuseFriendApplication(const std::function<void(const std::
}
// add black
void OpenIMManager::AddBlack(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback,const std::string& operationID, const std::string& userIDs)
void OpenIMManager::AddBlack(const std::function<void(const std::string&, int, const std::string&,
const std::string&)>& callback,const std::string& operationID, const std::string& userIDs,const std::string& ex)
{
char* operationID_cs=const_cast<char*>(operationID.c_str());
char* userIDs_cs=const_cast<char*>(userIDs.c_str());
add_black(_wrapper_callonce_cpp_function(callback),operationID_cs,userIDs_cs);
char* ex_cs = const_cast<char*>(ex.c_str());
add_black(_wrapper_callonce_cpp_function(callback),operationID_cs,userIDs_cs,ex_cs);
}
// get black list
@ -610,6 +614,15 @@ void OpenIMManager::RemoveBlack(const std::function<void(const std::string&, int
remove_black(_wrapper_callonce_cpp_function(callback),operationID_cs,userIDs_cs);
}
// set friends ex
void OpenIMManager::SetFriendsEx(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID,const std::string& friendIDs, const std::string& ex)
{
char* operationID_cs=const_cast<char*>(operationID.c_str());
char* friendIDs_cs=const_cast<char*>(friendIDs.c_str());
char* ex_cs=const_cast<char*>(ex.c_str());
set_friends_ex(_wrapper_callonce_cpp_function(callback),operationID_cs,friendIDs_cs,ex_cs);
}
// // ===================================================== group ===============================================
// //
@ -622,12 +635,14 @@ void OpenIMManager::CreateGroup(const std::function<void(const std::string&, int
}
// join group
void OpenIMManager::JoinGroup(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& groupID, const std::string& reqMsg, int joinSource)
void OpenIMManager::JoinGroup(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback,
const std::string& operationID, const std::string& groupID, const std::string& reqMsg, int joinSource,const std::string& ex)
{
char* operationID_cs=const_cast<char*>(operationID.c_str());
char* groupID_cs=const_cast<char*>(groupID.c_str());
char* reqMsg_cs=const_cast<char*>(reqMsg.c_str());
join_group(_wrapper_callonce_cpp_function(callback),operationID_cs,groupID_cs,reqMsg_cs,joinSource);
char* ex_cs = const_cast<char*>(ex.c_str());
join_group(_wrapper_callonce_cpp_function(callback),operationID_cs,groupID_cs,reqMsg_cs,joinSource,ex_cs);
}
// quit group

@ -594,6 +594,12 @@ func set_conversation_is_msg_destruct(cCallback C.CB_S_I_S_S, operationID *C.cha
open_im_sdk.SetConversationIsMsgDestruct(baseCallback, C.GoString(operationID), C.GoString(conversationID), parseBool(int(isMsgDestruct)))
}
//export set_conversation_ex
func set_conversation_ex(cCallback C.CB_S_I_S_S, operationID *C.char, conversationID *C.char, ex *C.char) {
baseCallback := NewBaseCallback(cCallback, operationID)
open_im_sdk.SetConversationEx(baseCallback, C.GoString(operationID), C.GoString(conversationID), C.GoString(ex))
}
//export hide_conversation
func hide_conversation(cCallback C.CB_S_I_S_S, operationID *C.char, conversationID *C.char) {
baseCallback := NewBaseCallback(cCallback, operationID)
@ -935,6 +941,12 @@ func remove_black(cCallback C.CB_S_I_S_S, operationID *C.char, removeUserID *C.c
open_im_sdk.RemoveBlack(baseCallback, C.GoString(operationID), C.GoString(removeUserID))
}
//export set_friends_ex
func set_friends_ex(cCallback C.CB_S_I_S_S, operationID, friendIDs, ex *C.char) {
baseCallback := NewBaseCallback(cCallback, operationID)
open_im_sdk.SetFriendsEx(baseCallback, C.GoString(operationID), C.GoString(friendIDs), ex)
}
// =====================================================group===============================================
// CreateGroup creates a group
//

Loading…
Cancel
Save