diff --git a/c/src/test.c b/c/src/test.c index aabdc09..fa7aa0d 100644 --- a/c/src/test.c +++ b/c/src/test.c @@ -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); diff --git a/scripts/openimsdkcc.h b/cpp/include/libopenimsdkcc.h similarity index 97% rename from scripts/openimsdkcc.h rename to cpp/include/libopenimsdkcc.h index 12dcc89..4f97ea2 100644 --- a/scripts/openimsdkcc.h +++ b/cpp/include/libopenimsdkcc.h @@ -1,6 +1,6 @@ #pragma once -#include "openimsdk.h" +#include "libopenimsdk.h" #include #include #include @@ -145,7 +145,8 @@ public: void GetAdvancedHistoryMessageList(const std::function& getAdvancedHistoryCallback , const std::string& operationID, const std::string& getMessageOptions); // send message - void SendMessage(const std::function& 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& 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& callback, const std::string& operationID, const std::string& removeUserID); + // set friends ex + void SetFriendsEx(const std::function& callback, + const std::string& operationID, const std::string& friendIDs,const std::string& ex); + // // =====================================================group=============================================== // // @@ -234,7 +239,7 @@ public: void CreateGroup(const std::function& callback, const std::string& operationID, const std::string& groupReqInfo); // join group - void JoinGroup(const std::function& callback, const std::string& operationID, const std::string& groupID, const std::string& reqMsg, int joinSource); + void JoinGroup(const std::function& 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& callback, const std::string& operationID, const std::string& groupID); diff --git a/scripts/wrapp_cpp_function.inc b/cpp/include/wrapp_cpp_function.inc similarity index 94% rename from scripts/wrapp_cpp_function.inc rename to cpp/include/wrapp_cpp_function.inc index 7a615b8..61e1f92 100644 --- a/scripts/wrapp_cpp_function.inc +++ b/cpp/include/wrapp_cpp_function.inc @@ -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 diff --git a/scripts/openimsdkcc.cc b/cpp/src/libopenimsdkcc.cc similarity index 97% rename from scripts/openimsdkcc.cc rename to cpp/src/libopenimsdkcc.cc index 9d66546..c47cb85 100644 --- a/scripts/openimsdkcc.cc +++ b/cpp/src/libopenimsdkcc.cc @@ -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& 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& 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(operationID.c_str()); char* message_cs=const_cast(message.c_str()); char* recvID_cs=const_cast(recvID.c_str()); char* groupID_cs=const_cast(groupID.c_str()); char* offlinePushInfo_cs=const_cast(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& callback,const std::string& operationID, const std::string& userIDs) +void OpenIMManager::AddBlack(const std::function& callback,const std::string& operationID, const std::string& userIDs,const std::string& ex) { char* operationID_cs=const_cast(operationID.c_str()); char* userIDs_cs=const_cast(userIDs.c_str()); - add_black(_wrapper_callonce_cpp_function(callback),operationID_cs,userIDs_cs); + char* ex_cs = const_cast(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& callback, const std::string& operationID,const std::string& friendIDs, const std::string& ex) +{ + char* operationID_cs=const_cast(operationID.c_str()); + char* friendIDs_cs=const_cast(friendIDs.c_str()); + char* ex_cs=const_cast(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& callback, const std::string& operationID, const std::string& groupID, const std::string& reqMsg, int joinSource) +void OpenIMManager::JoinGroup(const std::function& callback, + const std::string& operationID, const std::string& groupID, const std::string& reqMsg, int joinSource,const std::string& ex) { char* operationID_cs=const_cast(operationID.c_str()); char* groupID_cs=const_cast(groupID.c_str()); char* reqMsg_cs=const_cast(reqMsg.c_str()); - join_group(_wrapper_callonce_cpp_function(callback),operationID_cs,groupID_cs,reqMsg_cs,joinSource); + char* ex_cs = const_cast(ex.c_str()); + join_group(_wrapper_callonce_cpp_function(callback),operationID_cs,groupID_cs,reqMsg_cs,joinSource,ex_cs); } // quit group diff --git a/go/export.go b/go/export.go index 58066b2..6820793 100644 --- a/go/export.go +++ b/go/export.go @@ -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 //