commit
2f6226c916
@ -0,0 +1,8 @@ |
||||
{ |
||||
"files.associations": { |
||||
"ostream": "cpp", |
||||
"chrono": "cpp", |
||||
"thread": "cpp" |
||||
}, |
||||
"C_Cpp.errorSquiggles": "disabled" |
||||
} |
@ -0,0 +1,28 @@ |
||||
{ |
||||
"tasks": [ |
||||
{ |
||||
"type": "cppbuild", |
||||
"label": "C/C++: g++ build active file", |
||||
"command": "/usr/bin/g++", |
||||
"args": [ |
||||
"-fdiagnostics-color=always", |
||||
"-g", |
||||
"${file}", |
||||
"-o", |
||||
"${fileDirname}/${fileBasenameNoExtension}" |
||||
], |
||||
"options": { |
||||
"cwd": "${fileDirname}" |
||||
}, |
||||
"problemMatcher": [ |
||||
"$gcc" |
||||
], |
||||
"group": { |
||||
"kind": "build", |
||||
"isDefault": true |
||||
}, |
||||
"detail": "Task generated by Debugger." |
||||
} |
||||
], |
||||
"version": "2.0.0" |
||||
} |
@ -0,0 +1,5 @@ |
||||
go build -buildmode=c-shared -trimpath -ldflags="-s -w" -o openimsdk.dll export.go constant.go protocol.go tools.go |
||||
|
||||
|
||||
|
||||
g++ -shared -fPIC -o openimsdkcc.dll openimsdkcc.cc openimsdk.dll |
@ -0,0 +1,2 @@ |
||||
gcc -o test.exe -L. openimsdk.dll test.c |
||||
test.exe |
@ -0,0 +1,9 @@ |
||||
#!/bin/bash |
||||
|
||||
rm ./openimsdk.so ./openimsdk.h |
||||
go build -buildmode=c-shared -trimpath -ldflags="-s -w" -o openimsdk.so export.go constant.go protocol.go tools.go |
||||
|
||||
|
||||
# build cpp sdk |
||||
rm ./openimsdkcc.so |
||||
g++ -fPIC -shared -o openimsdkcc.so openimsdkcc.cc ./openimsdk.so |
@ -0,0 +1 @@ |
||||
gcc -o test.exe -L. openimsdk.dll test.c |
@ -0,0 +1,77 @@ |
||||
package main |
||||
|
||||
/* |
||||
#include <stdio.h> |
||||
*/ |
||||
import "C" |
||||
|
||||
var ( |
||||
NO_ERR = C.int(0) |
||||
NO_ERR_MSG = C.CString("") |
||||
NO_DATA = C.CString("") |
||||
NO_PROGRESS = C.int(0) |
||||
) |
||||
|
||||
const ( |
||||
CONNECTING = iota |
||||
CONNECT_SUCCESS |
||||
CONNECT_FAILED |
||||
KICKED_OFFLINE |
||||
USER_TOKEN_EXPIRED |
||||
JOINED_GROUP_ADDED
|
||||
JOINED_GROUP_DELETED |
||||
GROUP_MEMBER_ADDED |
||||
GROUP_MEMBER_DELETED |
||||
GROUP_APPLICATION_ADDED |
||||
GROUP_APPLICATION_DELETED |
||||
GROUP_INFO_CHANGED |
||||
GROUP_DISMISSED |
||||
GROUP_MEMBER_INFO_CHANGED |
||||
GROUP_APPLICATION_ACCEPTED |
||||
GROUP_APPLICATION_REJECTED |
||||
FRIEND_APPLICATION_ADDED
|
||||
FRIEND_APPLICATION_DELETED |
||||
FRIEND_APPLICATION_ACCEPTED |
||||
FRIEND_APPLICATION_REJECTED |
||||
FRIEND_ADDED |
||||
FRIEND_DELETED |
||||
FRIEND_INFO_CHANGED |
||||
BLACK_ADDED |
||||
BLACK_DELETED |
||||
SYNC_SERVER_START
|
||||
SYNC_SERVER_FINISH |
||||
SYNC_SERVER_PROGRESS |
||||
SYNC_SERVER_FAILED |
||||
NEW_CONVERSATION |
||||
CONVERSATION_CHANGED |
||||
TOTAL_UNREAD_MESSAGE_COUNT_CHANGED |
||||
RECV_NEW_MESSAGE
|
||||
RECV_C2C_READ_RECEIPT |
||||
RECV_GROUP_READ_RECEIPT |
||||
NEW_RECV_MESSAGE_REVOKED |
||||
RECV_MESSAGE_EXTENSIONS_CHANGED |
||||
RECV_MESSAGE_EXTENSIONS_DELETED |
||||
RECV_MESSAGE_EXTENSIONS_ADDED |
||||
RECV_OFFLINE_NEW_MESSAGE |
||||
MSG_DELETED |
||||
|
||||
RECV_NEW_MESSAGES
|
||||
RECV_OFFLINE_NEW_MESSAGES |
||||
|
||||
SELF_INFO_UPDATED
|
||||
USER_STATUS_CHANGED |
||||
|
||||
RECV_CUSTOM_BUSINESS_MESSAGE |
||||
|
||||
|
||||
MESSAGE_KV_INFO_CHANGED |
||||
|
||||
UPLOAD_FILE_CALLBACK_OPEN |
||||
UPLOAD_FILE_CALLBACK_PART_SIZE |
||||
UPLOAD_FILE_CALLBACK_HASH_PART_PROGRESS |
||||
UPLOAD_FILE_CALLBACK_HASH_PART_COMPLETE |
||||
UPLOAD_FILE_CALLBACK_UPLOAD_ID |
||||
UPLOAD_FILE_CALLBACK_UPLOAD_PART_COMPLETE |
||||
UPLOAD_FILE_CALLBACK_UPLOAD_COMPLETE |
||||
UPLOAD_FILE_CALLBACK_COMPLETE |
||||
) |
@ -0,0 +1 @@ |
||||
package event_listener |
@ -0,0 +1,960 @@ |
||||
package main |
||||
|
||||
/* |
||||
#include <stdio.h> |
||||
typedef void (*CB_S)(char *); |
||||
typedef void (*CB_I_S)(int,char *); |
||||
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_S(CB_S func,char* data); |
||||
extern void Call_CB_I_S(CB_I_S func,int event,char* data); |
||||
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); |
||||
extern CB_S DebugPrint; |
||||
|
||||
*/ |
||||
import "C" |
||||
|
||||
import ( |
||||
"open_im_sdk/open_im_sdk" |
||||
) |
||||
|
||||
//export set_print
|
||||
func set_print(print C.CB_S) { |
||||
C.DebugPrint = print |
||||
} |
||||
|
||||
func DebugPrint(info string) { |
||||
C.Call_CB_S(C.DebugPrint, C.CString("DLL:"+info)) |
||||
} |
||||
|
||||
type Base struct { |
||||
ErrCode int32 `json:"errCode"` |
||||
ErrMsg string `json:"errMsg"` |
||||
} |
||||
|
||||
// =====================================================listener===============================================
|
||||
|
||||
type ConnCallback struct { |
||||
cCallback C.CB_I_S |
||||
} |
||||
|
||||
func NewConnCallback(cCallback C.CB_I_S) *ConnCallback { |
||||
return &ConnCallback{cCallback: cCallback} |
||||
} |
||||
|
||||
func (c ConnCallback) OnConnecting() { |
||||
C.Call_CB_I_S(c.cCallback, CONNECTING, NO_DATA) |
||||
} |
||||
|
||||
func (c ConnCallback) OnConnectSuccess() { |
||||
C.Call_CB_I_S(c.cCallback, CONNECT_SUCCESS, NO_DATA) |
||||
} |
||||
|
||||
func (c ConnCallback) OnConnectFailed(errCode int32, errMsg string) { |
||||
|
||||
C.Call_CB_I_S(c.cCallback, CONNECT_FAILED, C.CString(StructToJsonString(Base{ErrCode: errCode, ErrMsg: errMsg}))) |
||||
|
||||
} |
||||
|
||||
func (c ConnCallback) OnKickedOffline() { |
||||
C.Call_CB_I_S(c.cCallback, KICKED_OFFLINE, NO_DATA) |
||||
} |
||||
|
||||
func (c ConnCallback) OnUserTokenExpired() { |
||||
C.Call_CB_I_S(c.cCallback, USER_TOKEN_EXPIRED, NO_DATA) |
||||
} |
||||
|
||||
type ConversationCallback struct { |
||||
cCallback C.CB_I_S |
||||
} |
||||
|
||||
func NewConversationCallback(cCallback C.CB_I_S) *ConversationCallback { |
||||
return &ConversationCallback{cCallback: cCallback} |
||||
} |
||||
|
||||
func (c ConversationCallback) OnSyncServerStart() { |
||||
C.Call_CB_I_S(c.cCallback, SYNC_SERVER_START, NO_DATA) |
||||
} |
||||
|
||||
func (c ConversationCallback) OnSyncServerFinish() { |
||||
C.Call_CB_I_S(c.cCallback, SYNC_SERVER_FINISH, NO_DATA) |
||||
} |
||||
|
||||
func (c ConversationCallback) OnSyncServerFailed() { |
||||
C.Call_CB_I_S(c.cCallback, SYNC_SERVER_FAILED, NO_DATA) |
||||
} |
||||
|
||||
func (c ConversationCallback) OnNewConversation(conversationList string) { |
||||
C.Call_CB_I_S(c.cCallback, NEW_CONVERSATION, C.CString(conversationList)) |
||||
} |
||||
|
||||
func (c ConversationCallback) OnConversationChanged(conversationList string) { |
||||
C.Call_CB_I_S(c.cCallback, CONVERSATION_CHANGED, C.CString(conversationList)) |
||||
} |
||||
|
||||
func (c ConversationCallback) OnTotalUnreadMessageCountChanged(totalUnreadCount int32) { |
||||
C.Call_CB_I_S(c.cCallback, TOTAL_UNREAD_MESSAGE_COUNT_CHANGED, C.CString(Int32ToString(totalUnreadCount))) |
||||
} |
||||
|
||||
type AdvancedMsgCallback struct { |
||||
cCallback C.CB_I_S |
||||
} |
||||
|
||||
func (a AdvancedMsgCallback) OnRecvNewMessage(message string) { |
||||
C.Call_CB_I_S(a.cCallback, RECV_NEW_MESSAGE, C.CString(message)) |
||||
} |
||||
|
||||
func (a AdvancedMsgCallback) OnRecvC2CReadReceipt(msgReceiptList string) { |
||||
C.Call_CB_I_S(a.cCallback, RECV_C2C_READ_RECEIPT, C.CString(msgReceiptList)) |
||||
} |
||||
|
||||
func (a AdvancedMsgCallback) OnRecvGroupReadReceipt(groupMsgReceiptList string) { |
||||
C.Call_CB_I_S(a.cCallback, RECV_GROUP_READ_RECEIPT, C.CString(groupMsgReceiptList)) |
||||
} |
||||
|
||||
func (a AdvancedMsgCallback) OnNewRecvMessageRevoked(messageRevoked string) { |
||||
C.Call_CB_I_S(a.cCallback, NEW_RECV_MESSAGE_REVOKED, C.CString(messageRevoked)) |
||||
} |
||||
|
||||
func (a AdvancedMsgCallback) OnRecvMessageExtensionsChanged(msgID string, reactionExtensionList string) { |
||||
m := make(map[string]string) |
||||
m["msgID"] = msgID |
||||
m["reactionExtensionList"] = reactionExtensionList |
||||
C.Call_CB_I_S(a.cCallback, RECV_MESSAGE_EXTENSIONS_CHANGED, C.CString(StructToJsonString(m))) |
||||
} |
||||
|
||||
func (a AdvancedMsgCallback) OnRecvMessageExtensionsDeleted(msgID string, reactionExtensionKeyList string) { |
||||
m := make(map[string]string) |
||||
m["msgID"] = msgID |
||||
m["reactionExtensionKeyList"] = reactionExtensionKeyList |
||||
C.Call_CB_I_S(a.cCallback, RECV_MESSAGE_EXTENSIONS_DELETED, C.CString(StructToJsonString(m))) |
||||
} |
||||
|
||||
func (a AdvancedMsgCallback) OnRecvMessageExtensionsAdded(msgID string, reactionExtensionList string) { |
||||
m := make(map[string]string) |
||||
m["msgID"] = msgID |
||||
m["reactionExtensionList"] = reactionExtensionList |
||||
C.Call_CB_I_S(a.cCallback, RECV_MESSAGE_EXTENSIONS_ADDED, C.CString(StructToJsonString(m))) |
||||
} |
||||
|
||||
func (a AdvancedMsgCallback) OnRecvOfflineNewMessage(message string) { |
||||
C.Call_CB_I_S(a.cCallback, RECV_OFFLINE_NEW_MESSAGE, C.CString(message)) |
||||
} |
||||
|
||||
func (a AdvancedMsgCallback) OnMsgDeleted(message string) { |
||||
C.Call_CB_I_S(a.cCallback, MSG_DELETED, C.CString(message)) |
||||
} |
||||
|
||||
func NewAdvancedMsgCallback(cCallback C.CB_I_S) *AdvancedMsgCallback { |
||||
return &AdvancedMsgCallback{cCallback: cCallback} |
||||
} |
||||
|
||||
type BatchMessageCallback struct { |
||||
cCallback C.CB_I_S |
||||
} |
||||
|
||||
func (b BatchMessageCallback) OnRecvNewMessages(messageList string) { |
||||
C.Call_CB_I_S(b.cCallback, RECV_NEW_MESSAGES, C.CString(messageList)) |
||||
} |
||||
|
||||
func (b BatchMessageCallback) OnRecvOfflineNewMessages(messageList string) { |
||||
C.Call_CB_I_S(b.cCallback, RECV_OFFLINE_NEW_MESSAGES, C.CString(messageList)) |
||||
} |
||||
|
||||
func NewBatchMessageCallback(cCallback C.CB_I_S) *BatchMessageCallback { |
||||
return &BatchMessageCallback{cCallback: cCallback} |
||||
} |
||||
|
||||
type FriendCallback struct { |
||||
cCallback C.CB_I_S |
||||
} |
||||
|
||||
func (f FriendCallback) OnFriendApplicationAdded(friendApplication string) { |
||||
C.Call_CB_I_S(f.cCallback, FRIEND_APPLICATION_ADDED, C.CString(friendApplication)) |
||||
} |
||||
|
||||
func (f FriendCallback) OnFriendApplicationDeleted(friendApplication string) { |
||||
C.Call_CB_I_S(f.cCallback, FRIEND_APPLICATION_DELETED, C.CString(friendApplication)) |
||||
} |
||||
|
||||
func (f FriendCallback) OnFriendApplicationAccepted(friendApplication string) { |
||||
C.Call_CB_I_S(f.cCallback, FRIEND_APPLICATION_ACCEPTED, C.CString(friendApplication)) |
||||
} |
||||
|
||||
func (f FriendCallback) OnFriendApplicationRejected(friendApplication string) { |
||||
C.Call_CB_I_S(f.cCallback, FRIEND_APPLICATION_REJECTED, C.CString(friendApplication)) |
||||
} |
||||
|
||||
func (f FriendCallback) OnFriendAdded(friendInfo string) { |
||||
C.Call_CB_I_S(f.cCallback, FRIEND_ADDED, C.CString(friendInfo)) |
||||
} |
||||
|
||||
func (f FriendCallback) OnFriendDeleted(friendInfo string) { |
||||
C.Call_CB_I_S(f.cCallback, FRIEND_DELETED, C.CString(friendInfo)) |
||||
} |
||||
|
||||
func (f FriendCallback) OnFriendInfoChanged(friendInfo string) { |
||||
C.Call_CB_I_S(f.cCallback, FRIEND_INFO_CHANGED, C.CString(friendInfo)) |
||||
} |
||||
|
||||
func (f FriendCallback) OnBlackAdded(blackInfo string) { |
||||
C.Call_CB_I_S(f.cCallback, BLACK_ADDED, C.CString(blackInfo)) |
||||
} |
||||
|
||||
func (f FriendCallback) OnBlackDeleted(blackInfo string) { |
||||
C.Call_CB_I_S(f.cCallback, BLACK_DELETED, C.CString(blackInfo)) |
||||
} |
||||
|
||||
func NewFriendCallback(cCallback C.CB_I_S) *FriendCallback { |
||||
return &FriendCallback{cCallback: cCallback} |
||||
} |
||||
|
||||
type GroupCallback struct { |
||||
cCallback C.CB_I_S |
||||
} |
||||
|
||||
func NewGroupCallback(cCallback C.CB_I_S) *GroupCallback { |
||||
return &GroupCallback{cCallback: cCallback} |
||||
} |
||||
|
||||
func (g GroupCallback) OnJoinedGroupAdded(groupInfo string) { |
||||
C.Call_CB_I_S(g.cCallback, JOINED_GROUP_ADDED, C.CString(groupInfo)) |
||||
} |
||||
|
||||
func (g GroupCallback) OnJoinedGroupDeleted(groupInfo string) { |
||||
C.Call_CB_I_S(g.cCallback, JOINED_GROUP_DELETED, C.CString(groupInfo)) |
||||
} |
||||
|
||||
func (g GroupCallback) OnGroupMemberAdded(groupMemberInfo string) { |
||||
C.Call_CB_I_S(g.cCallback, GROUP_MEMBER_ADDED, C.CString(groupMemberInfo)) |
||||
} |
||||
|
||||
func (g GroupCallback) OnGroupMemberDeleted(groupMemberInfo string) { |
||||
C.Call_CB_I_S(g.cCallback, GROUP_MEMBER_DELETED, C.CString(groupMemberInfo)) |
||||
} |
||||
|
||||
func (g GroupCallback) OnGroupApplicationAdded(groupApplication string) { |
||||
C.Call_CB_I_S(g.cCallback, GROUP_APPLICATION_ADDED, C.CString(groupApplication)) |
||||
} |
||||
|
||||
func (g GroupCallback) OnGroupApplicationDeleted(groupApplication string) { |
||||
C.Call_CB_I_S(g.cCallback, GROUP_APPLICATION_DELETED, C.CString(groupApplication)) |
||||
} |
||||
|
||||
func (g GroupCallback) OnGroupInfoChanged(groupInfo string) { |
||||
C.Call_CB_I_S(g.cCallback, GROUP_INFO_CHANGED, C.CString(groupInfo)) |
||||
} |
||||
|
||||
func (g GroupCallback) OnGroupDismissed(groupInfo string) { |
||||
C.Call_CB_I_S(g.cCallback, GROUP_DISMISSED, C.CString(groupInfo)) |
||||
} |
||||
|
||||
func (g GroupCallback) OnGroupMemberInfoChanged(groupMemberInfo string) { |
||||
C.Call_CB_I_S(g.cCallback, GROUP_MEMBER_INFO_CHANGED, C.CString(groupMemberInfo)) |
||||
} |
||||
|
||||
func (g GroupCallback) OnGroupApplicationAccepted(groupApplication string) { |
||||
C.Call_CB_I_S(g.cCallback, GROUP_APPLICATION_ACCEPTED, C.CString(groupApplication)) |
||||
} |
||||
|
||||
func (g GroupCallback) OnGroupApplicationRejected(groupApplication string) { |
||||
C.Call_CB_I_S(g.cCallback, GROUP_APPLICATION_REJECTED, C.CString(groupApplication)) |
||||
} |
||||
|
||||
type CustomBusinessCallback struct { |
||||
cCallback C.CB_I_S |
||||
} |
||||
|
||||
func (c CustomBusinessCallback) OnRecvCustomBusinessMessage(businessMessage string) { |
||||
C.Call_CB_I_S(c.cCallback, RECV_CUSTOM_BUSINESS_MESSAGE, C.CString(businessMessage)) |
||||
} |
||||
|
||||
func NewCustomBusinessCallback(cCallback C.CB_I_S) *CustomBusinessCallback { |
||||
return &CustomBusinessCallback{cCallback: cCallback} |
||||
} |
||||
|
||||
type UserCallback struct { |
||||
cCallback C.CB_I_S |
||||
} |
||||
|
||||
func (u UserCallback) OnSelfInfoUpdated(userInfo string) { |
||||
C.Call_CB_I_S(u.cCallback, SELF_INFO_UPDATED, C.CString(userInfo)) |
||||
} |
||||
|
||||
func (u UserCallback) OnUserStatusChanged(statusMap string) { |
||||
C.Call_CB_I_S(u.cCallback, USER_STATUS_CHANGED, C.CString(statusMap)) |
||||
} |
||||
|
||||
func NewUserCallback(cCallback C.CB_I_S) *UserCallback { |
||||
return &UserCallback{cCallback: cCallback} |
||||
} |
||||
|
||||
type SendMessageCallback struct { |
||||
cCallback C.CB_S_I_S_S_I |
||||
operationID string |
||||
} |
||||
|
||||
func NewSendMessageCallback(cCallback C.CB_S_I_S_S_I, operationID *C.char) *SendMessageCallback { |
||||
return &SendMessageCallback{cCallback: cCallback, operationID: C.GoString(operationID)} |
||||
} |
||||
|
||||
func (s SendMessageCallback) OnError(errCode int32, errMsg string) { |
||||
C.Call_CB_S_I_S_S_I(s.cCallback, C.CString(s.operationID), C.int(errCode), C.CString(errMsg), NO_DATA, NO_PROGRESS) |
||||
} |
||||
|
||||
func (s SendMessageCallback) OnSuccess(data string) { |
||||
C.Call_CB_S_I_S_S_I(s.cCallback, C.CString(s.operationID), NO_ERR, NO_ERR_MSG, C.CString(data), NO_PROGRESS) |
||||
} |
||||
|
||||
func (s SendMessageCallback) OnProgress(progress int) { |
||||
C.Call_CB_S_I_S_S_I(s.cCallback, C.CString(s.operationID), NO_ERR, NO_ERR_MSG, NO_DATA, C.int(progress)) |
||||
} |
||||
|
||||
type BaseCallback struct { |
||||
cCallback C.CB_S_I_S_S |
||||
operationID string |
||||
} |
||||
|
||||
func NewBaseCallback(cCallback C.CB_S_I_S_S, operationID *C.char) *BaseCallback { |
||||
return &BaseCallback{cCallback: cCallback, operationID: C.GoString(operationID)} |
||||
} |
||||
|
||||
func (b BaseCallback) OnError(errCode int32, errMsg string) { |
||||
C.Call_CB_S_I_S_S(b.cCallback, C.CString(b.operationID), C.int(errCode), C.CString(errMsg), NO_DATA) |
||||
} |
||||
|
||||
func (b BaseCallback) OnSuccess(data string) { |
||||
C.Call_CB_S_I_S_S(b.cCallback, C.CString(b.operationID), NO_ERR, NO_ERR_MSG, C.CString(data)) |
||||
} |
||||
|
||||
// =====================================================global_callback===============================================
|
||||
|
||||
//export set_group_listener
|
||||
func set_group_listener(cCallback C.CB_I_S) { |
||||
open_im_sdk.SetGroupListener(NewGroupCallback(cCallback)) |
||||
} |
||||
|
||||
//export set_conversation_listener
|
||||
func set_conversation_listener(cCallback C.CB_I_S) { |
||||
open_im_sdk.SetConversationListener(NewConversationCallback(cCallback)) |
||||
} |
||||
|
||||
//export set_advanced_msg_listener
|
||||
func set_advanced_msg_listener(cCallback C.CB_I_S) { |
||||
open_im_sdk.SetAdvancedMsgListener(NewAdvancedMsgCallback(cCallback)) |
||||
} |
||||
|
||||
//export set_batch_msg_listener
|
||||
func set_batch_msg_listener(cCallback C.CB_I_S) { |
||||
open_im_sdk.SetBatchMsgListener(NewBatchMessageCallback(cCallback)) |
||||
} |
||||
|
||||
//export set_user_listener
|
||||
func set_user_listener(cCallback C.CB_I_S) { |
||||
open_im_sdk.SetUserListener(NewUserCallback(cCallback)) |
||||
} |
||||
|
||||
//export set_friend_listener
|
||||
func set_friend_listener(cCallback C.CB_I_S) { |
||||
open_im_sdk.SetFriendListener(NewFriendCallback(cCallback)) |
||||
} |
||||
|
||||
//export set_custom_business_listener
|
||||
func set_custom_business_listener(cCallback C.CB_I_S) { |
||||
open_im_sdk.SetCustomBusinessListener(NewCustomBusinessCallback(cCallback)) |
||||
} |
||||
|
||||
////export set_messsage_kv_listener
|
||||
//func set_messsage_kv_listener(cCallback C.CB_I_S) {
|
||||
// open_im_sdk.SetMessageKvInfoListener(NewMessageKVCallback(cCallback))
|
||||
//}
|
||||
|
||||
// =====================================================conversation_msg===============================================
|
||||
|
||||
//export init_sdk
|
||||
func init_sdk( |
||||
cCallback C.CB_I_S, |
||||
operationID *C.char, config *C.char) bool { |
||||
callback := NewConnCallback(cCallback) |
||||
return open_im_sdk.InitSDK(callback, C.GoString(operationID), C.GoString(config)) |
||||
} |
||||
|
||||
//export un_init_sdk
|
||||
func un_init_sdk(operationID *C.char) { |
||||
open_im_sdk.UnInitSDK(C.GoString(operationID)) |
||||
} |
||||
|
||||
//export login
|
||||
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_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_S_I_S_S, operationID *C.char) { |
||||
baseCallback := NewBaseCallback(cCallback, operationID) |
||||
open_im_sdk.NetworkStatusChanged(baseCallback, C.GoString(operationID)) |
||||
} |
||||
|
||||
//export get_login_status
|
||||
func get_login_status(operationID *C.char) int { |
||||
return open_im_sdk.GetLoginStatus(C.GoString(operationID)) |
||||
} |
||||
|
||||
//export get_login_user
|
||||
func get_login_user() *C.char { |
||||
return C.CString(open_im_sdk.GetLoginUserID()) |
||||
} |
||||
|
||||
//export create_text_message
|
||||
func create_text_message(operationID, text *C.char) *C.char { |
||||
message := C.CString(open_im_sdk.CreateTextMessage(C.GoString(operationID), C.GoString(text))) |
||||
return message |
||||
} |
||||
|
||||
//export create_advanced_text_message
|
||||
func create_advanced_text_message(operationID, text, messageEntityList *C.char) *C.char { |
||||
return C.CString(open_im_sdk.CreateAdvancedTextMessage(C.GoString(operationID), C.GoString(text), |
||||
C.GoString(messageEntityList))) |
||||
} |
||||
|
||||
//export create_text_at_message
|
||||
func create_text_at_message(operationID, text, atUserList, atUsersInfo, message *C.char) *C.char { |
||||
return C.CString(open_im_sdk.CreateTextAtMessage(C.GoString(operationID), C.GoString(text), C.GoString(atUserList), |
||||
C.GoString(atUsersInfo), C.GoString(message))) |
||||
} |
||||
|
||||
//export create_location_message
|
||||
func create_location_message(operationID, description *C.char, longitude, latitude C.double) *C.char { |
||||
return C.CString(open_im_sdk.CreateLocationMessage(C.GoString(operationID), C.GoString(description), |
||||
float64(longitude), float64(latitude))) |
||||
} |
||||
|
||||
//export create_custom_message
|
||||
func create_custom_message(operationID, data, extension, description *C.char) *C.char { |
||||
return C.CString(open_im_sdk.CreateCustomMessage(C.GoString(operationID), C.GoString(data), C.GoString(extension), |
||||
C.GoString(description))) |
||||
} |
||||
|
||||
//export create_quote_message
|
||||
func create_quote_message(operationID, text, message *C.char) *C.char { |
||||
return C.CString(open_im_sdk.CreateQuoteMessage(C.GoString(operationID), C.GoString(text), C.GoString(message))) |
||||
} |
||||
|
||||
//export create_advanced_quote_message
|
||||
func create_advanced_quote_message(operationID, text, message, messageEntityList *C.char) *C.char { |
||||
return C.CString(open_im_sdk.CreateAdvancedQuoteMessage(C.GoString(operationID), C.GoString(text), |
||||
C.GoString(message), C.GoString(messageEntityList))) |
||||
} |
||||
|
||||
//export create_card_message
|
||||
func create_card_message(operationID, cardInfo *C.char) *C.char { |
||||
return C.CString(open_im_sdk.CreateCardMessage(C.GoString(operationID), C.GoString(cardInfo))) |
||||
} |
||||
|
||||
//export create_video_message_from_full_path
|
||||
func create_video_message_from_full_path(operationID, videoFullPath, videoType *C.char, duration C.longlong, |
||||
snapshotFullPath *C.char) *C.char { |
||||
return C.CString(open_im_sdk.CreateVideoMessageFromFullPath(C.GoString(operationID), C.GoString(videoFullPath), |
||||
C.GoString(videoType), int64(duration), C.GoString(snapshotFullPath))) |
||||
} |
||||
|
||||
//export create_image_message_from_full_path
|
||||
func create_image_message_from_full_path(operationID, imageFullPath *C.char) *C.char { |
||||
return C.CString(open_im_sdk.CreateImageMessageFromFullPath(C.GoString(operationID), C.GoString(imageFullPath))) |
||||
} |
||||
|
||||
//export create_sound_message_from_full_path
|
||||
func create_sound_message_from_full_path(operationID, soundPath *C.char, duration C.longlong) *C.char { |
||||
return C.CString(open_im_sdk.CreateSoundMessageFromFullPath(C.GoString(operationID), C.GoString(soundPath), |
||||
int64(duration))) |
||||
} |
||||
|
||||
//export create_file_message_from_full_path
|
||||
func create_file_message_from_full_path(operationID, fileFullPath, fileName *C.char) *C.char { |
||||
return C.CString(open_im_sdk.CreateFileMessageFromFullPath(C.GoString(operationID), C.GoString(fileFullPath), |
||||
C.GoString(fileName))) |
||||
} |
||||
|
||||
//export create_image_message
|
||||
func create_image_message(operationID, imagePath *C.char) *C.char { |
||||
return C.CString(open_im_sdk.CreateImageMessage(C.GoString(operationID), C.GoString(imagePath))) |
||||
} |
||||
|
||||
//export create_image_message_by_url
|
||||
func create_image_message_by_url(operationID, sourcePicture, bigPicture, snapshotPicture *C.char) *C.char { |
||||
return C.CString(open_im_sdk.CreateImageMessageByURL(C.GoString(operationID), C.GoString(sourcePicture), |
||||
C.GoString(bigPicture), C.GoString(snapshotPicture))) |
||||
} |
||||
|
||||
//export create_sound_message_by_url
|
||||
func create_sound_message_by_url(operationID, soundBaseInfo *C.char) *C.char { |
||||
return C.CString(open_im_sdk.CreateSoundMessageByURL(C.GoString(operationID), C.GoString(soundBaseInfo))) |
||||
} |
||||
|
||||
//export create_sound_message
|
||||
func create_sound_message(operationID, soundPath *C.char, duration C.longlong) *C.char { |
||||
return C.CString(open_im_sdk.CreateSoundMessage(C.GoString(operationID), C.GoString(soundPath), int64(duration))) |
||||
} |
||||
|
||||
//export create_video_message_by_url
|
||||
func create_video_message_by_url(operationID, videoBaseInfo *C.char) *C.char { |
||||
return C.CString(open_im_sdk.CreateVideoMessageByURL(C.GoString(operationID), C.GoString(videoBaseInfo))) |
||||
} |
||||
|
||||
//export create_video_message
|
||||
func create_video_message(operationID, videoPath *C.char, videoType *C.char, duration C.longlong, |
||||
snapshotPath *C.char) *C.char { |
||||
return C.CString(open_im_sdk.CreateVideoMessage(C.GoString(operationID), C.GoString(videoPath), |
||||
C.GoString(videoType), int64(duration), C.GoString(snapshotPath))) |
||||
} |
||||
|
||||
//export create_file_message_by_url
|
||||
func create_file_message_by_url(operationID, fileBaseInfo *C.char) *C.char { |
||||
return C.CString(open_im_sdk.CreateFileMessageByURL(C.GoString(operationID), C.GoString(fileBaseInfo))) |
||||
} |
||||
|
||||
//export create_file_message
|
||||
func create_file_message(operationID, filePath, fileName *C.char) *C.char { |
||||
return C.CString(open_im_sdk.CreateFileMessage(C.GoString(operationID), C.GoString(filePath), C.GoString(fileName))) |
||||
} |
||||
|
||||
//export create_merger_message
|
||||
func create_merger_message(operationID, messageList, title, summaryList *C.char) *C.char { |
||||
return C.CString(open_im_sdk.CreateMergerMessage(C.GoString(operationID), C.GoString(messageList), |
||||
C.GoString(title), C.GoString(summaryList))) |
||||
} |
||||
|
||||
//export create_face_message
|
||||
func create_face_message(operationID *C.char, index C.int, data *C.char) *C.char { |
||||
return C.CString(open_im_sdk.CreateFaceMessage(C.GoString(operationID), int(index), C.GoString(data))) |
||||
} |
||||
|
||||
//export create_forward_message
|
||||
func create_forward_message(operationID, m *C.char) *C.char { |
||||
return C.CString(open_im_sdk.CreateForwardMessage(C.GoString(operationID), C.GoString(m))) |
||||
} |
||||
|
||||
//export get_all_conversation_list
|
||||
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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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)) |
||||
} |
||||
|
||||
// =====================================================group===============================================
|
||||
// CreateGroup creates a group
|
||||
//
|
||||
//export create_group
|
||||
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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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() { |
||||
|
||||
} |
@ -0,0 +1,32 @@ |
||||
set NDK_PATH=D:\android_sdk\ndk-bundle |
||||
set SO_NAME=libopenimsdk |
||||
set OUT_PATH=android\ |
||||
|
||||
set CGO_ENABLED=1 |
||||
|
||||
REM 生成 armeabi-v7a |
||||
set GOOS=android |
||||
set GOARCH=arm |
||||
set CC=%NDK_PATH%\toolchains\llvm\prebuilt\windows-x86_64\bin\armv7a-linux-androideabi16-clang.cmd |
||||
|
||||
go build -buildmode=c-shared -trimpath -ldflags="-s -w" -o %OUT_PATH%armeabi-v7a\%SO_NAME%.so export.go constant.go protocol.go tools.go |
||||
|
||||
REM 生成 arm64-v8a |
||||
set GOARCH=arm64 |
||||
set CC=%NDK_PATH%\toolchains\llvm\prebuilt\windows-x86_64\bin\aarch64-linux-android21-clang.cmd |
||||
|
||||
go build -buildmode=c-shared -trimpath -ldflags="-s -w" -o %OUT_PATH%arm64-v8a\%SO_NAME%.so export.go constant.go protocol.go tools.go |
||||
|
||||
REM 生成 x86 |
||||
set GOARCH=386 |
||||
set CC=%NDK_PATH%\toolchains\llvm\prebuilt\windows-x86_64\bin\i686-linux-android16-clang.cmd |
||||
|
||||
go build -buildmode=c-shared -trimpath -ldflags="-s -w" -o %OUT_PATH%x86\%SO_NAME%.so export.go constant.go protocol.go tools.go |
||||
|
||||
REM 生成 x86_64 |
||||
set GOARCH=amd64 |
||||
set CC=%NDK_PATH%\toolchains\llvm\prebuilt\windows-x86_64\bin\x86_64-linux-android21-clang.cmd |
||||
|
||||
go build -buildmode=c-shared -trimpath -ldflags="-s -w" -o %OUT_PATH%x86_64\%SO_NAME%.so export.go constant.go protocol.go tools.go |
||||
|
||||
|
@ -0,0 +1,8 @@ |
||||
export GOOS=darwin |
||||
export GOARCH=arm64 |
||||
export CGO_ENABLED=1 |
||||
export CC=clang |
||||
|
||||
go build -buildmode=c-shared -o libopenimsdk.dylib export.go constant.go protocol.go tools.go |
||||
|
||||
|
@ -0,0 +1,283 @@ |
||||
/* Code generated by cmd/cgo; DO NOT EDIT. */ |
||||
|
||||
/* package command-line-arguments */ |
||||
|
||||
|
||||
#line 1 "cgo-builtin-export-prolog" |
||||
|
||||
#include <stddef.h> |
||||
|
||||
#ifndef GO_CGO_EXPORT_PROLOGUE_H |
||||
#define GO_CGO_EXPORT_PROLOGUE_H |
||||
|
||||
#ifndef GO_CGO_GOSTRING_TYPEDEF |
||||
typedef struct { const char *p; ptrdiff_t n; } _GoString_; |
||||
#endif |
||||
|
||||
#endif |
||||
|
||||
/* Start of preamble from import "C" comments. */ |
||||
|
||||
|
||||
#line 3 "export.go" |
||||
|
||||
#include <stdio.h> |
||||
typedef void (*CB_S)(char *); |
||||
typedef void (*CB_I_S)(int,char *); |
||||
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_S(CB_S func,char* data); |
||||
extern void Call_CB_I_S(CB_I_S func,int event,char* data); |
||||
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); |
||||
extern CB_S DebugPrint; |
||||
|
||||
|
||||
#line 1 "cgo-generated-wrapper" |
||||
|
||||
|
||||
/* End of preamble from import "C" comments. */ |
||||
|
||||
|
||||
/* Start of boilerplate cgo prologue. */ |
||||
#line 1 "cgo-gcc-export-header-prolog" |
||||
|
||||
#ifndef GO_CGO_PROLOGUE_H |
||||
#define GO_CGO_PROLOGUE_H |
||||
|
||||
typedef signed char GoInt8; |
||||
typedef unsigned char GoUint8; |
||||
typedef short GoInt16; |
||||
typedef unsigned short GoUint16; |
||||
typedef int GoInt32; |
||||
typedef unsigned int GoUint32; |
||||
typedef long long GoInt64; |
||||
typedef unsigned long long GoUint64; |
||||
typedef GoInt64 GoInt; |
||||
typedef GoUint64 GoUint; |
||||
typedef size_t GoUintptr; |
||||
typedef float GoFloat32; |
||||
typedef double GoFloat64; |
||||
#ifdef _MSC_VER |
||||
#include <complex.h> |
||||
typedef _Fcomplex GoComplex64; |
||||
typedef _Dcomplex GoComplex128; |
||||
#else |
||||
typedef float _Complex GoComplex64; |
||||
typedef double _Complex GoComplex128; |
||||
#endif |
||||
|
||||
/*
|
||||
static assertion to make sure the file is being used on architecture |
||||
at least with matching size of GoInt. |
||||
*/ |
||||
typedef char _check_for_64_bit_pointer_matching_GoInt[sizeof(void*)==64/8 ? 1:-1]; |
||||
|
||||
#ifndef GO_CGO_GOSTRING_TYPEDEF |
||||
typedef _GoString_ GoString; |
||||
#endif |
||||
typedef void *GoMap; |
||||
typedef void *GoChan; |
||||
typedef struct { void *t; void *v; } GoInterface; |
||||
typedef struct { void *data; GoInt len; GoInt cap; } GoSlice; |
||||
|
||||
#endif |
||||
|
||||
/* End of boilerplate cgo prologue. */ |
||||
|
||||
#ifdef __cplusplus |
||||
extern "C" { |
||||
#endif |
||||
|
||||
extern void set_print(CB_S print); |
||||
extern void set_group_listener(CB_I_S cCallback); |
||||
extern void set_conversation_listener(CB_I_S cCallback); |
||||
extern void set_advanced_msg_listener(CB_I_S cCallback); |
||||
extern void set_batch_msg_listener(CB_I_S cCallback); |
||||
extern void set_user_listener(CB_I_S cCallback); |
||||
extern void set_friend_listener(CB_I_S cCallback); |
||||
extern void set_custom_business_listener(CB_I_S cCallback); |
||||
extern GoUint8 init_sdk(CB_I_S cCallback, char* operationID, char* config); |
||||
extern void un_init_sdk(char* operationID); |
||||
extern void login(CB_S_I_S_S cCallback, char* operationID, char* uid, char* token); |
||||
extern void logout(CB_S_I_S_S cCallback, char* operationID); |
||||
extern void network_status_changed(CB_S_I_S_S cCallback, char* operationID); |
||||
extern GoInt get_login_status(char* operationID); |
||||
extern char* get_login_user(); |
||||
extern char* create_text_message(char* operationID, char* text); |
||||
extern char* create_advanced_text_message(char* operationID, char* text, char* messageEntityList); |
||||
extern char* create_text_at_message(char* operationID, char* text, char* atUserList, char* atUsersInfo, char* message); |
||||
extern char* create_location_message(char* operationID, char* description, double longitude, double latitude); |
||||
extern char* create_custom_message(char* operationID, char* data, char* extension, char* description); |
||||
extern char* create_quote_message(char* operationID, char* text, char* message); |
||||
extern char* create_advanced_quote_message(char* operationID, char* text, char* message, char* messageEntityList); |
||||
extern char* create_card_message(char* operationID, char* cardInfo); |
||||
extern char* create_video_message_from_full_path(char* operationID, char* videoFullPath, char* videoType, long long int duration, char* snapshotFullPath); |
||||
extern char* create_image_message_from_full_path(char* operationID, char* imageFullPath); |
||||
extern char* create_sound_message_from_full_path(char* operationID, char* soundPath, long long int duration); |
||||
extern char* create_file_message_from_full_path(char* operationID, char* fileFullPath, char* fileName); |
||||
extern char* create_image_message(char* operationID, char* imagePath); |
||||
extern char* create_image_message_by_url(char* operationID, char* sourcePicture, char* bigPicture, char* snapshotPicture); |
||||
extern char* create_sound_message_by_url(char* operationID, char* soundBaseInfo); |
||||
extern char* create_sound_message(char* operationID, char* soundPath, long long int duration); |
||||
extern char* create_video_message_by_url(char* operationID, char* videoBaseInfo); |
||||
extern char* create_video_message(char* operationID, char* videoPath, char* videoType, long long int duration, char* snapshotPath); |
||||
extern char* create_file_message_by_url(char* operationID, char* fileBaseInfo); |
||||
extern char* create_file_message(char* operationID, char* filePath, char* fileName); |
||||
extern char* create_merger_message(char* operationID, char* messageList, char* title, char* summaryList); |
||||
extern char* create_face_message(char* operationID, int index, char* data); |
||||
extern char* create_forward_message(char* operationID, char* m); |
||||
extern void get_all_conversation_list(CB_S_I_S_S cCallback, char* operationID); |
||||
extern void get_advanced_history_message_list(CB_S_I_S_S cCallback, char* operationID, char* getMessageOptions); |
||||
extern void send_message(CB_S_I_S_S_I cCallback, char* operationID, char* message, char* recvID, char* groupID, char* offlinePushInfo); |
||||
|
||||
// =====================================================user===============================================
|
||||
//
|
||||
extern void get_users_info(CB_S_I_S_S cCallback, char* operationID, char* userIDs); |
||||
extern void get_users_info_from_srv(CB_S_I_S_S cCallback, char* operationID, char* userIDs); |
||||
extern void set_self_info(CB_S_I_S_S cCallback, char* operationID, char* userInfo); |
||||
extern void get_self_user_info(CB_S_I_S_S cCallback, char* operationID); |
||||
extern void update_msg_sender_info(CB_S_I_S_S cCallback, char* operationID, char* nickname, char* faceURL); |
||||
extern void subscribe_users_status(CB_S_I_S_S cCallback, char* operationID, char* userIDs); |
||||
extern void unsubscribe_users_status(CB_S_I_S_S cCallback, char* operationID, char* userIDs); |
||||
extern void get_subscribe_users_status(CB_S_I_S_S cCallback, char* operationID); |
||||
extern void get_user_status(CB_S_I_S_S cCallback, char* operationID, char* userIDs); |
||||
|
||||
// =====================================================friend===============================================
|
||||
//
|
||||
extern void get_specified_friends_info(CB_S_I_S_S cCallback, char* operationID, char* userIDList); |
||||
extern void get_friend_list(CB_S_I_S_S cCallback, char* operationID); |
||||
extern void get_friend_list_page(CB_S_I_S_S cCallback, char* operationID, int offset, int count); |
||||
extern void search_friends(CB_S_I_S_S cCallback, char* operationID, char* searchParam); |
||||
extern void check_friend(CB_S_I_S_S cCallback, char* operationID, char* userIDList); |
||||
extern void add_friend(CB_S_I_S_S cCallback, char* operationID, char* userIDReqMsg); |
||||
extern void set_friend_remark(CB_S_I_S_S cCallback, char* operationID, char* userIDRemark); |
||||
extern void delete_friend(CB_S_I_S_S cCallback, char* operationID, char* friendUserID); |
||||
extern void get_friend_application_list_as_recipient(CB_S_I_S_S cCallback, char* operationID); |
||||
extern void get_friend_application_list_as_applicant(CB_S_I_S_S cCallback, char* operationID); |
||||
extern void accept_friend_application(CB_S_I_S_S cCallback, char* operationID, char* userIDHandleMsg); |
||||
extern void refuse_friend_application(CB_S_I_S_S cCallback, char* operationID, char* userIDHandleMsg); |
||||
extern void add_black(CB_S_I_S_S cCallback, char* operationID, char* blackUserID); |
||||
extern void get_black_list(CB_S_I_S_S cCallback, char* operationID); |
||||
extern void remove_black(CB_S_I_S_S cCallback, char* operationID, char* removeUserID); |
||||
|
||||
// =====================================================group===============================================
|
||||
// CreateGroup creates a group
|
||||
//
|
||||
extern void create_group(CB_S_I_S_S cCallback, char* operationID, char* cGroupReqInfo); |
||||
|
||||
// JoinGroup joins a group
|
||||
//
|
||||
extern void join_group(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, char* cReqMsg, int cJoinSource); |
||||
|
||||
// QuitGroup quits a group
|
||||
//
|
||||
extern void quit_group(CB_S_I_S_S cCallback, char* operationID, char* cGroupID); |
||||
|
||||
// DismissGroup dismisses a group
|
||||
//
|
||||
extern void dismiss_group(CB_S_I_S_S cCallback, char* operationID, char* cGroupID); |
||||
|
||||
// ChangeGroupMute changes the mute status of a group
|
||||
//
|
||||
extern void change_group_mute(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, int cIsMute); |
||||
|
||||
// ChangeGroupMemberMute changes the mute status of a group member
|
||||
//
|
||||
extern void change_group_member_mute(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, char* cUserID, int cMutedSeconds); |
||||
|
||||
// SetGroupMemberRoleLevel sets the role level of a group member
|
||||
//
|
||||
extern void set_group_member_role_level(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, char* cUserID, int cRoleLevel); |
||||
|
||||
// SetGroupMemberInfo sets the information of a group member
|
||||
//
|
||||
extern void set_group_member_info(CB_S_I_S_S cCallback, char* operationID, char* cGroupMemberInfo); |
||||
|
||||
// GetJoinedGroupList retrieves the list of joined groups
|
||||
//
|
||||
extern void get_joined_group_list(CB_S_I_S_S cCallback, char* operationID); |
||||
|
||||
// GetSpecifiedGroupsInfo retrieves the information of specified groups
|
||||
//
|
||||
extern void get_specified_groups_info(CB_S_I_S_S cCallback, char* operationID, char* cGroupIDList); |
||||
|
||||
// SearchGroups searches for groups
|
||||
//
|
||||
extern void search_groups(CB_S_I_S_S cCallback, char* operationID, char* cSearchParam); |
||||
|
||||
// SetGroupInfo sets the information of a group
|
||||
//
|
||||
extern void set_group_info(CB_S_I_S_S cCallback, char* operationID, char* cGroupInfo); |
||||
|
||||
// SetGroupVerification sets the verification mode of a group
|
||||
//
|
||||
extern void set_group_verification(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, int cVerification); |
||||
|
||||
// SetGroupLookMemberInfo sets the member information visibility of a group
|
||||
//
|
||||
extern void set_group_look_member_info(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, int cRule); |
||||
|
||||
// SetGroupApplyMemberFriend sets the friend rule for group applicants
|
||||
//
|
||||
extern void set_group_apply_member_friend(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, int cRule); |
||||
|
||||
// GetGroupMemberList retrieves the list of group members
|
||||
//
|
||||
extern void get_group_member_list(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, int cFilter, int cOffset, int cCount); |
||||
|
||||
// GetGroupMemberOwnerAndAdmin retrieves the owner and admin members of a group
|
||||
//
|
||||
extern void get_group_member_owner_and_admin(CB_S_I_S_S cCallback, char* operationID, char* cGroupID); |
||||
|
||||
// GetGroupMemberListByJoinTimeFilter retrieves the list of group members filtered by join time
|
||||
//
|
||||
extern void get_group_member_list_by_join_time_filter(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, int cOffset, int cCount, long long int cJoinTimeBegin, long long int cJoinTimeEnd, char* cFilterUserIDList); |
||||
|
||||
// GetSpecifiedGroupMembersInfo retrieves the information of specified group members
|
||||
//
|
||||
extern void get_specified_group_members_info(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, char* cUserIDList); |
||||
|
||||
// KickGroupMember kicks group members
|
||||
//
|
||||
extern void kick_group_member(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, char* cReason, char* cUserIDList); |
||||
|
||||
// TransferGroupOwner transfers the ownership of a group
|
||||
//
|
||||
extern void transfer_group_owner(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, char* cNewOwnerUserID); |
||||
|
||||
// InviteUserToGroup invites users to a group
|
||||
//
|
||||
extern void invite_user_to_group(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, char* cReason, char* cUserIDList); |
||||
|
||||
// GetGroupApplicationListAsRecipient retrieves the group application list as a recipient
|
||||
//
|
||||
extern void get_group_application_list_as_recipient(CB_S_I_S_S cCallback, char* operationID); |
||||
|
||||
// GetGroupApplicationListAsApplicant retrieves the group application list as an applicant
|
||||
//
|
||||
extern void get_group_application_list_as_applicant(CB_S_I_S_S cCallback, char* operationID); |
||||
|
||||
// AcceptGroupApplication accepts a group application
|
||||
//
|
||||
extern void accept_group_application(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, char* cFromUserID, char* cHandleMsg); |
||||
|
||||
// RefuseGroupApplication refuses a group application
|
||||
//
|
||||
extern void refuse_group_application(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, char* cFromUserID, char* cHandleMsg); |
||||
|
||||
// SetGroupMemberNickname sets the nickname of a group member
|
||||
//
|
||||
extern void set_group_member_nickname(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, char* cUserID, char* cGroupMemberNickname); |
||||
|
||||
// SearchGroupMembers searches for group members
|
||||
//
|
||||
extern void search_group_members(CB_S_I_S_S cCallback, char* operationID, char* cSearchParam); |
||||
|
||||
// IsJoinGroup checks if the user has joined a group
|
||||
//
|
||||
extern void is_join_group(CB_S_I_S_S cCallback, char* operationID, char* cGroupID); |
||||
|
||||
#ifdef __cplusplus |
||||
} |
||||
#endif |
@ -0,0 +1,864 @@ |
||||
#include "openimsdkcc.h" |
||||
|
||||
|
||||
namespace openim { |
||||
|
||||
// // ===================================================== init ===============================================
|
||||
// must be called before use sdk
|
||||
|
||||
// instance pattern
|
||||
OpenIMManager& OpenIMManager::GetInstance() |
||||
{ |
||||
static OpenIMManager instance; |
||||
return instance; |
||||
} |
||||
|
||||
// must be called before use sdk
|
||||
bool OpenIMManager::InitSDK(const std::function<void(int,const std::string&)>& cCallback, const std::string &operationID, const std::string &config) |
||||
{ |
||||
char *operationID_cs = const_cast<char *>(operationID.c_str()); |
||||
char *config_cs = const_cast<char *>(config.c_str()); |
||||
int ret=init_sdk(_wrapper_cpp_function(cCallback), operationID_cs, config_cs); |
||||
return (ret&1)==1; |
||||
} |
||||
|
||||
|
||||
|
||||
// release resouces used by SDK
|
||||
void OpenIMManager::UnInitSDK(const std::string &operationID) |
||||
{ |
||||
// TODO: free all functions in function pool
|
||||
|
||||
char *operationID_cs = const_cast<char *>(operationID.c_str()); |
||||
return un_init_sdk(operationID_cs); |
||||
} |
||||
|
||||
// // ===================================================== set listener ===============================================
|
||||
// impl for set listener, this callback function will be keep in memory,until call SetXXXListener again
|
||||
|
||||
// for debug
|
||||
// void OpenIMManager::SetPrint(const std::function<void(const std::string&)>& printCallBack)
|
||||
// {
|
||||
// this->printCallBack = _wrapper_cpp_function(printCallBack);
|
||||
// set_print((CB_S)((this->printCallBack).target<void(*)(const std::string&)>()));
|
||||
// }
|
||||
|
||||
void OpenIMManager::SetAdvancedMsgListener(const std::function<void(int, const std::string &)>& advancedMsgListenerCallback) |
||||
{ |
||||
set_advanced_msg_listener(_wrapper_cpp_function(advancedMsgListenerCallback)); |
||||
} |
||||
void OpenIMManager::SetBatchMsgListener(const std::function<void(int, const std::string &)>& batchMsgListenerCallback) |
||||
{ |
||||
set_batch_msg_listener(_wrapper_cpp_function(batchMsgListenerCallback)); |
||||
} |
||||
void OpenIMManager::SetConversationListener(const std::function<void(int, const std::string &)>& conversationListenerCallback) |
||||
{ |
||||
set_conversation_listener(_wrapper_cpp_function(conversationListenerCallback)); |
||||
} |
||||
void OpenIMManager::SetCustomBusinessListener(const std::function<void(int, const std::string &)>& customBusinessListenerCallback) |
||||
{ |
||||
set_custom_business_listener(_wrapper_cpp_function(customBusinessListenerCallback)); |
||||
} |
||||
void OpenIMManager::SetFriendListener(const std::function<void(int, const std::string &)>& friendListenerCallback) |
||||
{ |
||||
set_friend_listener(_wrapper_cpp_function(friendListenerCallback)); |
||||
} |
||||
void OpenIMManager::SetGroupListener(const std::function<void(int, const std::string &)>& groupListenerCallback) |
||||
{ |
||||
set_group_listener(_wrapper_cpp_function(groupListenerCallback)); |
||||
} |
||||
void OpenIMManager::SetUserListener(const std::function<void(int, const std::string &)>& userListenerCallback) |
||||
{ |
||||
set_user_listener(_wrapper_cpp_function(userListenerCallback)); |
||||
} |
||||
|
||||
// // ===================================================== CallOnce Callback ===============================================
|
||||
// callback function arg below will be free after call once, so we need to wrapp it to onetime
|
||||
// // ===================================================== message ===============================================
|
||||
|
||||
// // ===================================================== login logout ===============================================
|
||||
void OpenIMManager::Login(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& loginCallback, const std::string& operationID, const std::string& uid, const std::string& token) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* uid_cs=const_cast<char*>(uid.c_str()); |
||||
char* token_cs=const_cast<char*>(token.c_str()); |
||||
login(_wrapper_callonce_cpp_function(loginCallback),operationID_cs,uid_cs,token_cs); |
||||
} |
||||
|
||||
void OpenIMManager::Logout(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& logoutCallback, const std::string& operationID) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
logout(_wrapper_callonce_cpp_function(logoutCallback),operationID_cs); |
||||
} |
||||
|
||||
GoInt OpenIMManager::GetLoginStatus(const std::string& operationID) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
return get_login_status(operationID_cs); |
||||
} |
||||
|
||||
std::string OpenIMManager::GetLoginUser() |
||||
{ |
||||
char* user=get_login_user(); |
||||
std::string user_str(user); |
||||
free(user); |
||||
return get_login_user(); |
||||
} |
||||
|
||||
void OpenIMManager::NetworkStatusChanged(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& networkStatusCallback, const std::string& operationID) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
network_status_changed(_wrapper_callonce_cpp_function(networkStatusCallback),operationID_cs); |
||||
} |
||||
|
||||
|
||||
// // ===================================================== message ===============================================
|
||||
// //
|
||||
|
||||
// create text message
|
||||
std::string OpenIMManager::CreateTextMessage(const std::string& operationID, const std::string& text) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* text_cs=const_cast<char*>(text.c_str()); |
||||
char* result_cs=create_text_message(operationID_cs,text_cs); |
||||
std::string result(result_cs); |
||||
// release dynamic c string memory
|
||||
free(result_cs); |
||||
return result; |
||||
} |
||||
|
||||
// create advanced text message
|
||||
std::string OpenIMManager::CreateAdvancedTextMessage(const std::string& operationID, const std::string& text, const std::string& messageEntityList) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* text_cs=const_cast<char*>(text.c_str()); |
||||
char* messageEntityList_cs=const_cast<char*>(messageEntityList.c_str()); |
||||
char* result_cs=create_advanced_text_message(operationID_cs,text_cs,messageEntityList_cs); |
||||
std::string result(result_cs); |
||||
free(result_cs); |
||||
return result; |
||||
} |
||||
|
||||
// create text at message
|
||||
std::string OpenIMManager::CreateTextAtMessage(const std::string& operationID, const std::string& text, const std::string& atUserList, const std::string& atUsersInfo, const std::string& message) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* text_cs=const_cast<char*>(text.c_str()); |
||||
char* atUserList_cs=const_cast<char*>(atUserList.c_str()); |
||||
char* atUsersInfo_cs=const_cast<char*>(atUsersInfo.c_str()); |
||||
char* message_cs=const_cast<char*>(message.c_str()); |
||||
char* result_cs=create_text_at_message(operationID_cs,text_cs,atUserList_cs,atUsersInfo_cs,message_cs); |
||||
std::string result(result_cs); |
||||
free(result_cs); |
||||
return result; |
||||
} |
||||
|
||||
// create location message
|
||||
std::string OpenIMManager::CreateLocationMessage(const std::string& operationID, const std::string& description, double longitude, double latitude) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* description_cs=const_cast<char*>(description.c_str()); |
||||
char* result_cs=create_location_message(operationID_cs,description_cs,longitude,latitude); |
||||
std::string result(result_cs); |
||||
free(result_cs); |
||||
return result; |
||||
} |
||||
|
||||
// create custom message
|
||||
std::string OpenIMManager::CreateCustomMessage(const std::string& operationID, const std::string& data, const std::string& extension, const std::string& description) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* data_cs=const_cast<char*>(data.c_str()); |
||||
char* extension_cs=const_cast<char*>(extension.c_str()); |
||||
char* description_cs=const_cast<char*>(description.c_str()); |
||||
char* result_cs=create_custom_message(operationID_cs,data_cs,extension_cs,description_cs); |
||||
std::string result(result_cs); |
||||
free(result_cs); |
||||
return result; |
||||
} |
||||
|
||||
// create quote message
|
||||
std::string OpenIMManager::CreateQuoteMessage(const std::string& operationID, const std::string& text, const std::string& message) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* text_cs=const_cast<char*>(text.c_str()); |
||||
char* message_cs=const_cast<char*>(message.c_str()); |
||||
char* result_cs=create_quote_message(operationID_cs,text_cs,message_cs); |
||||
std::string result(result_cs); |
||||
free(result_cs); |
||||
return result; |
||||
|
||||
} |
||||
|
||||
// create advanced quote message
|
||||
std::string OpenIMManager::CreateAdvancedQuoteMessage(const std::string& operationID, const std::string& text, const std::string& message, const std::string& messageEntityList) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* text_cs=const_cast<char*>(text.c_str()); |
||||
char* message_cs=const_cast<char*>(message.c_str()); |
||||
char* messageEntityList_cs=const_cast<char*>(messageEntityList.c_str()); |
||||
char* result_cs=create_advanced_quote_message(operationID_cs,text_cs,message_cs,messageEntityList_cs); |
||||
std::string result(result_cs); |
||||
free(result_cs); |
||||
return result; |
||||
} |
||||
|
||||
// create card message
|
||||
std::string OpenIMManager::CreateCardMessage(const std::string& operationID, const std::string& cardInfo) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* cardInfo_cs=const_cast<char*>(cardInfo.c_str()); |
||||
char* result_cs=create_card_message(operationID_cs,cardInfo_cs); |
||||
std::string result(result_cs); |
||||
free(result_cs); |
||||
return result; |
||||
} |
||||
|
||||
// create video message from full path
|
||||
std::string OpenIMManager::CreateVideoMessageFromFullPath(const std::string& operationID, const std::string& videoFullPath, const std::string& videoType, long long int duration, const std::string& snapshotFullPath) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* videoFullPath_cs=const_cast<char*>(videoFullPath.c_str()); |
||||
char* videoType_cs=const_cast<char*>(videoType.c_str()); |
||||
char* snapshotFullPath_cs=const_cast<char*>(snapshotFullPath.c_str()); |
||||
char* result_cs=create_video_message_from_full_path(operationID_cs,videoFullPath_cs,videoType_cs,duration,snapshotFullPath_cs); |
||||
std::string result(result_cs); |
||||
free(result_cs); |
||||
return result; |
||||
} |
||||
|
||||
// create image message from full path
|
||||
std::string OpenIMManager::CreateImageMessageFromFullPath(const std::string& operationID, const std::string& imageFullPath) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* imageFullPath_cs=const_cast<char*>(imageFullPath.c_str()); |
||||
char* result_cs=create_image_message_from_full_path(operationID_cs,imageFullPath_cs); |
||||
std::string result(result_cs); |
||||
free(result_cs); |
||||
return result; |
||||
} |
||||
|
||||
// create sound message from full path
|
||||
std::string OpenIMManager::CreateSoundMessageFromFullPath(const std::string& operationID, const std::string& soundPath, long long int duration) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* soundPath_cs=const_cast<char*>(soundPath.c_str()); |
||||
char* result_cs=create_sound_message_from_full_path(operationID_cs,soundPath_cs,duration); |
||||
std::string result(result_cs); |
||||
free(result_cs); |
||||
return result; |
||||
} |
||||
|
||||
// create file message from full path
|
||||
std::string OpenIMManager::CreateFileMessageFromFullPath(const std::string& operationID, const std::string& fileFullPath, const std::string& fileName) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* fileFullPath_cs=const_cast<char*>(fileFullPath.c_str()); |
||||
char* fileName_cs=const_cast<char*>(fileName.c_str()); |
||||
char* result_cs=create_file_message_from_full_path(operationID_cs,fileFullPath_cs,fileName_cs); |
||||
std::string result(result_cs); |
||||
free(result_cs); |
||||
return result; |
||||
} |
||||
|
||||
// create image message
|
||||
std::string OpenIMManager::CreateImageMessage(const std::string& operationID, const std::string& imagePath) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* imagePath_cs=const_cast<char*>(imagePath.c_str()); |
||||
char* result_cs=create_image_message(operationID_cs,imagePath_cs); |
||||
std::string result(result_cs); |
||||
free(result_cs); |
||||
return result; |
||||
} |
||||
|
||||
// create image message by URL
|
||||
std::string OpenIMManager::CreateImageMessageByURL(const std::string& operationID, const std::string& sourcePicture, const std::string& bigPicture, const std::string& snapshotPicture) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* sourcePicture_cs=const_cast<char*>(sourcePicture.c_str()); |
||||
char* bigPicture_cs=const_cast<char*>(bigPicture.c_str()); |
||||
char* snapshotPicture_cs=const_cast<char*>(snapshotPicture.c_str()); |
||||
char* result_cs=create_image_message_by_url(operationID_cs,sourcePicture_cs,bigPicture_cs,snapshotPicture_cs); |
||||
std::string result(result_cs); |
||||
free(result_cs); |
||||
return result; |
||||
} |
||||
|
||||
// create sound message by URL
|
||||
std::string OpenIMManager::CreateSoundMessageByURL(const std::string& operationID, const std::string& soundBaseInfo) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* soundBaseInfo_cs=const_cast<char*>(soundBaseInfo.c_str()); |
||||
char* result_cs=create_sound_message_by_url(operationID_cs,soundBaseInfo_cs); |
||||
std::string result(result_cs); |
||||
free(result_cs); |
||||
return result; |
||||
} |
||||
|
||||
// create sound message
|
||||
std::string OpenIMManager::CreateSoundMessage(const std::string& operationID, const std::string& soundPath, long long int duration) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* soundPath_cs=const_cast<char*>(soundPath.c_str()); |
||||
char* result_cs=create_sound_message(operationID_cs,soundPath_cs,duration); |
||||
std::string result(result_cs); |
||||
free(result_cs); |
||||
return result; |
||||
} |
||||
|
||||
// create video message by URL
|
||||
std::string OpenIMManager::CreateVideoMessageByURL(const std::string& operationID, const std::string& videoBaseInfo) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* videoBaseInfo_cs=const_cast<char*>(videoBaseInfo.c_str()); |
||||
char* result_cs=create_video_message_by_url(operationID_cs,videoBaseInfo_cs); |
||||
std::string result(result_cs); |
||||
free(result_cs); |
||||
return result; |
||||
} |
||||
|
||||
// create video message
|
||||
std::string OpenIMManager::CreateVideoMessage(const std::string& operationID, const std::string& videoPath, const std::string& videoType, long long int duration, const std::string& snapshotPath) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* videoPath_cs=const_cast<char*>(videoPath.c_str()); |
||||
char* videoType_cs=const_cast<char*>(videoType.c_str()); |
||||
char* snapshotPath_cs=const_cast<char*>(snapshotPath.c_str()); |
||||
char* result_cs=create_video_message(operationID_cs,videoPath_cs,videoType_cs,duration,snapshotPath_cs); |
||||
std::string result(result_cs); |
||||
free(result_cs); |
||||
return result; |
||||
} |
||||
|
||||
// create file message by URL
|
||||
std::string OpenIMManager::CreateFileMessageByURL(const std::string& operationID, const std::string& fileBaseInfo) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* fileBaseInfo_cs=const_cast<char*>(fileBaseInfo.c_str()); |
||||
char* result_cs=create_file_message_by_url(operationID_cs,fileBaseInfo_cs); |
||||
std::string result(result_cs); |
||||
free(result_cs); |
||||
return result; |
||||
} |
||||
|
||||
// create file message
|
||||
std::string OpenIMManager::CreateFileMessage(const std::string& operationID, const std::string& filePath, const std::string& fileName) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* filePath_cs=const_cast<char*>(filePath.c_str()); |
||||
char* fileName_cs=const_cast<char*>(fileName.c_str()); |
||||
char* result_cs=create_file_message(operationID_cs,filePath_cs,fileName_cs); |
||||
std::string result(result_cs); |
||||
free(result_cs); |
||||
return result; |
||||
} |
||||
|
||||
// create merger message
|
||||
std::string OpenIMManager::CreateMergerMessage(const std::string& operationID, const std::string& messageList, const std::string& title, const std::string& summaryList) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* messageList_cs=const_cast<char*>(messageList.c_str()); |
||||
char* title_cs=const_cast<char*>(title.c_str()); |
||||
char* summaryList_cs=const_cast<char*>(summaryList.c_str()); |
||||
char* result_cs=create_merger_message(operationID_cs,messageList_cs,title_cs,summaryList_cs); |
||||
std::string result(result_cs); |
||||
free(result_cs); |
||||
return result; |
||||
} |
||||
|
||||
// create face message
|
||||
std::string OpenIMManager::CreateFaceMessage(const std::string& operationID, int index, const std::string& data) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* data_cs=const_cast<char*>(data.c_str()); |
||||
char* result_cs=create_face_message(operationID_cs,index,data_cs); |
||||
std::string result(result_cs); |
||||
free(result_cs); |
||||
return result; |
||||
} |
||||
|
||||
// create forward message
|
||||
std::string OpenIMManager::CreateForwardMessage(const std::string& operationID, const std::string& m) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* m_cs=const_cast<char*>(m.c_str()); |
||||
char* result_cs=create_forward_message(operationID_cs,m_cs); |
||||
std::string result(result_cs); |
||||
free(result_cs); |
||||
return result; |
||||
} |
||||
|
||||
// get all conversation list
|
||||
void OpenIMManager::GetAllConversationList(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& getAllConversationListCallback, const std::string& operationID) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
get_all_conversation_list(_wrapper_callonce_cpp_function(getAllConversationListCallback),operationID_cs); |
||||
} |
||||
|
||||
// get advanced history message list
|
||||
void OpenIMManager::GetAdvancedHistoryMessageList(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& getAdvancedHistoryCallback , const std::string& operationID, const std::string& getMessageOptions) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* getMessageOptions_cs=const_cast<char*>(getMessageOptions.c_str()); |
||||
get_advanced_history_message_list(_wrapper_callonce_cpp_function(getAdvancedHistoryCallback),operationID_cs,getMessageOptions_cs); |
||||
} |
||||
|
||||
// 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) |
||||
{ |
||||
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); |
||||
} |
||||
|
||||
// // ===================================================== user ===============================================
|
||||
// //
|
||||
|
||||
// get users info
|
||||
void OpenIMManager::GetUsersInfo(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& userIDs) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* userIDs_cs=const_cast<char*>(userIDs.c_str()); |
||||
get_users_info(_wrapper_callonce_cpp_function(callback),operationID_cs,userIDs_cs); |
||||
} |
||||
|
||||
// get users info from server
|
||||
void OpenIMManager::GetUsersInfoFromServer(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID,const std::string& userIDs) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* userIDs_cs=const_cast<char*>(userIDs.c_str()); |
||||
get_users_info_from_srv(_wrapper_callonce_cpp_function(callback),operationID_cs,userIDs_cs); |
||||
} |
||||
|
||||
// set self info
|
||||
void OpenIMManager::SetSelfInfo(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback,const std::string& operationID, const std::string& selfInfo) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* selfInfo_cs=const_cast<char*>(selfInfo.c_str()); |
||||
set_self_info(_wrapper_callonce_cpp_function(callback),operationID_cs,selfInfo_cs); |
||||
} |
||||
|
||||
// get self user info
|
||||
void OpenIMManager::GetSelfUserInfo(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
get_self_user_info(_wrapper_callonce_cpp_function(callback),operationID_cs); |
||||
} |
||||
|
||||
// update message sender info
|
||||
void OpenIMManager::UpdateMessageSenderInfo(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& nickname,const std::string& faceURL) |
||||
{ |
||||
//TODO
|
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* nickname_cs=const_cast<char*>(nickname.c_str()); |
||||
char* faceURL_cs=const_cast<char*>(faceURL.c_str()); |
||||
update_msg_sender_info(_wrapper_callonce_cpp_function(callback),operationID_cs,nickname_cs,faceURL_cs); |
||||
} |
||||
|
||||
// subscribe users status
|
||||
void OpenIMManager::SubscribeUsersStatus(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback,const std::string& operationID, const std::string& userIDs) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* userIDs_cs=const_cast<char*>(userIDs.c_str()); |
||||
subscribe_users_status(_wrapper_callonce_cpp_function(callback),operationID_cs,userIDs_cs); |
||||
} |
||||
|
||||
// unsubscribe users status
|
||||
void OpenIMManager::UnsubscribeUsersStatus(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback,const std::string& operationID, const std::string& userIDs) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* userIDs_cs=const_cast<char*>(userIDs.c_str()); |
||||
unsubscribe_users_status(_wrapper_callonce_cpp_function(callback),operationID_cs,userIDs_cs); |
||||
} |
||||
|
||||
// get subscribe users status
|
||||
void OpenIMManager::GetSubscribeUsersStatus(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
get_subscribe_users_status(_wrapper_callonce_cpp_function(callback),operationID_cs); |
||||
} |
||||
|
||||
// get user status
|
||||
void OpenIMManager::GetUserStatus(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback,const std::string& operationID, const std::string& userID) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* userID_cs=const_cast<char*>(userID.c_str()); |
||||
get_user_status(_wrapper_callonce_cpp_function(callback),operationID_cs,userID_cs); |
||||
} |
||||
|
||||
// // ===================================================== friend ===============================================
|
||||
// //
|
||||
|
||||
// get specified friends info
|
||||
void OpenIMManager::GetSpecifiedFriendsInfo(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback,const std::string& operationID, const std::string& userIDs) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* userIDs_cs=const_cast<char*>(userIDs.c_str()); |
||||
get_specified_friends_info(_wrapper_callonce_cpp_function(callback),operationID_cs,userIDs_cs); |
||||
} |
||||
|
||||
// get friend list
|
||||
void OpenIMManager::GetFriendList(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
get_friend_list(_wrapper_callonce_cpp_function(callback),operationID_cs); |
||||
} |
||||
|
||||
// get friend list page
|
||||
void OpenIMManager::GetFriendListPage(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, int offset, int count) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
get_friend_list_page(_wrapper_callonce_cpp_function(callback),operationID_cs,offset,count); |
||||
} |
||||
|
||||
// search friends
|
||||
void OpenIMManager::SearchFriends(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback,const std::string& operationID, const std::string& searchParam) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* searchParam_cs=const_cast<char*>(searchParam.c_str()); |
||||
search_friends(_wrapper_callonce_cpp_function(callback),operationID_cs,searchParam_cs); |
||||
} |
||||
|
||||
// check friend
|
||||
void OpenIMManager::CheckFriend(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback,const std::string& operationID, const std::string& userID) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* userID_cs=const_cast<char*>(userID.c_str()); |
||||
check_friend(_wrapper_callonce_cpp_function(callback),operationID_cs,userID_cs); |
||||
} |
||||
|
||||
// add friend
|
||||
void OpenIMManager::AddFriend(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& friendInfo, const std::string& addFriendExtraInfo) |
||||
{ |
||||
char* friendInfo_cs=const_cast<char*>(friendInfo.c_str()); |
||||
char* addFriendExtraInfo_cs=const_cast<char*>(addFriendExtraInfo.c_str()); |
||||
add_friend(_wrapper_callonce_cpp_function(callback),friendInfo_cs,addFriendExtraInfo_cs); |
||||
} |
||||
|
||||
// set friend remark
|
||||
void OpenIMManager::SetFriendRemark(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& userID, const std::string& remark) |
||||
{ |
||||
char* userID_cs=const_cast<char*>(userID.c_str()); |
||||
char* remark_cs=const_cast<char*>(remark.c_str()); |
||||
set_friend_remark(_wrapper_callonce_cpp_function(callback),userID_cs,remark_cs); |
||||
} |
||||
|
||||
// delete friend
|
||||
void OpenIMManager::DeleteFriend(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& userID, const std::string& deleteFriendExtraInfo) |
||||
{ |
||||
char* userID_cs=const_cast<char*>(userID.c_str()); |
||||
char* deleteFriendExtraInfo_cs=const_cast<char*>(deleteFriendExtraInfo.c_str()); |
||||
delete_friend(_wrapper_callonce_cpp_function(callback),userID_cs,deleteFriendExtraInfo_cs); |
||||
} |
||||
|
||||
// get friend application list as recipant
|
||||
void OpenIMManager::GetFriendApplicationListAsRecipant(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
get_friend_application_list_as_recipient(_wrapper_callonce_cpp_function(callback),operationID_cs); |
||||
} |
||||
|
||||
// get friend application list as applicant
|
||||
void OpenIMManager::GetFriendApplicationListAsApplicant(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
get_friend_application_list_as_applicant(_wrapper_callonce_cpp_function(callback),operationID_cs); |
||||
} |
||||
|
||||
// accept friend application
|
||||
void OpenIMManager::AcceptFriendApplication(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& friendApplicationID, const std::string& extraInfo) |
||||
{ |
||||
char* friendApplicationID_cs=const_cast<char*>(friendApplicationID.c_str()); |
||||
char* extraInfo_cs=const_cast<char*>(extraInfo.c_str()); |
||||
accept_friend_application(_wrapper_callonce_cpp_function(callback),friendApplicationID_cs,extraInfo_cs); |
||||
} |
||||
|
||||
// refuse friend application
|
||||
void OpenIMManager::RefuseFriendApplication(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& friendApplicationID, const std::string& extraInfo) |
||||
{ |
||||
char* friendApplicationID_cs=const_cast<char*>(friendApplicationID.c_str()); |
||||
char* extraInfo_cs=const_cast<char*>(extraInfo.c_str()); |
||||
refuse_friend_application(_wrapper_callonce_cpp_function(callback),friendApplicationID_cs,extraInfo_cs); |
||||
} |
||||
|
||||
// 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) |
||||
{ |
||||
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); |
||||
} |
||||
|
||||
// get black list
|
||||
void OpenIMManager::GetBlackList(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
get_black_list(_wrapper_callonce_cpp_function(callback),operationID_cs); |
||||
} |
||||
|
||||
// remove black
|
||||
void OpenIMManager::RemoveBlack(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback,const std::string& operationID, const std::string& userIDs) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* userIDs_cs=const_cast<char*>(userIDs.c_str()); |
||||
remove_black(_wrapper_callonce_cpp_function(callback),operationID_cs,userIDs_cs); |
||||
} |
||||
|
||||
// // ===================================================== group ===============================================
|
||||
// //
|
||||
|
||||
// create group
|
||||
void OpenIMManager::CreateGroup(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& groupReqInfo) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* groupReqInfo_cs=const_cast<char*>(groupReqInfo.c_str()); |
||||
create_group(_wrapper_callonce_cpp_function(callback),operationID_cs,groupReqInfo_cs); |
||||
} |
||||
|
||||
// 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) |
||||
{ |
||||
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); |
||||
} |
||||
|
||||
// quit group
|
||||
void OpenIMManager::QuitGroup(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& groupID, const std::string& reqMsg) |
||||
{ |
||||
char* groupID_cs=const_cast<char*>(groupID.c_str()); |
||||
char* reqMsg_cs=const_cast<char*>(reqMsg.c_str()); |
||||
quit_group(_wrapper_callonce_cpp_function(callback),groupID_cs,reqMsg_cs); |
||||
} |
||||
|
||||
// dismiss group
|
||||
void OpenIMManager::DismissGroup(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& groupID, const std::string& reqMsg) |
||||
{ |
||||
char* groupID_cs=const_cast<char*>(groupID.c_str()); |
||||
char* reqMsg_cs=const_cast<char*>(reqMsg.c_str()); |
||||
dismiss_group(_wrapper_callonce_cpp_function(callback),groupID_cs,reqMsg_cs); |
||||
} |
||||
|
||||
// change group mute
|
||||
void OpenIMManager::ChangeGroupMute(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback,const std::string& operationID, const std::string& groupID, bool mute) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* groupID_cs=const_cast<char*>(groupID.c_str()); |
||||
change_group_mute(_wrapper_callonce_cpp_function(callback),operationID_cs,groupID_cs,mute); |
||||
} |
||||
|
||||
// change group member mute
|
||||
void OpenIMManager::ChangeGroupMemberMute(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& memberID, int mutedSeconds) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* groupID_cs=const_cast<char*>(groupID.c_str()); |
||||
char* memberID_cs=const_cast<char*>(memberID.c_str()); |
||||
change_group_member_mute(_wrapper_callonce_cpp_function(callback),operationID_cs,groupID_cs,memberID_cs,mutedSeconds); |
||||
} |
||||
|
||||
|
||||
// set the role level of a group member
|
||||
void OpenIMManager::SetGroupMemberRoleLevel(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& memberID, int roleLevel) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* groupID_cs=const_cast<char*>(groupID.c_str()); |
||||
char* memberID_cs=const_cast<char*>(memberID.c_str()); |
||||
set_group_member_role_level(_wrapper_callonce_cpp_function(callback),operationID_cs,groupID_cs,memberID_cs,roleLevel); |
||||
} |
||||
|
||||
// set the information of a group member
|
||||
void OpenIMManager::SetGroupMemberInfo(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& groupMemberInfo) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* groupMemberInfo_cs=const_cast<char*>(groupMemberInfo.c_str()); |
||||
set_group_member_info(_wrapper_callonce_cpp_function(callback),operationID_cs,groupMemberInfo_cs); |
||||
} |
||||
|
||||
// get Joined Group List
|
||||
void OpenIMManager::GetJoinedGroupList(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
get_joined_group_list(_wrapper_callonce_cpp_function(callback),operationID_cs); |
||||
} |
||||
|
||||
// get specified groups info
|
||||
void OpenIMManager::GetSpecifiedGroupsInfo(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback,const std::string& operationID, const std::string& groupIDList) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* groupIDList_cs=const_cast<char*>(groupIDList.c_str()); |
||||
get_specified_groups_info(_wrapper_callonce_cpp_function(callback),operationID_cs,groupIDList_cs); |
||||
} |
||||
|
||||
// search groups
|
||||
void OpenIMManager::SearchGroups(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback,const std::string& operationID, const std::string& searchParam) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* searchParam_cs=const_cast<char*>(searchParam.c_str()); |
||||
search_groups(_wrapper_callonce_cpp_function(callback),operationID_cs,searchParam_cs); |
||||
} |
||||
|
||||
// set group info
|
||||
void OpenIMManager::SetGroupInfo(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback,const std::string& operationID, const std::string& groupInfo) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* groupInfo_cs=const_cast<char*>(groupInfo.c_str()); |
||||
set_group_info(_wrapper_callonce_cpp_function(callback),operationID_cs,groupInfo_cs); |
||||
} |
||||
|
||||
// set group verification
|
||||
void OpenIMManager::SetGroupVerification(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback,const std::string& operationID, const std::string& groupID, int verification) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* groupID_cs=const_cast<char*>(groupID.c_str()); |
||||
set_group_verification(_wrapper_callonce_cpp_function(callback),operationID_cs,groupID_cs,verification); |
||||
} |
||||
|
||||
// set group look member info
|
||||
void OpenIMManager::SetGroupLookMemberInfo(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback,const std::string& operationID, const std::string& groupID, int lookInfo) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* groupID_cs=const_cast<char*>(groupID.c_str()); |
||||
set_group_look_member_info(_wrapper_callonce_cpp_function(callback),operationID_cs,groupID_cs,lookInfo); |
||||
} |
||||
|
||||
// set group apply member friend
|
||||
void OpenIMManager::SetGroupApplyMemberFriend(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback,const std::string& operationID, const std::string& groupID, int rule) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* groupID_cs=const_cast<char*>(groupID.c_str()); |
||||
set_group_apply_member_friend(_wrapper_callonce_cpp_function(callback),operationID_cs,groupID_cs,rule); |
||||
} |
||||
|
||||
// get group member list
|
||||
void OpenIMManager::GetGroupMemberList(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback,const std::string& operationID, const std::string& groupID,int filter,int offset,int count) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* groupID_cs=const_cast<char*>(groupID.c_str()); |
||||
get_group_member_list(_wrapper_callonce_cpp_function(callback),operationID_cs,groupID_cs,filter,offset,count); |
||||
} |
||||
|
||||
|
||||
// get group member owner and admin
|
||||
void OpenIMManager::GetGroupMemberOwnerAndAdmin(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID,const std::string& groupID) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* groupID_cs=const_cast<char*>(groupID.c_str()); |
||||
get_group_member_owner_and_admin(_wrapper_callonce_cpp_function(callback),operationID_cs,groupID_cs); |
||||
} |
||||
|
||||
// get group application list
|
||||
void OpenIMManager::GetGroupMemberListByJoinTimeFilter(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& groupID, int offset, int count, long long int joinTimeBegin, long long int joinTimeEnd, const std::string& filteruserIDs) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* groupID_cs=const_cast<char*>(groupID.c_str()); |
||||
char* filteruserIDs_cs=const_cast<char*>(filteruserIDs.c_str()); |
||||
get_group_member_list_by_join_time_filter(_wrapper_callonce_cpp_function(callback),operationID_cs,groupID_cs,offset,count,joinTimeBegin,joinTimeEnd,filteruserIDs_cs); |
||||
} |
||||
|
||||
// get specified group members info
|
||||
void OpenIMManager::GetSpecifiedGroupMembersInfo(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& memberIDList) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* groupID_cs=const_cast<char*>(groupID.c_str()); |
||||
char* memberIDList_cs=const_cast<char*>(memberIDList.c_str()); |
||||
get_specified_group_members_info(_wrapper_callonce_cpp_function(callback),operationID_cs,groupID_cs,memberIDList_cs); |
||||
} |
||||
|
||||
// kick group members
|
||||
void OpenIMManager::KickGroupMember(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& reason, const std::string& userIDs) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* groupID_cs=const_cast<char*>(groupID.c_str()); |
||||
char* reason_cs=const_cast<char*>(reason.c_str()); |
||||
char* userIDs_cs=const_cast<char*>(userIDs.c_str()); |
||||
kick_group_member(_wrapper_callonce_cpp_function(callback),operationID_cs,groupID_cs,reason_cs,userIDs_cs); |
||||
} |
||||
|
||||
|
||||
// transfers the ownership of a group
|
||||
void OpenIMManager::TransferGroupOwner(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& groupID, const std::string& memberID, const std::string& notifyMsg) |
||||
{ |
||||
char* groupID_cs=const_cast<char*>(groupID.c_str()); |
||||
char* memberID_cs=const_cast<char*>(memberID.c_str()); |
||||
char* notifyMsg_cs=const_cast<char*>(notifyMsg.c_str()); |
||||
transfer_group_owner(_wrapper_callonce_cpp_function(callback),groupID_cs,memberID_cs,notifyMsg_cs); |
||||
} |
||||
|
||||
// invites users to a group
|
||||
void OpenIMManager::InviteUserToGroup(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& reason, const std::string& userIDs) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* groupID_cs=const_cast<char*>(groupID.c_str()); |
||||
char* reason_cs=const_cast<char*>(reason.c_str()); |
||||
char* userIDs_cs=const_cast<char*>(userIDs.c_str()); |
||||
invite_user_to_group(_wrapper_callonce_cpp_function(callback),operationID_cs,groupID_cs,reason_cs,userIDs_cs); |
||||
} |
||||
|
||||
// retrives the group application list as a recipient
|
||||
void OpenIMManager::GetGroupApplicationListAsRecipient(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback,const std::string& operationID) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
get_group_application_list_as_recipient(_wrapper_callonce_cpp_function(callback),operationID_cs); |
||||
} |
||||
|
||||
// retrives the group application list as an applicant
|
||||
void OpenIMManager::GetGroupApplicationListAsApplicant(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback,const std::string& operationID) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
get_group_application_list_as_applicant(_wrapper_callonce_cpp_function(callback),operationID_cs); |
||||
} |
||||
|
||||
// accept a group application
|
||||
void OpenIMManager::AcceptGroupApplication(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& fromUserID, const std::string& handleMsg) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* groupID_cs=const_cast<char*>(groupID.c_str()); |
||||
char* fromUserID_cs=const_cast<char*>(fromUserID.c_str()); |
||||
char* handleMsg_cs=const_cast<char*>(handleMsg.c_str()); |
||||
accept_group_application(_wrapper_callonce_cpp_function(callback),operationID_cs,groupID_cs,fromUserID_cs,handleMsg_cs); |
||||
} |
||||
|
||||
|
||||
// refuses a group application
|
||||
void OpenIMManager::RefuseGroupApplication(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& fromUserID, const std::string& handleMsg) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* groupID_cs=const_cast<char*>(groupID.c_str()); |
||||
char* fromUserID_cs=const_cast<char*>(fromUserID.c_str()); |
||||
char* handleMsg_cs=const_cast<char*>(handleMsg.c_str()); |
||||
refuse_group_application(_wrapper_callonce_cpp_function(callback),operationID_cs,groupID_cs,fromUserID_cs,handleMsg_cs); |
||||
} |
||||
|
||||
// set group member nickname
|
||||
void OpenIMManager::SetGroupMemberNickname(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& userID, const std::string& groupMemberNickname) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* groupID_cs=const_cast<char*>(groupID.c_str()); |
||||
char* userID_cs=const_cast<char*>(userID.c_str()); |
||||
char* groupMemberNickname_cs=const_cast<char*>(groupMemberNickname.c_str()); |
||||
set_group_member_nickname(_wrapper_callonce_cpp_function(callback),operationID_cs,groupID_cs,userID_cs,groupMemberNickname_cs); |
||||
} |
||||
|
||||
// search group members
|
||||
void OpenIMManager::SearchGroupMembers(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& searchParam) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* searchParam_cs=const_cast<char*>(searchParam.c_str()); |
||||
search_group_members(_wrapper_callonce_cpp_function(callback),operationID_cs,searchParam_cs); |
||||
} |
||||
|
||||
// check if the user has joined a certain group
|
||||
void OpenIMManager::IsJoinGroup(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback,const std::string& operationID, const std::string& groupID) |
||||
{ |
||||
char* operationID_cs=const_cast<char*>(operationID.c_str()); |
||||
char* groupID_cs=const_cast<char*>(groupID.c_str()); |
||||
is_join_group(_wrapper_callonce_cpp_function(callback),operationID_cs,groupID_cs); |
||||
} |
||||
|
||||
|
||||
} |
@ -0,0 +1,623 @@ |
||||
#pragma onces |
||||
|
||||
#include "openimsdk.h" |
||||
#include <functional> |
||||
#include <string> |
||||
#include <memory> |
||||
#include <iostream> |
||||
#include <bitset> |
||||
#include <atomic> |
||||
#include <thread> |
||||
#include <chrono> |
||||
#include <mutex> |
||||
|
||||
#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 |
||||
#define MAX_NUM_OF_CB_S_I_S_S_I 10 |
||||
#define SLEEP_TIME_FOR_GET_INDEX 100 //ms
|
||||
|
||||
// use recursive template to generate enough function pointer array
|
||||
// and define c type function interface
|
||||
// and define manager class to manage function pool
|
||||
namespace { |
||||
CB_S* _fps_cb_s=new CB_S[MAX_NUM_OF_CB_S]; |
||||
CB_I_S* _fps_cb_i_s=new CB_I_S[MAX_NUM_OF_CB_I_S]; |
||||
CB_S_I_S_S* _fps_cb_s_i_s_s=new CB_S_I_S_S[MAX_NUM_OF_CB_S_I_S_S]; |
||||
CB_S_I_S_S_I* _fps_cb_s_i_s_s_i=new CB_S_I_S_S_I[MAX_NUM_OF_CB_S_I_S_S_I]; |
||||
// c type func interface call cpp function
|
||||
std::function<void(const std::string&)>* _cpp_function_cb_s=new std::function<void(const std::string&)>[MAX_NUM_OF_CB_S]; |
||||
std::function<void(int,const std::string&)>* _cpp_function_cb_i_s=new std::function<void(int,const std::string&)>[MAX_NUM_OF_CB_I_S]; |
||||
std::function<void(const std::string&,int,const std::string&,const std::string&)>* _cpp_function_cb_s_i_s_s=new std::function<void(const std::string&,int,const std::string&,const std::string&)>[MAX_NUM_OF_CB_S_I_S_S]; |
||||
std::function<void(const std::string&,int,const std::string&,const std::string&,int)>* _cpp_function_cb_s_i_s_s_i=new std::function<void(const std::string&,int,const std::string&,const std::string&,int)>[MAX_NUM_OF_CB_S_I_S_S_I]; |
||||
|
||||
template<int N> |
||||
void _generate_cb_s(){ |
||||
_fps_cb_s[N]=[](char* c_str){ |
||||
_cpp_function_cb_s[N](std::string(c_str)); |
||||
}; |
||||
_generate_cb_s<N-1>(); |
||||
} |
||||
template<> |
||||
void _generate_cb_s<0>(){ |
||||
_fps_cb_s[0]=[](char* c_str){ |
||||
_cpp_function_cb_s[0](std::string(c_str)); |
||||
}; |
||||
} |
||||
|
||||
template<int N> |
||||
void _generate_cb_i_s(){ |
||||
_fps_cb_i_s[N]=[](int code,char* c_str){ |
||||
_cpp_function_cb_i_s[N](code,std::string(c_str)); |
||||
}; |
||||
_generate_cb_i_s<N-1>(); |
||||
} |
||||
template<> |
||||
void _generate_cb_i_s<0>(){ |
||||
_fps_cb_i_s[0]=[](int code,char* c_str){ |
||||
_cpp_function_cb_i_s[0](code,std::string(c_str)); |
||||
}; |
||||
} |
||||
template<int N> |
||||
void _generate_cb_s_i_s_s(){ |
||||
_fps_cb_s_i_s_s[N]=[](char* operationID,int code,char* c_str,char* c_str2){ |
||||
_cpp_function_cb_s_i_s_s[N](std::string(operationID),code,std::string(c_str),std::string(c_str2)); |
||||
}; |
||||
_generate_cb_s_i_s_s<N-1>(); |
||||
} |
||||
template<> |
||||
void _generate_cb_s_i_s_s<0>(){ |
||||
_fps_cb_s_i_s_s[0]=[](char* operationID,int code,char* c_str,char* c_str2){ |
||||
_cpp_function_cb_s_i_s_s[0](std::string(operationID),code,std::string(c_str),std::string(c_str2)); |
||||
}; |
||||
} |
||||
template<int N> |
||||
void _generate_cb_s_i_s_s_i(){ |
||||
_fps_cb_s_i_s_s_i[N]=[](char* operationID,int code,char* c_str,char* c_str2,int c_int){ |
||||
_cpp_function_cb_s_i_s_s_i[N](std::string(operationID),code,std::string(c_str),std::string(c_str2),c_int); |
||||
}; |
||||
_generate_cb_s_i_s_s_i<N-1>(); |
||||
} |
||||
template<> |
||||
void _generate_cb_s_i_s_s_i<0>(){ |
||||
_fps_cb_s_i_s_s_i[0]=[](char* operationID,int code,char* c_str,char* c_str2,int c_int){ |
||||
_cpp_function_cb_s_i_s_s_i[0](std::string(operationID),code,std::string(c_str),std::string(c_str2),c_int); |
||||
}; |
||||
} |
||||
|
||||
// init global function pointer array
|
||||
void init(){ |
||||
_generate_cb_s<MAX_NUM_OF_CB_S-1>(); |
||||
_generate_cb_i_s<MAX_NUM_OF_CB_I_S-1>(); |
||||
_generate_cb_s_i_s_s<MAX_NUM_OF_CB_S_I_S_S-1>(); |
||||
_generate_cb_s_i_s_s_i<MAX_NUM_OF_CB_S_I_S_S_I-1>(); |
||||
} |
||||
// define sigle instance class to manage function pool
|
||||
class FuncPoolManager{ |
||||
private: |
||||
// define a global bitmap, and support atomic operation, to manage cb_s pool
|
||||
std::bitset<MAX_NUM_OF_CB_S> _cb_s_bitmap; |
||||
std::bitset<MAX_NUM_OF_CB_I_S> _cb_i_s_bitmap; |
||||
std::bitset<MAX_NUM_OF_CB_S_I_S_S> _cb_s_i_s_s_bitmap; |
||||
std::bitset<MAX_NUM_OF_CB_S_I_S_S_I> _cb_s_i_s_s_i_bitmap; |
||||
std::mutex _cb_s_mutex; |
||||
std::mutex _cb_i_s_mutex; |
||||
std::mutex _cb_s_i_s_s_mutex; |
||||
std::mutex _cb_s_i_s_s_i_mutex; |
||||
FuncPoolManager(){ |
||||
init(); |
||||
} |
||||
FuncPoolManager(const FuncPoolManager&){} |
||||
public: |
||||
static FuncPoolManager& get_instance(){ |
||||
static FuncPoolManager instance; |
||||
return instance; |
||||
} |
||||
// get a available cb_s function index
|
||||
int get_cb_s_index(){ |
||||
std::lock_guard<std::mutex> lock(_cb_s_mutex); |
||||
int index=-1; |
||||
for(int i=0;i<_cb_s_bitmap.size();i++){ |
||||
if(_cb_s_bitmap[i]==0){ |
||||
_cb_s_bitmap[i]=1; |
||||
index=i; |
||||
break; |
||||
} |
||||
} |
||||
return index; |
||||
} |
||||
// get a available cb_i_s function index
|
||||
int get_cb_i_s_index(){ |
||||
std::lock_guard<std::mutex> lock(_cb_i_s_mutex); |
||||
int index=-1; |
||||
for(int i=0;i<_cb_i_s_bitmap.size();i++){ |
||||
if(_cb_i_s_bitmap[i]==0){ |
||||
_cb_i_s_bitmap[i]=1; |
||||
index=i; |
||||
break; |
||||
} |
||||
} |
||||
return index; |
||||
} |
||||
// get a available cb_s_i_s_s function index
|
||||
int get_cb_s_i_s_s_index(){ |
||||
std::lock_guard<std::mutex> lock(_cb_s_i_s_s_mutex); |
||||
int index=-1; |
||||
for(int i=0;i<_cb_s_i_s_s_bitmap.size();i++){ |
||||
if(_cb_s_i_s_s_bitmap[i]==0){ |
||||
_cb_s_i_s_s_bitmap[i]=1; |
||||
index=i; |
||||
break; |
||||
} |
||||
} |
||||
return index; |
||||
} |
||||
// get a available cb_s_i_s_s_i function index
|
||||
int get_cb_s_i_s_s_i_index(){ |
||||
std::lock_guard<std::mutex> lock(_cb_s_i_s_s_i_mutex); |
||||
int index=-1; |
||||
for(int i=0;i<_cb_s_i_s_s_i_bitmap.size();i++){ |
||||
if(_cb_s_i_s_s_i_bitmap[i]==0){ |
||||
_cb_s_i_s_s_i_bitmap[i]=1; |
||||
index=i; |
||||
break; |
||||
} |
||||
} |
||||
return index; |
||||
} |
||||
// release a available cb_s function index
|
||||
int release_cb_s_index(int index){ |
||||
std::lock_guard<std::mutex> lock(_cb_s_mutex); |
||||
if(index<0||index>=_cb_s_bitmap.size()){ |
||||
return -1; |
||||
} |
||||
_cpp_function_cb_s[index]=nullptr; |
||||
_cb_s_bitmap[index]=0; |
||||
return 0; |
||||
} |
||||
// release a available cb_i_s function index
|
||||
int release_cb_i_s_index(int index){ |
||||
std::lock_guard<std::mutex> lock(_cb_i_s_mutex); |
||||
if(index<0||index>=_cb_i_s_bitmap.size()){ |
||||
return -1; |
||||
} |
||||
_cpp_function_cb_i_s[index]=nullptr; |
||||
_cb_i_s_bitmap[index]=0; |
||||
return 0; |
||||
} |
||||
// release a available cb_s_i_s_s function index
|
||||
int release_cb_s_i_s_s_index(int index){ |
||||
std::lock_guard<std::mutex> lock(_cb_s_i_s_s_mutex); |
||||
if(index<0||index>=_cb_s_i_s_s_bitmap.size()){ |
||||
return -1; |
||||
} |
||||
_cpp_function_cb_s_i_s_s[index]=nullptr; |
||||
_cb_s_i_s_s_bitmap[index]=0; |
||||
return 0; |
||||
} |
||||
// release a available cb_s_i_s_s_i function index
|
||||
int release_cb_s_i_s_s_i_index(int index){ |
||||
std::lock_guard<std::mutex> lock(_cb_s_i_s_s_i_mutex); |
||||
if(index<0||index>=_cb_s_i_s_s_i_bitmap.size()){ |
||||
return -1; |
||||
} |
||||
_cpp_function_cb_s_i_s_s_i[index]=nullptr; |
||||
_cb_s_i_s_s_i_bitmap[index]=0; |
||||
return 0; |
||||
} |
||||
}; |
||||
FuncPoolManager& instance=FuncPoolManager::get_instance(); |
||||
|
||||
// wrapper persistent function
|
||||
// wrapp CB_S,if function pool is full,return nullptr
|
||||
CB_S _wrapper_cpp_function(const std::function<void(const std::string&)>& cpp_function) { |
||||
int index=FuncPoolManager::get_instance().get_cb_s_index(); |
||||
while(index<0){ |
||||
std::this_thread::sleep_for(std::chrono::milliseconds(SLEEP_TIME_FOR_GET_INDEX)); |
||||
index=FuncPoolManager::get_instance().get_cb_s_index(); |
||||
} |
||||
_cpp_function_cb_s[index]=cpp_function; |
||||
return _fps_cb_s[index]; |
||||
} |
||||
// wrapp CB_I_S
|
||||
CB_I_S _wrapper_cpp_function(const std::function<void(int,const std::string&)>& cpp_function) |
||||
{ |
||||
int index=FuncPoolManager::get_instance().get_cb_i_s_index(); |
||||
while(index<0){ |
||||
std::this_thread::sleep_for(std::chrono::milliseconds(SLEEP_TIME_FOR_GET_INDEX)); |
||||
index=FuncPoolManager::get_instance().get_cb_i_s_index(); |
||||
} |
||||
_cpp_function_cb_i_s[index]=cpp_function; |
||||
return _fps_cb_i_s[index]; |
||||
} |
||||
// wrapp CB_S_I_S_S
|
||||
CB_S_I_S_S _wrapper_cpp_function(const std::function<void(const std::string&,int,const std::string&,const std::string&)>& cpp_function) |
||||
{ |
||||
int index=FuncPoolManager::get_instance().get_cb_s_i_s_s_index(); |
||||
while(index<0){ |
||||
std::this_thread::sleep_for(std::chrono::milliseconds(SLEEP_TIME_FOR_GET_INDEX)); |
||||
index=FuncPoolManager::get_instance().get_cb_s_i_s_s_index(); |
||||
} |
||||
_cpp_function_cb_s_i_s_s[index]=cpp_function; |
||||
return _fps_cb_s_i_s_s[index]; |
||||
} |
||||
// wrapp CB_S_I_S_S_I
|
||||
CB_S_I_S_S_I _wrapper_cpp_function(const std::function<void(const std::string&,int,const std::string&,const std::string&,int)>& cpp_function) |
||||
{ |
||||
int index=FuncPoolManager::get_instance().get_cb_s_i_s_s_i_index(); |
||||
while(index<0){ |
||||
std::this_thread::sleep_for(std::chrono::milliseconds(SLEEP_TIME_FOR_GET_INDEX)); |
||||
index=FuncPoolManager::get_instance().get_cb_s_i_s_s_i_index(); |
||||
} |
||||
_cpp_function_cb_s_i_s_s_i[index]=cpp_function; |
||||
return _fps_cb_s_i_s_s_i[index]; |
||||
} |
||||
|
||||
// wrapp function to onetime function
|
||||
CB_S _wrapper_callonce_cpp_function(const std::function<void(const std::string&)>& cpp_function) { |
||||
int index=FuncPoolManager::get_instance().get_cb_s_index(); |
||||
while(index<0){ |
||||
std::this_thread::sleep_for(std::chrono::milliseconds(SLEEP_TIME_FOR_GET_INDEX)); |
||||
index=FuncPoolManager::get_instance().get_cb_s_index(); |
||||
} |
||||
_cpp_function_cb_s[index]=[cpp_function,index](const std::string& str)->void { |
||||
cpp_function(str); |
||||
FuncPoolManager::get_instance().release_cb_s_index(index); |
||||
}; |
||||
return _fps_cb_s[index]; |
||||
} |
||||
|
||||
CB_I_S _wrapper_callonce_cpp_function(const std::function<void(int,const std::string&)>& cpp_function) |
||||
{ |
||||
int index=FuncPoolManager::get_instance().get_cb_i_s_index(); |
||||
while(index<0){ |
||||
std::this_thread::sleep_for(std::chrono::milliseconds(SLEEP_TIME_FOR_GET_INDEX)); |
||||
index=FuncPoolManager::get_instance().get_cb_i_s_index(); |
||||
} |
||||
_cpp_function_cb_i_s[index]=[cpp_function,index](int code,const std::string& str)->void { |
||||
cpp_function(code,str); |
||||
FuncPoolManager::get_instance().release_cb_i_s_index(index); |
||||
}; |
||||
return _fps_cb_i_s[index]; |
||||
} |
||||
|
||||
CB_S_I_S_S _wrapper_callonce_cpp_function(const std::function<void(const std::string&,int,const std::string&,const std::string&)>& cpp_function) |
||||
{ |
||||
int index=FuncPoolManager::get_instance().get_cb_s_i_s_s_index(); |
||||
while(index<0){ |
||||
std::this_thread::sleep_for(std::chrono::milliseconds(SLEEP_TIME_FOR_GET_INDEX)); |
||||
index=FuncPoolManager::get_instance().get_cb_s_i_s_s_index(); |
||||
} |
||||
_cpp_function_cb_s_i_s_s[index]=[cpp_function,index](const std::string& operationID,int code,const std::string& str,const std::string& str2)->void { |
||||
cpp_function(operationID,code,str,str2); |
||||
FuncPoolManager::get_instance().release_cb_s_i_s_s_index(index); |
||||
}; |
||||
return _fps_cb_s_i_s_s[index]; |
||||
} |
||||
|
||||
CB_S_I_S_S_I _wrapper_callonce_cpp_function(const std::function<void(const std::string&,int,const std::string&,const std::string&,int)>& cpp_function) |
||||
{ |
||||
int index=FuncPoolManager::get_instance().get_cb_s_i_s_s_i_index(); |
||||
// while loop util get a available index
|
||||
while(index<0){ |
||||
std::this_thread::sleep_for(std::chrono::milliseconds(SLEEP_TIME_FOR_GET_INDEX)); |
||||
index=FuncPoolManager::get_instance().get_cb_s_i_s_s_i_index(); |
||||
} |
||||
_cpp_function_cb_s_i_s_s_i[index]=[cpp_function,index](const std::string& operationID,int code,const std::string& str,const std::string& str2,int c_int)->void { |
||||
cpp_function(operationID,code,str,str2,c_int); |
||||
FuncPoolManager::get_instance().release_cb_s_i_s_s_i_index(index); |
||||
}; |
||||
return _fps_cb_s_i_s_s_i[index]; |
||||
} |
||||
|
||||
} |
||||
|
||||
|
||||
namespace openim{ |
||||
|
||||
class OpenIMManager |
||||
{ |
||||
private: |
||||
OpenIMManager(){} |
||||
public: |
||||
// instance pattern
|
||||
static OpenIMManager& GetInstance(); |
||||
|
||||
//must be called before use sdk
|
||||
bool InitSDK(const std::function<void(int, const std::string&)>& cCallback,const std::string& operationID,const std::string& config); |
||||
|
||||
void UnInitSDK(const std::string& operationID); |
||||
|
||||
// // set print
|
||||
// void SetPrint(const std::function<void(const std::string&)>& printCallBack);
|
||||
|
||||
// set group listener
|
||||
void SetGroupListener(const std::function<void(int,const std::string&)>& groupListenerCallBack); |
||||
|
||||
// set conversation listener
|
||||
void SetConversationListener(const std::function<void(int, const std::string &)>& conversationListenerCallback); |
||||
|
||||
// set advanced msg listener
|
||||
void SetAdvancedMsgListener(const std::function<void(int, const std::string &)>& advancedMsgListenerCallback); |
||||
|
||||
// set batch msg listener
|
||||
void SetBatchMsgListener(const std::function<void(int, const std::string &)>& batchMsgListenerCallback); |
||||
|
||||
// set user listener
|
||||
void SetUserListener(const std::function<void(int, const std::string &)>& userListenerCallback); |
||||
|
||||
// set friend listener
|
||||
void SetFriendListener(const std::function<void(int, const std::string &)>& friendListenerCallback); |
||||
|
||||
// set custom business listener
|
||||
void SetCustomBusinessListener(const std::function<void(int, const std::string &)>& customBusinessListenerCallback); |
||||
|
||||
// login
|
||||
void Login(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& loginCallback, const std::string& operationID, const std::string& uid, const std::string& token); |
||||
|
||||
// logout
|
||||
void Logout(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& logoutCallback, const std::string& operationID); |
||||
|
||||
// network status changed
|
||||
void NetworkStatusChanged(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& networkStatusCallback, const std::string& operationID); |
||||
|
||||
// get login status
|
||||
GoInt GetLoginStatus(const std::string& operationID); |
||||
|
||||
// get login user
|
||||
std::string GetLoginUser(); |
||||
|
||||
// create text message
|
||||
std::string CreateTextMessage(const std::string& operationID, const std::string& text); |
||||
|
||||
// create advanced text message
|
||||
std::string CreateAdvancedTextMessage(const std::string& operationID, const std::string& text, const std::string& messageEntityList); |
||||
|
||||
// create text at message
|
||||
std::string CreateTextAtMessage(const std::string& operationID, const std::string& text, const std::string& atUserList, const std::string& atUsersInfo, const std::string& message); |
||||
|
||||
// create location message
|
||||
std::string CreateLocationMessage(const std::string& operationID, const std::string& description, double longitude, double latitude); |
||||
|
||||
// create custom message
|
||||
std::string CreateCustomMessage(const std::string& operationID, const std::string& data, const std::string& extension, const std::string& description); |
||||
|
||||
// create quote message
|
||||
std::string CreateQuoteMessage(const std::string& operationID, const std::string& text, const std::string& message); |
||||
|
||||
|
||||
// create advanced quote message
|
||||
std::string CreateAdvancedQuoteMessage(const std::string& operationID, const std::string& text, const std::string& message, const std::string& messageEntityList); |
||||
|
||||
// create card message
|
||||
std::string CreateCardMessage(const std::string& operationID, const std::string& cardInfo); |
||||
|
||||
// create video message from full path
|
||||
std::string CreateVideoMessageFromFullPath(const std::string& operationID, const std::string& videoFullPath, const std::string& videoType, long long int duration, const std::string& snapshotFullPath); |
||||
|
||||
// create image message from full path
|
||||
std::string CreateImageMessageFromFullPath(const std::string& operationID, const std::string& imageFullPath); |
||||
|
||||
// create sound message from full path
|
||||
std::string CreateSoundMessageFromFullPath(const std::string& operationID, const std::string& soundPath, long long int duration); |
||||
|
||||
// create file message from full path
|
||||
std::string CreateFileMessageFromFullPath(const std::string& operationID, const std::string& fileFullPath, const std::string& fileName); |
||||
|
||||
// create image message
|
||||
std::string CreateImageMessage(const std::string& operationID, const std::string& imagePath); |
||||
|
||||
|
||||
// create image message by URL
|
||||
std::string CreateImageMessageByURL(const std::string& operationID, const std::string& sourcePicture, const std::string& bigPicture, const std::string& snapshotPicture); |
||||
|
||||
// create sound message by URL
|
||||
std::string CreateSoundMessageByURL(const std::string& operationID, const std::string& soundBaseInfo); |
||||
|
||||
// create sound message
|
||||
std::string CreateSoundMessage(const std::string& operationID, const std::string& soundPath, long long int duration); |
||||
|
||||
// create video message by URL
|
||||
std::string CreateVideoMessageByURL(const std::string& operationID, const std::string& videoBaseInfo); |
||||
|
||||
// create video message
|
||||
std::string CreateVideoMessage(const std::string& operationID, const std::string& videoPath, const std::string& videoType, long long int duration, const std::string& snapshotPath); |
||||
|
||||
// create file message by URL
|
||||
std::string CreateFileMessageByURL(const std::string& operationID, const std::string& fileBaseInfo); |
||||
|
||||
// create file message
|
||||
std::string CreateFileMessage(const std::string& operationID, const std::string& filePath, const std::string& fileName); |
||||
|
||||
// create merger message
|
||||
std::string CreateMergerMessage(const std::string& operationID, const std::string& messageList, const std::string& title, const std::string& summaryList); |
||||
|
||||
// create face message
|
||||
std::string CreateFaceMessage(const std::string& operationID, int index, const std::string& data); |
||||
|
||||
// create forward message
|
||||
std::string CreateForwardMessage(const std::string& operationID, const std::string& m); |
||||
|
||||
// get all conversation list
|
||||
void GetAllConversationList(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& getAllConversationListCallback, const std::string& operationID); |
||||
|
||||
// get advanced history message list
|
||||
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); |
||||
|
||||
// // =====================================================user===============================================
|
||||
// //
|
||||
|
||||
// get users info
|
||||
void GetUsersInfo(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& userIDs); |
||||
|
||||
// get users info from server
|
||||
void GetUsersInfoFromServer(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& userIDs); |
||||
|
||||
// set self info
|
||||
void SetSelfInfo(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& userInfo); |
||||
|
||||
// get self user info
|
||||
void GetSelfUserInfo(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID); |
||||
|
||||
// update message sender info
|
||||
void UpdateMessageSenderInfo(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& nickname, const std::string& faceURL); |
||||
|
||||
// subscribe users status
|
||||
void SubscribeUsersStatus(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& userIDs); |
||||
|
||||
|
||||
// unsubscribe users status
|
||||
void UnsubscribeUsersStatus(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& userIDs); |
||||
|
||||
// get subscribe users status
|
||||
void GetSubscribeUsersStatus(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID); |
||||
|
||||
// get user status
|
||||
void GetUserStatus(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& userIDs); |
||||
|
||||
// // =====================================================friend===============================================
|
||||
// //
|
||||
|
||||
// get specified friends info
|
||||
void GetSpecifiedFriendsInfo(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& userIDs); |
||||
|
||||
// get friend list
|
||||
void GetFriendList(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID); |
||||
|
||||
// get friend list page
|
||||
void GetFriendListPage(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, int offset, int count); |
||||
|
||||
// search friends
|
||||
void SearchFriends(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& searchParam); |
||||
|
||||
// check friend
|
||||
void CheckFriend(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& userIDs); |
||||
|
||||
// add friend
|
||||
void AddFriend(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& userIDReqMsg); |
||||
|
||||
// set friend remark
|
||||
void SetFriendRemark(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& userIDRemark); |
||||
|
||||
// delete friend
|
||||
void DeleteFriend(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& friendUserID); |
||||
|
||||
// get friend application list as recipient
|
||||
void GetFriendApplicationListAsRecipant(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID); |
||||
|
||||
// get friend application list as applicant
|
||||
void GetFriendApplicationListAsApplicant(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID); |
||||
|
||||
// accept friend application
|
||||
void AcceptFriendApplication(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& userIDHandleMsg); |
||||
|
||||
// refuse friend application
|
||||
void RefuseFriendApplication(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& userIDHandleMsg); |
||||
|
||||
// add black
|
||||
void AddBlack(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& blackUserID); |
||||
|
||||
// get black list
|
||||
void GetBlackList(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID); |
||||
|
||||
// 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); |
||||
|
||||
|
||||
// // =====================================================group===============================================
|
||||
// //
|
||||
|
||||
// create group
|
||||
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); |
||||
|
||||
// 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); |
||||
|
||||
// dismiss group
|
||||
void DismissGroup(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& groupID); |
||||
|
||||
// change group mute
|
||||
void ChangeGroupMute(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& groupID, bool isMute); |
||||
|
||||
// change group member mute
|
||||
void ChangeGroupMemberMute(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& userID, int mutedSeconds); |
||||
|
||||
// SetGroupMemberRoleLevel sets the role level of a group member
|
||||
void SetGroupMemberRoleLevel(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& userID, int roleLevel); |
||||
|
||||
// SetGroupMemberInfo sets the information of a group member
|
||||
void SetGroupMemberInfo(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& groupMemberInfo); |
||||
|
||||
// GetJoinedGroupList retrieves the list of joined groups
|
||||
void GetJoinedGroupList(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID); |
||||
|
||||
// GetSpecifiedGroupsInfo retrieves the information of specified groups
|
||||
void GetSpecifiedGroupsInfo(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& groupIDList); |
||||
|
||||
// SearchGroups searches for groups
|
||||
void SearchGroups(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& searchParam); |
||||
|
||||
// SetGroupInfo sets the information of a group
|
||||
void SetGroupInfo(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& groupInfo); |
||||
|
||||
// SetGroupVerification sets the verification mode of a group
|
||||
void SetGroupVerification(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& groupID, int verification); |
||||
|
||||
|
||||
// SetGroupLookMemberInfo sets the member information visibility of a group
|
||||
void SetGroupLookMemberInfo(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& groupID, int rule); |
||||
|
||||
// SetGroupApplyMemberFriend sets the friend rule for group applicants
|
||||
void SetGroupApplyMemberFriend(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& groupID, int rule); |
||||
|
||||
// GetGroupMemberList retrieves the list of group members
|
||||
void GetGroupMemberList(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& groupID, int filter, int offset, int count); |
||||
|
||||
// GetGroupMemberOwnerAndAdmin retrieves the owner and admin members of a group
|
||||
void GetGroupMemberOwnerAndAdmin(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& groupID); |
||||
|
||||
// GetGroupMemberListByJoinTimeFilter retrieves the list of group members filtered by join time
|
||||
void GetGroupMemberListByJoinTimeFilter(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& groupID, int offset, int count, long long int joinTimeBegin, long long int joinTimeEnd, const std::string& filteruserIDs); |
||||
|
||||
// GetSpecifiedGroupMembersInfo retrieves the information of specified group members
|
||||
void GetSpecifiedGroupMembersInfo(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& userIDs); |
||||
|
||||
// KickGroupMember kicks group members
|
||||
void KickGroupMember(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& reason, const std::string& userIDs); |
||||
|
||||
// TransferGroupOwner transfers the ownership of a group
|
||||
void TransferGroupOwner(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& newOwnerUserID); |
||||
|
||||
// InviteUserToGroup invites users to a group
|
||||
void InviteUserToGroup(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& reason, const std::string& userIDs); |
||||
|
||||
// GetGroupApplicationListAsRecipient retrieves the group application list as a recipient
|
||||
void GetGroupApplicationListAsRecipient(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID); |
||||
|
||||
// GetGroupApplicationListAsApplicant retrieves the group application list as an applicant
|
||||
void GetGroupApplicationListAsApplicant(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID); |
||||
|
||||
// AcceptGroupApplication accepts a group application
|
||||
void AcceptGroupApplication(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& fromUserID, const std::string& handleMsg); |
||||
|
||||
// RefuseGroupApplication refuses a group application
|
||||
void RefuseGroupApplication(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& fromUserID, const std::string& handleMsg); |
||||
|
||||
// SetGroupMemberNickname sets the nickname of a group member
|
||||
void SetGroupMemberNickname(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& userID, const std::string& groupMemberNickname); |
||||
|
||||
// SearchGroupMembers searches for group members
|
||||
void SearchGroupMembers(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& searchParam); |
||||
|
||||
// IsJoinGroup checks if the user has joined a group
|
||||
void IsJoinGroup(const std::function<void(const std::string&, int, const std::string&, const std::string&)>& callback, const std::string& operationID, const std::string& groupID); |
||||
|
||||
}; |
||||
|
||||
} |
@ -0,0 +1,92 @@ |
||||
package main |
||||
|
||||
/* |
||||
#include <stdio.h> |
||||
#include <stdlib.h> |
||||
typedef void (*CB_S)(char *); |
||||
typedef void (*CB_I_S)(int,char *); |
||||
typedef void (*CB_S_I_S_S)(char *,int,char *,char *); |
||||
typedef void (*CB_S_I_S_S_I)(char *,int,char *,char *,int); |
||||
|
||||
CB_S DebugPrint; |
||||
|
||||
void Call_CB_S(CB_S func,char* data) |
||||
{ |
||||
if(func == NULL){ |
||||
printf("callback func is null\n"); |
||||
return; |
||||
} |
||||
func(data); |
||||
} |
||||
|
||||
|
||||
void Call_CB_I_S(CB_I_S func,int event,char* data) |
||||
{ |
||||
if(func == NULL){ |
||||
printf("callback func is null\n"); |
||||
return; |
||||
} |
||||
func(event,data); |
||||
if (data != NULL && data[0] != '\0') |
||||
{ |
||||
printf("this is not null data event\n"); |
||||
free(data); |
||||
} |
||||
} |
||||
void Call_CB_S_I_S_S(CB_S_I_S_S func,char* operationID, int errCode,char* errMsg,char* data) |
||||
{ |
||||
if(func == NULL){ |
||||
printf("callback func is null\n"); |
||||
return; |
||||
} |
||||
func(operationID,errCode,errMsg,data); |
||||
if (errMsg != NULL && errMsg[0] != '\0') |
||||
{ |
||||
printf("this is not null errmsg\n"); |
||||
free(errMsg); |
||||
} |
||||
if (data != NULL && data[0] != '\0') |
||||
{ |
||||
printf("this is not null data base,opid:%s,data:%s\n",operationID,data); |
||||
free(data); |
||||
} |
||||
if (operationID != NULL) |
||||
{ |
||||
printf("this is not null operationID:%s\n",operationID); |
||||
free(operationID); |
||||
} |
||||
} |
||||
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) |
||||
{ |
||||
if(func == NULL){ |
||||
printf("callback func is null\n"); |
||||
return; |
||||
} |
||||
func(operationID,errCode,errMsg,data,progress); |
||||
if (errMsg != NULL && errMsg[0] != '\0') |
||||
{ |
||||
printf("this is not null errmsg\n"); |
||||
free(errMsg); |
||||
} |
||||
if (data != NULL && data[0] != '\0') |
||||
{ |
||||
printf("this is not null data\n"); |
||||
free(data); |
||||
} |
||||
if (operationID != NULL) |
||||
{ |
||||
printf("this is not null operationID\n"); |
||||
free(operationID); |
||||
} |
||||
} |
||||
|
||||
enum CONN_EVENT{ |
||||
CONNECTING, |
||||
CONNECT_SUCCESS, |
||||
CONNECT_FAILED, |
||||
KICKED_OFFLINE, |
||||
USER_TOKEN_EXPIRED |
||||
|
||||
}; |
||||
*/ |
||||
import "C" |
@ -0,0 +1,18 @@ |
||||
#!/bin/bash |
||||
|
||||
|
||||
# if arg 1 is c,or is none,means test c sdk |
||||
# if arg 1 is cc,means test cpp sdk |
||||
|
||||
rm ./test |
||||
if [ "$1" == "c" ] || [ "$1" == "" ]; then |
||||
echo "test c sdk" |
||||
gcc -o test ./test.c ./openimsdk.so |
||||
./test |
||||
exit 0 |
||||
elif [ "$1" == "cc" ]; then |
||||
echo "test cpp sdk" |
||||
g++ -o test ./test.cc ./openimsdk.so ./openimsdkcc.so |
||||
./test |
||||
exit 0 |
||||
fi |
@ -0,0 +1,66 @@ |
||||
// gcc -o test.exe -lc_wrapper.dll test.c
|
||||
#include <stdio.h> |
||||
#include <stdlib.h> |
||||
#include <unistd.h> |
||||
|
||||
#include "openimsdk.h" |
||||
|
||||
typedef struct |
||||
{ |
||||
GoUint32 platformID; |
||||
char apiAddr[256]; |
||||
char wsAddr[256]; |
||||
char dataDir[256]; |
||||
GoUint32 logLevel; |
||||
GoUint8 isLogStandardOutput; |
||||
char logFilePath[256]; |
||||
GoUint8 isExternalExtensions; |
||||
} IMConfigC; |
||||
|
||||
void c_conn_callback(int event, char *data) |
||||
{ |
||||
printf("C c_conn_callback receive from Go callbck code: %d,data: %s\n", event,data); |
||||
|
||||
} |
||||
void c_conversation_callback(int event, char *data) |
||||
{ |
||||
printf("C c_conversation_callback receive from Go callbck code: %d,data: %s\n", event, data); |
||||
} |
||||
void c_message_callback(int event, char *data) |
||||
{ |
||||
printf("C c_message_callback receive from Go callbck code: %d,data: %s\n", event, data); |
||||
} |
||||
void c_base_callback(char * operationID ,int errCode,char * errMsg,char *data) |
||||
{ |
||||
printf("C c_base_callback operationID: %s receive from Go callbck code: %d, errMsg: %s, data: %s\n", operationID, errCode, errMsg, data); |
||||
} |
||||
int main(int argc, char **argv) |
||||
{ |
||||
char operationID[] = "12345"; |
||||
// char uid[] = "6959062403";
|
||||
char uid[] = "openIM123"; |
||||
// char token[] = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVc2VySUQiOiI2OTU5MDYyNDAzIiwiUGxhdGZvcm1JRCI6MywiZXhwIjoxNzAwNzIwOTg0LCJuYmYiOjE2OTI5NDQ2ODQsImlhdCI6MTY5Mjk0NDk4NH0.8otKTFrOCs8_ueV10rNOD-rzHrCT_EN0obKS9q79bIc";
|
||||
char token[] = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVc2VySUQiOiJvcGVuSU0xMjMiLCJQbGF0Zm9ybUlEIjo2LCJleHAiOjE3MDkxMjQ2NzYsIm5iZiI6MTcwMTM0ODM3NiwiaWF0IjoxNzAxMzQ4Njc2fQ.EqlV5TlpiElYhUOHCEcSrZOWi9ldrUMR1L4q0blvxs0"; |
||||
|
||||
char *jsonString = "{\"platformID\": 2, \"apiAddr\": \"http://14.29.168.56:10002\", \"wsAddr\":\"ws://14.29.168.56:10001\",\"dataDir\": \"./\", \"logLevel\": 5, \"isLogStandardOutput\": true, \"logFilePath\": \"./\", \"isExternalExtensions\": true}"; |
||||
|
||||
GoUint8 init_result; |
||||
init_result = init_sdk(c_conn_callback,operationID, jsonString); |
||||
printf("init_result: %u\n", init_result); |
||||
set_conversation_listener(c_conversation_callback); |
||||
set_advanced_msg_listener(c_message_callback); |
||||
login(c_base_callback, operationID, uid, token); |
||||
sleep(10); |
||||
// char text[] = "哈哈";
|
||||
char* loginUserID=get_login_user(); |
||||
|
||||
printf("return :%s\n",loginUserID); |
||||
char operationID1[] = "12345,create"; |
||||
char *message = create_text_message(operationID1, "哈哈"); |
||||
printf("return :%s\n",message); |
||||
char operationID2[] = "12345,get_all_conversation_list"; |
||||
get_all_conversation_list(c_base_callback, operationID2); |
||||
|
||||
sleep(1000000); |
||||
return 0; |
||||
} |
@ -0,0 +1,44 @@ |
||||
#include <iostream> |
||||
#include <functional> |
||||
#include <thread> |
||||
#include <chrono> |
||||
#include "openimsdkcc.h" |
||||
using namespace std; |
||||
using namespace openim; |
||||
|
||||
// simple test
|
||||
int main(){ |
||||
auto sdkMgr = OpenIMManager::GetInstance(); |
||||
string operationID="12345"; |
||||
string uid= "openIM123"; |
||||
string token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVc2VySUQiOiJvcGVuSU0xMjMiLCJQbGF0Zm9ybUlEIjo2LCJleHAiOjE3MDkxMjQ2NzYsIm5iZiI6MTcwMTM0ODM3NiwiaWF0IjoxNzAxMzQ4Njc2fQ.EqlV5TlpiElYhUOHCEcSrZOWi9ldrUMR1L4q0blvxs0"; |
||||
string jsonString="{\"platformID\": 6, \"apiAddr\": \"http://14.29.168.56:10002\", \"wsAddr\":\"ws://14.29.168.56:10001\",\"dataDir\": \"./\", \"logLevel\": 5, \"isLogStandardOutput\": true, \"logFilePath\": \"./\", \"isExternalExtensions\": true}"; |
||||
bool init_result = sdkMgr.InitSDK([](int event,const string& data){ |
||||
cout<<"init> "<<"event:"<<event<<" data:"<<data<<endl; |
||||
},operationID, jsonString); |
||||
cout<<"init_result:"<<init_result<<endl; |
||||
|
||||
sdkMgr.SetConversationListener([](int event,const string& data){ |
||||
cout<<"conversation> "<<"event:"<<event<<" data:"<<data<<endl; |
||||
}); |
||||
sdkMgr.SetAdvancedMsgListener([](int event,const string& data){ |
||||
cout<<"advancedMsg> "<<"event:"<<event<<" data:"<<data<<endl; |
||||
}); |
||||
sdkMgr.Login([](const string& operationID ,int errCode,const string& errMsg, const string& data){ |
||||
cout<<"login> " <<"operationID: "<<operationID<<" ,errCode: "<<errCode << "errMsg: "<<errMsg<< ", data: "<<data<<endl;
|
||||
},operationID,uid,token); |
||||
std::this_thread::sleep_for(std::chrono::seconds(10)); |
||||
|
||||
// can only execute below function after login
|
||||
string loginUserID=sdkMgr.GetLoginUser(); |
||||
cout<<"loginUserID:"<<loginUserID<<endl; |
||||
string operationID1="12345,create"; |
||||
string messge=sdkMgr.CreateTextMessage(operationID1,"CCM"); |
||||
string operationID2="12345,get_all_conversation_list"; |
||||
sdkMgr.GetAllConversationList([](const string& operationID,int errCode ,const string& errMsg,const string& data){ |
||||
cout<<"getAllConversationList> "<<"data:"<<data<<endl; |
||||
},operationID2); |
||||
// std::this_thread::sleep_for(std::chrono::seconds(1000));
|
||||
while(true); |
||||
return 0; |
||||
}
|
@ -0,0 +1,32 @@ |
||||
package main |
||||
|
||||
/* |
||||
#include <stdio.h> |
||||
#include <stdlib.h> |
||||
*/ |
||||
import "C" |
||||
|
||||
import ( |
||||
"encoding/json" |
||||
"strconv" |
||||
"unsafe" |
||||
) |
||||
|
||||
func parseBool(b int) bool { |
||||
return !(b == 0) |
||||
} |
||||
|
||||
func StructToJsonString(param interface{}) string { |
||||
dataType, _ := json.Marshal(param) |
||||
dataString := string(dataType) |
||||
return dataString |
||||
} |
||||
|
||||
func FreeCString(strList ...*C.char) { |
||||
for _, str := range strList { |
||||
C.free(unsafe.Pointer(str)) |
||||
} |
||||
} |
||||
func Int32ToString(intValue int32) string { |
||||
return strconv.Itoa(int(intValue)) |
||||
} |
@ -0,0 +1,185 @@ |
||||
package login |
||||
|
||||
type emptyGroupListener struct{} |
||||
|
||||
func newEmptyGroupListener() *emptyGroupListener { |
||||
return &emptyGroupListener{} |
||||
} |
||||
|
||||
func (emptyGroupListener) OnJoinedGroupAdded(groupInfo string) { |
||||
|
||||
} |
||||
|
||||
func (emptyGroupListener) OnJoinedGroupDeleted(groupInfo string) { |
||||
|
||||
} |
||||
|
||||
func (emptyGroupListener) OnGroupMemberAdded(groupMemberInfo string) { |
||||
|
||||
} |
||||
|
||||
func (emptyGroupListener) OnGroupMemberDeleted(groupMemberInfo string) { |
||||
|
||||
} |
||||
|
||||
func (emptyGroupListener) OnGroupApplicationAdded(groupApplication string) { |
||||
|
||||
} |
||||
|
||||
func (emptyGroupListener) OnGroupApplicationDeleted(groupApplication string) { |
||||
|
||||
} |
||||
|
||||
func (emptyGroupListener) OnGroupInfoChanged(groupInfo string) { |
||||
|
||||
} |
||||
|
||||
func (emptyGroupListener) OnGroupDismissed(groupInfo string) { |
||||
|
||||
} |
||||
|
||||
func (emptyGroupListener) OnGroupMemberInfoChanged(groupMemberInfo string) { |
||||
|
||||
} |
||||
|
||||
func (emptyGroupListener) OnGroupApplicationAccepted(groupApplication string) { |
||||
|
||||
} |
||||
|
||||
func (emptyGroupListener) OnGroupApplicationRejected(groupApplication string) { |
||||
|
||||
} |
||||
|
||||
type emptyFriendshipListener struct{} |
||||
|
||||
func newEmptyFriendshipListener() *emptyFriendshipListener { |
||||
return &emptyFriendshipListener{} |
||||
} |
||||
|
||||
func (emptyFriendshipListener) OnFriendApplicationAdded(friendApplication string) {} |
||||
|
||||
func (emptyFriendshipListener) OnFriendApplicationDeleted(friendApplication string) {} |
||||
|
||||
func (emptyFriendshipListener) OnFriendApplicationAccepted(friendApplication string) {} |
||||
|
||||
func (emptyFriendshipListener) OnFriendApplicationRejected(friendApplication string) {} |
||||
|
||||
func (emptyFriendshipListener) OnFriendAdded(friendInfo string) {} |
||||
|
||||
func (emptyFriendshipListener) OnFriendDeleted(friendInfo string) {} |
||||
|
||||
func (emptyFriendshipListener) OnFriendInfoChanged(friendInfo string) {} |
||||
|
||||
func (emptyFriendshipListener) OnBlackAdded(blackInfo string) {} |
||||
|
||||
func (emptyFriendshipListener) OnBlackDeleted(blackInfo string) {} |
||||
|
||||
type emptyConversationListener struct{} |
||||
|
||||
func newEmptyConversationListener() *emptyConversationListener { |
||||
return &emptyConversationListener{} |
||||
} |
||||
|
||||
func (emptyConversationListener) OnSyncServerStart() { |
||||
|
||||
} |
||||
|
||||
func (emptyConversationListener) OnSyncServerFinish() { |
||||
|
||||
} |
||||
|
||||
func (emptyConversationListener) OnSyncServerFailed() { |
||||
|
||||
} |
||||
|
||||
func (emptyConversationListener) OnNewConversation(conversationList string) { |
||||
|
||||
} |
||||
|
||||
func (emptyConversationListener) OnConversationChanged(conversationList string) { |
||||
|
||||
} |
||||
|
||||
func (emptyConversationListener) OnTotalUnreadMessageCountChanged(totalUnreadCount int32) { |
||||
|
||||
} |
||||
|
||||
type emptyAdvancedMsgListener struct{} |
||||
|
||||
func newEmptyAdvancedMsgListener() *emptyAdvancedMsgListener { |
||||
return &emptyAdvancedMsgListener{} |
||||
} |
||||
|
||||
func (emptyAdvancedMsgListener) OnRecvNewMessage(message string) { |
||||
|
||||
} |
||||
|
||||
func (emptyAdvancedMsgListener) OnRecvC2CReadReceipt(msgReceiptList string) { |
||||
|
||||
} |
||||
|
||||
func (emptyAdvancedMsgListener) OnRecvGroupReadReceipt(groupMsgReceiptList string) { |
||||
|
||||
} |
||||
|
||||
func (emptyAdvancedMsgListener) OnNewRecvMessageRevoked(messageRevoked string) { |
||||
|
||||
} |
||||
|
||||
func (emptyAdvancedMsgListener) OnRecvMessageExtensionsChanged(msgID string, reactionExtensionList string) { |
||||
|
||||
} |
||||
|
||||
func (emptyAdvancedMsgListener) OnRecvMessageExtensionsDeleted(msgID string, reactionExtensionKeyList string) { |
||||
|
||||
} |
||||
|
||||
func (emptyAdvancedMsgListener) OnRecvMessageExtensionsAdded(msgID string, reactionExtensionList string) { |
||||
|
||||
} |
||||
|
||||
func (emptyAdvancedMsgListener) OnRecvOfflineNewMessage(message string) { |
||||
|
||||
} |
||||
|
||||
func (emptyAdvancedMsgListener) OnMsgDeleted(message string) { |
||||
|
||||
} |
||||
|
||||
type emptyBatchMsgListener struct{} |
||||
|
||||
func newEmptyBatchMsgListener() *emptyBatchMsgListener { |
||||
return &emptyBatchMsgListener{} |
||||
} |
||||
|
||||
func (emptyBatchMsgListener) OnRecvNewMessages(messageList string) { |
||||
|
||||
} |
||||
|
||||
func (emptyBatchMsgListener) OnRecvOfflineNewMessages(messageList string) { |
||||
|
||||
} |
||||
|
||||
type emptyUserListener struct{} |
||||
|
||||
func newEmptyUserListener() *emptyUserListener { |
||||
return &emptyUserListener{} |
||||
} |
||||
|
||||
func (emptyUserListener) OnSelfInfoUpdated(userInfo string) { |
||||
|
||||
} |
||||
|
||||
func (emptyUserListener) OnUserStatusChanged(statusMap string) { |
||||
|
||||
} |
||||
|
||||
type emptyCustomBusinessListener struct{} |
||||
|
||||
func newEmptyCustomBusinessListener() *emptyCustomBusinessListener { |
||||
return &emptyCustomBusinessListener{} |
||||
} |
||||
|
||||
func (emptyCustomBusinessListener) OnRecvCustomBusinessMessage(businessMessage string) { |
||||
|
||||
} |
Loading…
Reference in new issue