From c4fafedebfbcd39abbbffff0c945e8c54065b556 Mon Sep 17 00:00:00 2001 From: Gordon <46924906+FGadvancer@users.noreply.github.com> Date: Mon, 11 Sep 2023 13:28:22 +0800 Subject: [PATCH] fix: provide the corresponding relationship when the function is called asynchronously. Signed-off-by: Gordon <46924906+FGadvancer@users.noreply.github.com> --- c_wrapper/export.go | 326 +++++++++++++++++++++--------------------- c_wrapper/protocol.go | 19 +-- 2 files changed, 175 insertions(+), 170 deletions(-) diff --git a/c_wrapper/export.go b/c_wrapper/export.go index dc19ea4..34ef672 100644 --- a/c_wrapper/export.go +++ b/c_wrapper/export.go @@ -3,11 +3,11 @@ package main /* #include typedef void (*CB_I_S)(int,char *); -typedef void (*CB_I_S_S)(int,char *,char *); -typedef void (*CB_I_S_S_I)(int,char *,char *,int); +typedef void (*CB_S_I_S_S)(char *,int,char *,char *); +typedef void (*CB_S_I_S_S_I)(char *,int,char *,char *,int); extern void Call_CB_I_S(CB_I_S func,int event,char* data); -extern void Call_CB_I_S_S(CB_I_S_S func,int errCode,char* errMsg,char* data); -extern void Call_CB_I_S_S_I(CB_I_S_S_I func,int errCode,char* errMsg,char* data,int progress); +extern void Call_CB_S_I_S_S(CB_S_I_S_S func,char *,int errCode,char* errMsg,char* data); +extern void Call_CB_S_I_S_S_I(CB_S_I_S_S_I func,char *,int errCode,char* errMsg,char* data,int progress); */ import "C" @@ -50,39 +50,41 @@ func (c ConnCallback) OnUserTokenExpired() { } type SendMessageCallback struct { - cCallback C.CB_I_S_S_I + cCallback C.CB_S_I_S_S_I + operationID *C.char } -func NewSendMessageCallback(cCallback C.CB_I_S_S_I) *SendMessageCallback { - return &SendMessageCallback{cCallback: cCallback} +func NewSendMessageCallback(cCallback C.CB_S_I_S_S_I, operationID *C.char) *SendMessageCallback { + return &SendMessageCallback{cCallback: cCallback, operationID: operationID} } func (s SendMessageCallback) OnError(errCode int32, errMsg string) { - C.Call_CB_I_S_S_I(s.cCallback, C.int(errCode), C.CString(errMsg), NO_DATA, NO_PROGRESS) + C.Call_CB_S_I_S_S_I(s.cCallback, s.operationID, C.int(errCode), C.CString(errMsg), NO_DATA, NO_PROGRESS) } func (s SendMessageCallback) OnSuccess(data string) { - C.Call_CB_I_S_S_I(s.cCallback, NO_ERR, NO_ERR_MSG, C.CString(data), NO_PROGRESS) + C.Call_CB_S_I_S_S_I(s.cCallback, s.operationID, NO_ERR, NO_ERR_MSG, C.CString(data), NO_PROGRESS) } func (s SendMessageCallback) OnProgress(progress int) { - C.Call_CB_I_S_S_I(s.cCallback, NO_ERR, NO_ERR_MSG, NO_DATA, C.int(progress)) + C.Call_CB_S_I_S_S_I(s.cCallback, s.operationID, NO_ERR, NO_ERR_MSG, NO_DATA, C.int(progress)) } type BaseCallback struct { - cCallback C.CB_I_S_S + cCallback C.CB_S_I_S_S + operationID *C.char } -func NewBaseCallback(cCallback C.CB_I_S_S) *BaseCallback { - return &BaseCallback{cCallback: cCallback} +func NewBaseCallback(cCallback C.CB_S_I_S_S, operationID *C.char) *BaseCallback { + return &BaseCallback{cCallback: cCallback, operationID: operationID} } func (b BaseCallback) OnError(errCode int32, errMsg string) { - C.Call_CB_I_S_S(b.cCallback, C.int(errCode), C.CString(errMsg), NO_DATA) + C.Call_CB_S_I_S_S(b.cCallback, b.operationID, C.int(errCode), C.CString(errMsg), NO_DATA) } func (b BaseCallback) OnSuccess(data string) { - C.Call_CB_I_S_S(b.cCallback, NO_ERR, NO_ERR_MSG, C.CString(data)) + C.Call_CB_S_I_S_S(b.cCallback, b.operationID, NO_ERR, NO_ERR_MSG, C.CString(data)) } //export init_sdk @@ -99,20 +101,20 @@ func un_init_sdk(operationID *C.char) { } //export login -func login(cCallback C.CB_I_S_S, operationID, uid, token *C.char) { - baseCallback := NewBaseCallback(cCallback) +func login(cCallback C.CB_S_I_S_S, operationID, uid, token *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) open_im_sdk.Login(baseCallback, C.GoString(operationID), C.GoString(uid), C.GoString(token)) } //export logout -func logout(cCallback C.CB_I_S_S, operationID *C.char) { - baseCallback := NewBaseCallback(cCallback) +func logout(cCallback C.CB_S_I_S_S, operationID *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) open_im_sdk.Logout(baseCallback, C.GoString(operationID)) } //export network_status_changed -func network_status_changed(cCallback C.CB_I_S_S, operationID *C.char) { - baseCallback := NewBaseCallback(cCallback) +func network_status_changed(cCallback C.CB_S_I_S_S, operationID *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) open_im_sdk.NetworkStatusChanged(baseCallback, C.GoString(operationID)) } @@ -242,168 +244,168 @@ func create_forward_message(operationID, m *C.char) *C.char { } //export get_all_conversation_list -func get_all_conversation_list(cCallback C.CB_I_S_S, operationID *C.char) { - baseCallback := NewBaseCallback(cCallback) +func get_all_conversation_list(cCallback C.CB_S_I_S_S, operationID *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) open_im_sdk.GetAllConversationList(baseCallback, C.GoString(operationID)) } //export get_advanced_history_message_list -func get_advanced_history_message_list(cCallback C.CB_I_S_S, operationID, getMessageOptions *C.char) { - baseCallback := NewBaseCallback(cCallback) +func get_advanced_history_message_list(cCallback C.CB_S_I_S_S, operationID, getMessageOptions *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) open_im_sdk.GetAdvancedHistoryMessageList(baseCallback, C.GoString(operationID), C.GoString(getMessageOptions)) } //export send_message -func send_message(cCallback C.CB_I_S_S_I, operationID, message, recvID, groupID, offlinePushInfo *C.char) { - sendMsgCallback := NewSendMessageCallback(cCallback) +func send_message(cCallback C.CB_S_I_S_S_I, operationID, message, recvID, groupID, offlinePushInfo *C.char) { + sendMsgCallback := NewSendMessageCallback(cCallback, operationID) open_im_sdk.SendMessage(sendMsgCallback, C.GoString(operationID), C.GoString(message), C.GoString(recvID), C.GoString(groupID), C.GoString(offlinePushInfo)) } // =====================================================user=============================================== // //export get_users_info -func get_users_info(cCallback C.CB_I_S_S, operationID *C.char, userIDs *C.char) { - baseCallback := NewBaseCallback(cCallback) +func get_users_info(cCallback C.CB_S_I_S_S, operationID *C.char, userIDs *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) open_im_sdk.GetUsersInfo(baseCallback, C.GoString(operationID), C.GoString(userIDs)) } //export get_users_info_from_srv -func get_users_info_from_srv(cCallback C.CB_I_S_S, operationID *C.char, userIDs *C.char) { - baseCallback := NewBaseCallback(cCallback) +func get_users_info_from_srv(cCallback C.CB_S_I_S_S, operationID *C.char, userIDs *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) open_im_sdk.GetUsersInfoFromSrv(baseCallback, C.GoString(operationID), C.GoString(userIDs)) } //export set_self_info -func set_self_info(cCallback C.CB_I_S_S, operationID *C.char, userInfo *C.char) { - baseCallback := NewBaseCallback(cCallback) +func set_self_info(cCallback C.CB_S_I_S_S, operationID *C.char, userInfo *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) open_im_sdk.SetSelfInfo(baseCallback, C.GoString(operationID), C.GoString(userInfo)) } //export get_self_user_info -func get_self_user_info(cCallback C.CB_I_S_S, operationID *C.char) { - baseCallback := NewBaseCallback(cCallback) +func get_self_user_info(cCallback C.CB_S_I_S_S, operationID *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) open_im_sdk.GetSelfUserInfo(baseCallback, C.GoString(operationID)) } //export update_msg_sender_info -func update_msg_sender_info(cCallback C.CB_I_S_S, operationID *C.char, nickname *C.char, faceURL *C.char) { - baseCallback := NewBaseCallback(cCallback) +func update_msg_sender_info(cCallback C.CB_S_I_S_S, operationID *C.char, nickname *C.char, faceURL *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) open_im_sdk.UpdateMsgSenderInfo(baseCallback, C.GoString(operationID), C.GoString(nickname), C.GoString(faceURL)) } //export subscribe_users_status -func subscribe_users_status(cCallback C.CB_I_S_S, operationID *C.char, userIDs *C.char) { - baseCallback := NewBaseCallback(cCallback) +func subscribe_users_status(cCallback C.CB_S_I_S_S, operationID *C.char, userIDs *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) open_im_sdk.SubscribeUsersStatus(baseCallback, C.GoString(operationID), C.GoString(userIDs)) } //export unsubscribe_users_status -func unsubscribe_users_status(cCallback C.CB_I_S_S, operationID *C.char, userIDs *C.char) { - baseCallback := NewBaseCallback(cCallback) +func unsubscribe_users_status(cCallback C.CB_S_I_S_S, operationID *C.char, userIDs *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) open_im_sdk.UnsubscribeUsersStatus(baseCallback, C.GoString(operationID), C.GoString(userIDs)) } //export get_subscribe_users_status -func get_subscribe_users_status(cCallback C.CB_I_S_S, operationID *C.char) { - baseCallback := NewBaseCallback(cCallback) +func get_subscribe_users_status(cCallback C.CB_S_I_S_S, operationID *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) open_im_sdk.GetSubscribeUsersStatus(baseCallback, C.GoString(operationID)) } //export get_user_status -func get_user_status(cCallback C.CB_I_S_S, operationID *C.char, userIDs *C.char) { - baseCallback := NewBaseCallback(cCallback) +func get_user_status(cCallback C.CB_S_I_S_S, operationID *C.char, userIDs *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) open_im_sdk.GetUserStatus(baseCallback, C.GoString(operationID), C.GoString(userIDs)) } // =====================================================friend=============================================== // //export get_specified_friends_info -func get_specified_friends_info(cCallback C.CB_I_S_S, operationID *C.char, userIDList *C.char) { - baseCallback := NewBaseCallback(cCallback) +func get_specified_friends_info(cCallback C.CB_S_I_S_S, operationID *C.char, userIDList *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) open_im_sdk.GetSpecifiedFriendsInfo(baseCallback, C.GoString(operationID), C.GoString(userIDList)) } //export get_friend_list -func get_friend_list(cCallback C.CB_I_S_S, operationID *C.char) { - baseCallback := NewBaseCallback(cCallback) +func get_friend_list(cCallback C.CB_S_I_S_S, operationID *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) open_im_sdk.GetFriendList(baseCallback, C.GoString(operationID)) } //export get_friend_list_page -func get_friend_list_page(cCallback C.CB_I_S_S, operationID *C.char, offset C.int, count C.int) { - baseCallback := NewBaseCallback(cCallback) +func get_friend_list_page(cCallback C.CB_S_I_S_S, operationID *C.char, offset C.int, count C.int) { + baseCallback := NewBaseCallback(cCallback, operationID) open_im_sdk.GetFriendListPage(baseCallback, C.GoString(operationID), int32(offset), int32(count)) } //export search_friends -func search_friends(cCallback C.CB_I_S_S, operationID *C.char, searchParam *C.char) { - baseCallback := NewBaseCallback(cCallback) +func search_friends(cCallback C.CB_S_I_S_S, operationID *C.char, searchParam *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) open_im_sdk.SearchFriends(baseCallback, C.GoString(operationID), C.GoString(searchParam)) } //export check_friend -func check_friend(cCallback C.CB_I_S_S, operationID *C.char, userIDList *C.char) { - baseCallback := NewBaseCallback(cCallback) +func check_friend(cCallback C.CB_S_I_S_S, operationID *C.char, userIDList *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) open_im_sdk.CheckFriend(baseCallback, C.GoString(operationID), C.GoString(userIDList)) } //export add_friend -func add_friend(cCallback C.CB_I_S_S, operationID *C.char, userIDReqMsg *C.char) { - baseCallback := NewBaseCallback(cCallback) +func add_friend(cCallback C.CB_S_I_S_S, operationID *C.char, userIDReqMsg *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) open_im_sdk.AddFriend(baseCallback, C.GoString(operationID), C.GoString(userIDReqMsg)) } //export set_friend_remark -func set_friend_remark(cCallback C.CB_I_S_S, operationID *C.char, userIDRemark *C.char) { - baseCallback := NewBaseCallback(cCallback) +func set_friend_remark(cCallback C.CB_S_I_S_S, operationID *C.char, userIDRemark *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) open_im_sdk.SetFriendRemark(baseCallback, C.GoString(operationID), C.GoString(userIDRemark)) } //export delete_friend -func delete_friend(cCallback C.CB_I_S_S, operationID *C.char, friendUserID *C.char) { - baseCallback := NewBaseCallback(cCallback) +func delete_friend(cCallback C.CB_S_I_S_S, operationID *C.char, friendUserID *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) open_im_sdk.DeleteFriend(baseCallback, C.GoString(operationID), C.GoString(friendUserID)) } //export get_friend_application_list_as_recipient -func get_friend_application_list_as_recipient(cCallback C.CB_I_S_S, operationID *C.char) { - baseCallback := NewBaseCallback(cCallback) +func get_friend_application_list_as_recipient(cCallback C.CB_S_I_S_S, operationID *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) open_im_sdk.GetFriendApplicationListAsRecipient(baseCallback, C.GoString(operationID)) } //export get_friend_application_list_as_applicant -func get_friend_application_list_as_applicant(cCallback C.CB_I_S_S, operationID *C.char) { - baseCallback := NewBaseCallback(cCallback) +func get_friend_application_list_as_applicant(cCallback C.CB_S_I_S_S, operationID *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) open_im_sdk.GetFriendApplicationListAsApplicant(baseCallback, C.GoString(operationID)) } //export accept_friend_application -func accept_friend_application(cCallback C.CB_I_S_S, operationID *C.char, userIDHandleMsg *C.char) { - baseCallback := NewBaseCallback(cCallback) +func accept_friend_application(cCallback C.CB_S_I_S_S, operationID *C.char, userIDHandleMsg *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) open_im_sdk.AcceptFriendApplication(baseCallback, C.GoString(operationID), C.GoString(userIDHandleMsg)) } //export refuse_friend_application -func refuse_friend_application(cCallback C.CB_I_S_S, operationID *C.char, userIDHandleMsg *C.char) { - baseCallback := NewBaseCallback(cCallback) +func refuse_friend_application(cCallback C.CB_S_I_S_S, operationID *C.char, userIDHandleMsg *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) open_im_sdk.RefuseFriendApplication(baseCallback, C.GoString(operationID), C.GoString(userIDHandleMsg)) } //export add_black -func add_black(cCallback C.CB_I_S_S, operationID *C.char, blackUserID *C.char) { - baseCallback := NewBaseCallback(cCallback) +func add_black(cCallback C.CB_S_I_S_S, operationID *C.char, blackUserID *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) open_im_sdk.AddBlack(baseCallback, C.GoString(operationID), C.GoString(blackUserID)) } //export get_black_list -func get_black_list(cCallback C.CB_I_S_S, operationID *C.char) { - baseCallback := NewBaseCallback(cCallback) +func get_black_list(cCallback C.CB_S_I_S_S, operationID *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) open_im_sdk.GetBlackList(baseCallback, C.GoString(operationID)) } //export remove_black -func remove_black(cCallback C.CB_I_S_S, operationID *C.char, removeUserID *C.char) { - baseCallback := NewBaseCallback(cCallback) +func remove_black(cCallback C.CB_S_I_S_S, operationID *C.char, removeUserID *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) open_im_sdk.RemoveBlack(baseCallback, C.GoString(operationID), C.GoString(removeUserID)) } @@ -411,233 +413,233 @@ func remove_black(cCallback C.CB_I_S_S, operationID *C.char, removeUserID *C.cha // CreateGroup creates a group // //export create_group -func create_group(cCallback C.CB_I_S_S, cOperationID, cGroupReqInfo *C.char) { - baseCallback := NewBaseCallback(cCallback) - open_im_sdk.CreateGroup(baseCallback, C.GoString(cOperationID), C.GoString(cGroupReqInfo)) +func create_group(cCallback C.CB_S_I_S_S, operationID, cGroupReqInfo *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) + open_im_sdk.CreateGroup(baseCallback, C.GoString(operationID), C.GoString(cGroupReqInfo)) } // JoinGroup joins a group // //export join_group -func join_group(cCallback C.CB_I_S_S, cOperationID, cGroupID, cReqMsg *C.char, cJoinSource C.int) { - baseCallback := NewBaseCallback(cCallback) - open_im_sdk.JoinGroup(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), C.GoString(cReqMsg), int32(cJoinSource)) +func join_group(cCallback C.CB_S_I_S_S, operationID, cGroupID, cReqMsg *C.char, cJoinSource C.int) { + baseCallback := NewBaseCallback(cCallback, operationID) + open_im_sdk.JoinGroup(baseCallback, C.GoString(operationID), C.GoString(cGroupID), C.GoString(cReqMsg), int32(cJoinSource)) } // QuitGroup quits a group // //export quit_group -func quit_group(cCallback C.CB_I_S_S, cOperationID, cGroupID *C.char) { - baseCallback := NewBaseCallback(cCallback) - open_im_sdk.QuitGroup(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID)) +func quit_group(cCallback C.CB_S_I_S_S, operationID, cGroupID *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) + open_im_sdk.QuitGroup(baseCallback, C.GoString(operationID), C.GoString(cGroupID)) } // DismissGroup dismisses a group // //export dismiss_group -func dismiss_group(cCallback C.CB_I_S_S, cOperationID, cGroupID *C.char) { - baseCallback := NewBaseCallback(cCallback) - open_im_sdk.DismissGroup(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID)) +func dismiss_group(cCallback C.CB_S_I_S_S, operationID, cGroupID *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) + open_im_sdk.DismissGroup(baseCallback, C.GoString(operationID), C.GoString(cGroupID)) } // ChangeGroupMute changes the mute status of a group // //export change_group_mute -func change_group_mute(cCallback C.CB_I_S_S, cOperationID, cGroupID *C.char, cIsMute C.int) { - baseCallback := NewBaseCallback(cCallback) - open_im_sdk.ChangeGroupMute(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), parseBool(int(cIsMute))) +func change_group_mute(cCallback C.CB_S_I_S_S, operationID, cGroupID *C.char, cIsMute C.int) { + baseCallback := NewBaseCallback(cCallback, operationID) + open_im_sdk.ChangeGroupMute(baseCallback, C.GoString(operationID), C.GoString(cGroupID), parseBool(int(cIsMute))) } // ChangeGroupMemberMute changes the mute status of a group member // //export change_group_member_mute -func change_group_member_mute(cCallback C.CB_I_S_S, cOperationID, cGroupID, cUserID *C.char, cMutedSeconds C.int) { - baseCallback := NewBaseCallback(cCallback) - open_im_sdk.ChangeGroupMemberMute(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), C.GoString(cUserID), int(cMutedSeconds)) +func change_group_member_mute(cCallback C.CB_S_I_S_S, operationID, cGroupID, cUserID *C.char, cMutedSeconds C.int) { + baseCallback := NewBaseCallback(cCallback, operationID) + open_im_sdk.ChangeGroupMemberMute(baseCallback, C.GoString(operationID), C.GoString(cGroupID), C.GoString(cUserID), int(cMutedSeconds)) } // SetGroupMemberRoleLevel sets the role level of a group member // //export set_group_member_role_level -func set_group_member_role_level(cCallback C.CB_I_S_S, cOperationID, cGroupID, cUserID *C.char, cRoleLevel C.int) { - baseCallback := NewBaseCallback(cCallback) - open_im_sdk.SetGroupMemberRoleLevel(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), C.GoString(cUserID), int(cRoleLevel)) +func set_group_member_role_level(cCallback C.CB_S_I_S_S, operationID, cGroupID, cUserID *C.char, cRoleLevel C.int) { + baseCallback := NewBaseCallback(cCallback, operationID) + open_im_sdk.SetGroupMemberRoleLevel(baseCallback, C.GoString(operationID), C.GoString(cGroupID), C.GoString(cUserID), int(cRoleLevel)) } // SetGroupMemberInfo sets the information of a group member // //export set_group_member_info -func set_group_member_info(cCallback C.CB_I_S_S, cOperationID *C.char, cGroupMemberInfo *C.char) { - baseCallback := NewBaseCallback(cCallback) - open_im_sdk.SetGroupMemberInfo(baseCallback, C.GoString(cOperationID), C.GoString(cGroupMemberInfo)) +func set_group_member_info(cCallback C.CB_S_I_S_S, operationID *C.char, cGroupMemberInfo *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) + open_im_sdk.SetGroupMemberInfo(baseCallback, C.GoString(operationID), C.GoString(cGroupMemberInfo)) } // GetJoinedGroupList retrieves the list of joined groups // //export get_joined_group_list -func get_joined_group_list(cCallback C.CB_I_S_S, cOperationID *C.char) { - baseCallback := NewBaseCallback(cCallback) - open_im_sdk.GetJoinedGroupList(baseCallback, C.GoString(cOperationID)) +func get_joined_group_list(cCallback C.CB_S_I_S_S, operationID *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) + open_im_sdk.GetJoinedGroupList(baseCallback, C.GoString(operationID)) } // GetSpecifiedGroupsInfo retrieves the information of specified groups // //export get_specified_groups_info -func get_specified_groups_info(cCallback C.CB_I_S_S, cOperationID, cGroupIDList *C.char) { - baseCallback := NewBaseCallback(cCallback) - open_im_sdk.GetSpecifiedGroupsInfo(baseCallback, C.GoString(cOperationID), C.GoString(cGroupIDList)) +func get_specified_groups_info(cCallback C.CB_S_I_S_S, operationID, cGroupIDList *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) + open_im_sdk.GetSpecifiedGroupsInfo(baseCallback, C.GoString(operationID), C.GoString(cGroupIDList)) } // SearchGroups searches for groups // //export search_groups -func search_groups(cCallback C.CB_I_S_S, cOperationID, cSearchParam *C.char) { - baseCallback := NewBaseCallback(cCallback) - open_im_sdk.SearchGroups(baseCallback, C.GoString(cOperationID), C.GoString(cSearchParam)) +func search_groups(cCallback C.CB_S_I_S_S, operationID, cSearchParam *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) + open_im_sdk.SearchGroups(baseCallback, C.GoString(operationID), C.GoString(cSearchParam)) } // SetGroupInfo sets the information of a group // //export set_group_info -func set_group_info(cCallback C.CB_I_S_S, cOperationID, cGroupInfo *C.char) { - baseCallback := NewBaseCallback(cCallback) - open_im_sdk.SetGroupInfo(baseCallback, C.GoString(cOperationID), C.GoString(cGroupInfo)) +func set_group_info(cCallback C.CB_S_I_S_S, operationID, cGroupInfo *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) + open_im_sdk.SetGroupInfo(baseCallback, C.GoString(operationID), C.GoString(cGroupInfo)) } // SetGroupVerification sets the verification mode of a group // //export set_group_verification -func set_group_verification(cCallback C.CB_I_S_S, cOperationID, cGroupID *C.char, cVerification C.int) { - baseCallback := NewBaseCallback(cCallback) - open_im_sdk.SetGroupVerification(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), int32(cVerification)) +func set_group_verification(cCallback C.CB_S_I_S_S, operationID, cGroupID *C.char, cVerification C.int) { + baseCallback := NewBaseCallback(cCallback, operationID) + open_im_sdk.SetGroupVerification(baseCallback, C.GoString(operationID), C.GoString(cGroupID), int32(cVerification)) } // SetGroupLookMemberInfo sets the member information visibility of a group // //export set_group_look_member_info -func set_group_look_member_info(cCallback C.CB_I_S_S, cOperationID, cGroupID *C.char, cRule C.int) { - baseCallback := NewBaseCallback(cCallback) - open_im_sdk.SetGroupLookMemberInfo(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), int32(cRule)) +func set_group_look_member_info(cCallback C.CB_S_I_S_S, operationID, cGroupID *C.char, cRule C.int) { + baseCallback := NewBaseCallback(cCallback, operationID) + open_im_sdk.SetGroupLookMemberInfo(baseCallback, C.GoString(operationID), C.GoString(cGroupID), int32(cRule)) } // SetGroupApplyMemberFriend sets the friend rule for group applicants // //export set_group_apply_member_friend -func set_group_apply_member_friend(cCallback C.CB_I_S_S, cOperationID, cGroupID *C.char, cRule C.int) { - baseCallback := NewBaseCallback(cCallback) - open_im_sdk.SetGroupApplyMemberFriend(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), int32(cRule)) +func set_group_apply_member_friend(cCallback C.CB_S_I_S_S, operationID, cGroupID *C.char, cRule C.int) { + baseCallback := NewBaseCallback(cCallback, operationID) + open_im_sdk.SetGroupApplyMemberFriend(baseCallback, C.GoString(operationID), C.GoString(cGroupID), int32(cRule)) } // GetGroupMemberList retrieves the list of group members // //export get_group_member_list -func get_group_member_list(cCallback C.CB_I_S_S, cOperationID, cGroupID *C.char, cFilter, cOffset, cCount C.int) { - baseCallback := NewBaseCallback(cCallback) - open_im_sdk.GetGroupMemberList(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), int32(cFilter), int32(cOffset), int32(cCount)) +func get_group_member_list(cCallback C.CB_S_I_S_S, operationID, cGroupID *C.char, cFilter, cOffset, cCount C.int) { + baseCallback := NewBaseCallback(cCallback, operationID) + open_im_sdk.GetGroupMemberList(baseCallback, C.GoString(operationID), C.GoString(cGroupID), int32(cFilter), int32(cOffset), int32(cCount)) } // GetGroupMemberOwnerAndAdmin retrieves the owner and admin members of a group // //export get_group_member_owner_and_admin -func get_group_member_owner_and_admin(cCallback C.CB_I_S_S, cOperationID, cGroupID *C.char) { - baseCallback := NewBaseCallback(cCallback) - open_im_sdk.GetGroupMemberOwnerAndAdmin(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID)) +func get_group_member_owner_and_admin(cCallback C.CB_S_I_S_S, operationID, cGroupID *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) + open_im_sdk.GetGroupMemberOwnerAndAdmin(baseCallback, C.GoString(operationID), C.GoString(cGroupID)) } // GetGroupMemberListByJoinTimeFilter retrieves the list of group members filtered by join time // //export get_group_member_list_by_join_time_filter -func get_group_member_list_by_join_time_filter(cCallback C.CB_I_S_S, cOperationID, cGroupID *C.char, cOffset, cCount C.int, cJoinTimeBegin, cJoinTimeEnd C.longlong, cFilterUserIDList *C.char) { - baseCallback := NewBaseCallback(cCallback) - open_im_sdk.GetGroupMemberListByJoinTimeFilter(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), int32(cOffset), int32(cCount), int64(cJoinTimeBegin), int64(cJoinTimeEnd), C.GoString(cFilterUserIDList)) +func get_group_member_list_by_join_time_filter(cCallback C.CB_S_I_S_S, operationID, cGroupID *C.char, cOffset, cCount C.int, cJoinTimeBegin, cJoinTimeEnd C.longlong, cFilterUserIDList *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) + open_im_sdk.GetGroupMemberListByJoinTimeFilter(baseCallback, C.GoString(operationID), C.GoString(cGroupID), int32(cOffset), int32(cCount), int64(cJoinTimeBegin), int64(cJoinTimeEnd), C.GoString(cFilterUserIDList)) } // GetSpecifiedGroupMembersInfo retrieves the information of specified group members // //export get_specified_group_members_info -func get_specified_group_members_info(cCallback C.CB_I_S_S, cOperationID, cGroupID, cUserIDList *C.char) { - baseCallback := NewBaseCallback(cCallback) - open_im_sdk.GetSpecifiedGroupMembersInfo(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), C.GoString(cUserIDList)) +func get_specified_group_members_info(cCallback C.CB_S_I_S_S, operationID, cGroupID, cUserIDList *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) + open_im_sdk.GetSpecifiedGroupMembersInfo(baseCallback, C.GoString(operationID), C.GoString(cGroupID), C.GoString(cUserIDList)) } // KickGroupMember kicks group members // //export kick_group_member -func kick_group_member(cCallback C.CB_I_S_S, cOperationID, cGroupID, cReason, cUserIDList *C.char) { - baseCallback := NewBaseCallback(cCallback) - open_im_sdk.KickGroupMember(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), C.GoString(cReason), C.GoString(cUserIDList)) +func kick_group_member(cCallback C.CB_S_I_S_S, operationID, cGroupID, cReason, cUserIDList *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) + open_im_sdk.KickGroupMember(baseCallback, C.GoString(operationID), C.GoString(cGroupID), C.GoString(cReason), C.GoString(cUserIDList)) } // TransferGroupOwner transfers the ownership of a group // //export transfer_group_owner -func transfer_group_owner(cCallback C.CB_I_S_S, cOperationID, cGroupID, cNewOwnerUserID *C.char) { - baseCallback := NewBaseCallback(cCallback) - open_im_sdk.TransferGroupOwner(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), C.GoString(cNewOwnerUserID)) +func transfer_group_owner(cCallback C.CB_S_I_S_S, operationID, cGroupID, cNewOwnerUserID *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) + open_im_sdk.TransferGroupOwner(baseCallback, C.GoString(operationID), C.GoString(cGroupID), C.GoString(cNewOwnerUserID)) } // InviteUserToGroup invites users to a group // //export invite_user_to_group -func invite_user_to_group(cCallback C.CB_I_S_S, cOperationID, cGroupID, cReason, cUserIDList *C.char) { - baseCallback := NewBaseCallback(cCallback) - open_im_sdk.InviteUserToGroup(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), C.GoString(cReason), C.GoString(cUserIDList)) +func invite_user_to_group(cCallback C.CB_S_I_S_S, operationID, cGroupID, cReason, cUserIDList *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) + open_im_sdk.InviteUserToGroup(baseCallback, C.GoString(operationID), C.GoString(cGroupID), C.GoString(cReason), C.GoString(cUserIDList)) } // GetGroupApplicationListAsRecipient retrieves the group application list as a recipient // //export get_group_application_list_as_recipient -func get_group_application_list_as_recipient(cCallback C.CB_I_S_S, cOperationID *C.char) { - baseCallback := NewBaseCallback(cCallback) - open_im_sdk.GetGroupApplicationListAsRecipient(baseCallback, C.GoString(cOperationID)) +func get_group_application_list_as_recipient(cCallback C.CB_S_I_S_S, operationID *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) + open_im_sdk.GetGroupApplicationListAsRecipient(baseCallback, C.GoString(operationID)) } // GetGroupApplicationListAsApplicant retrieves the group application list as an applicant // //export get_group_application_list_as_applicant -func get_group_application_list_as_applicant(cCallback C.CB_I_S_S, cOperationID *C.char) { - baseCallback := NewBaseCallback(cCallback) - open_im_sdk.GetGroupApplicationListAsApplicant(baseCallback, C.GoString(cOperationID)) +func get_group_application_list_as_applicant(cCallback C.CB_S_I_S_S, operationID *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) + open_im_sdk.GetGroupApplicationListAsApplicant(baseCallback, C.GoString(operationID)) } // AcceptGroupApplication accepts a group application // //export accept_group_application -func accept_group_application(cCallback C.CB_I_S_S, cOperationID, cGroupID, cFromUserID, cHandleMsg *C.char) { - baseCallback := NewBaseCallback(cCallback) - open_im_sdk.AcceptGroupApplication(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), C.GoString(cFromUserID), C.GoString(cHandleMsg)) +func accept_group_application(cCallback C.CB_S_I_S_S, operationID, cGroupID, cFromUserID, cHandleMsg *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) + open_im_sdk.AcceptGroupApplication(baseCallback, C.GoString(operationID), C.GoString(cGroupID), C.GoString(cFromUserID), C.GoString(cHandleMsg)) } // RefuseGroupApplication refuses a group application // //export refuse_group_application -func refuse_group_application(cCallback C.CB_I_S_S, cOperationID, cGroupID, cFromUserID, cHandleMsg *C.char) { - baseCallback := NewBaseCallback(cCallback) - open_im_sdk.RefuseGroupApplication(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), C.GoString(cFromUserID), C.GoString(cHandleMsg)) +func refuse_group_application(cCallback C.CB_S_I_S_S, operationID, cGroupID, cFromUserID, cHandleMsg *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) + open_im_sdk.RefuseGroupApplication(baseCallback, C.GoString(operationID), C.GoString(cGroupID), C.GoString(cFromUserID), C.GoString(cHandleMsg)) } // SetGroupMemberNickname sets the nickname of a group member // //export set_group_member_nickname -func set_group_member_nickname(cCallback C.CB_I_S_S, cOperationID, cGroupID, cUserID, cGroupMemberNickname *C.char) { - baseCallback := NewBaseCallback(cCallback) - open_im_sdk.SetGroupMemberNickname(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), C.GoString(cUserID), C.GoString(cGroupMemberNickname)) +func set_group_member_nickname(cCallback C.CB_S_I_S_S, operationID, cGroupID, cUserID, cGroupMemberNickname *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) + open_im_sdk.SetGroupMemberNickname(baseCallback, C.GoString(operationID), C.GoString(cGroupID), C.GoString(cUserID), C.GoString(cGroupMemberNickname)) } // SearchGroupMembers searches for group members // //export search_group_members -func search_group_members(cCallback C.CB_I_S_S, cOperationID, cSearchParam *C.char) { - baseCallback := NewBaseCallback(cCallback) - open_im_sdk.SearchGroupMembers(baseCallback, C.GoString(cOperationID), C.GoString(cSearchParam)) +func search_group_members(cCallback C.CB_S_I_S_S, operationID, cSearchParam *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) + open_im_sdk.SearchGroupMembers(baseCallback, C.GoString(operationID), C.GoString(cSearchParam)) } // IsJoinGroup checks if the user has joined a group // //export is_join_group -func is_join_group(cCallback C.CB_I_S_S, cOperationID, cGroupID *C.char) { - baseCallback := NewBaseCallback(cCallback) - open_im_sdk.IsJoinGroup(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID)) +func is_join_group(cCallback C.CB_S_I_S_S, operationID, cGroupID *C.char) { + baseCallback := NewBaseCallback(cCallback, operationID) + open_im_sdk.IsJoinGroup(baseCallback, C.GoString(operationID), C.GoString(cGroupID)) } func main() { diff --git a/c_wrapper/protocol.go b/c_wrapper/protocol.go index 55b6455..8e13b6b 100644 --- a/c_wrapper/protocol.go +++ b/c_wrapper/protocol.go @@ -2,24 +2,27 @@ package main /* #include +#include typedef void (*CB_I_S)(int,char *); -typedef void (*CB_I_S_S)(int,char *,char *); -typedef void (*CB_I_S_S_I)(int,char *,char *,int); +typedef void (*CB_S_I_S_S)(char *,int,char *,char *); +typedef void (*CB_S_I_S_S_I)(char *,int,char *,char *,int); void Call_CB_I_S(CB_I_S func,int event,char* data) { func(event,data); free(data); } -void Call_CB_I_S_S(CB_I_S_S func,int errCode,char* errMsg,char* data) +void Call_CB_S_I_S_S(CB_S_I_S_S func,char* operationID, int errCode,char* errMsg,char* data) { - func(errCode,errMsg,data); - free(errMsg,data); + func(operationID,errCode,errMsg,data); + free(errMsg); + free(data); } -void Call_CB_I_S_S_I(CB_I_S_S_I func,int errCode,char* errMsg,char* data,int progress) +void Call_CB_S_I_S_S_I(CB_S_I_S_S_I func,char* operationID,int errCode,char* errMsg,char* data,int progress) { - func(errCode,errMsg,data,progress); - free(errMsg,data); + func(operationID,errCode,errMsg,data,progress); + free(errMsg); + free(data); } enum CONN_EVENT{ CONNECTING,