fix: add listener interface.

Signed-off-by: Gordon <46924906+FGadvancer@users.noreply.github.com>
dev_1
Gordon 2 years ago
parent c4fafedebf
commit 2da933ce9e
  1. 71
      c_wrapper/constant.go
  2. 287
      c_wrapper/export.go
  3. 4
      c_wrapper/tools.go

@ -19,3 +19,74 @@ const (
KICKED_OFFLINE KICKED_OFFLINE
USER_TOKEN_EXPIRED USER_TOKEN_EXPIRED
) )
const (
JOINED_GROUP_ADDED = iota
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
)
const (
FRIEND_APPLICATION_ADDED = iota
FRIEND_APPLICATION_DELETED
FRIEND_APPLICATION_ACCEPTED
FRIEND_APPLICATION_REJECTED
FRIEND_ADDED
FRIEND_DELETED
FRIEND_INFO_CHANGED
BLACK_ADDED
BLACK_DELETED
)
const (
SYNC_SERVER_START = iota
SYNC_SERVER_FINISH
SYNC_SERVER_PROGRESS
SYNC_SERVER_FAILED
NEW_CONVERSATION
CONVERSATION_CHANGED
TOTAL_UNREAD_MESSAGE_COUNT_CHANGED
)
const (
RECV_NEW_MESSAGE = iota
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
)
const (
RECV_NEW_MESSAGES = iota
RECV_OFFLINE_NEW_MESSAGES
)
const (
SELF_INFO_UPDATED = iota
USER_STATUS_CHANGED
)
const (
RECV_CUSTOM_BUSINESS_MESSAGE = iota
)
const (
MESSAGE_KV_INFO_CHANGED = iota
)
const (
UPLOAD_FILE_CALLBACK_OPEN = iota
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
)

@ -19,6 +19,9 @@ type Base struct {
ErrCode int32 `json:"errCode"` ErrCode int32 `json:"errCode"`
ErrMsg string `json:"errMsg"` ErrMsg string `json:"errMsg"`
} }
// =====================================================listener===============================================
type ConnCallback struct { type ConnCallback struct {
cCallback C.CB_I_S cCallback C.CB_I_S
} }
@ -49,6 +52,246 @@ func (c ConnCallback) OnUserTokenExpired() {
C.Call_CB_I_S(c.cCallback, USER_TOKEN_EXPIRED, NO_DATA) 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) {
//TODO implement me
panic("implement me")
}
func (b BatchMessageCallback) OnRecvOfflineNewMessages(messageList string) {
//TODO implement me
panic("implement me")
}
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) {
//TODO implement me
panic("implement me")
}
func (f FriendCallback) OnFriendApplicationDeleted(friendApplication string) {
//TODO implement me
panic("implement me")
}
func (f FriendCallback) OnFriendApplicationAccepted(friendApplication string) {
//TODO implement me
panic("implement me")
}
func (f FriendCallback) OnFriendApplicationRejected(friendApplication string) {
//TODO implement me
panic("implement me")
}
func (f FriendCallback) OnFriendAdded(friendInfo string) {
//TODO implement me
panic("implement me")
}
func (f FriendCallback) OnFriendDeleted(friendInfo string) {
//TODO implement me
panic("implement me")
}
func (f FriendCallback) OnFriendInfoChanged(friendInfo string) {
//TODO implement me
panic("implement me")
}
func (f FriendCallback) OnBlackAdded(blackInfo string) {
//TODO implement me
panic("implement me")
}
func (f FriendCallback) OnBlackDeleted(blackInfo string) {
//TODO implement me
panic("implement me")
}
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) {
//TODO implement me
panic("implement me")
}
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) {
//TODO implement me
panic("implement me")
}
func (u UserCallback) OnUserStatusChanged(statusMap string) {
//TODO implement me
panic("implement me")
}
func NewUserCallback(cCallback C.CB_I_S) *UserCallback {
return &UserCallback{cCallback: cCallback}
}
type SendMessageCallback struct { type SendMessageCallback struct {
cCallback C.CB_S_I_S_S_I cCallback C.CB_S_I_S_S_I
operationID *C.char operationID *C.char
@ -87,6 +330,50 @@ func (b BaseCallback) OnSuccess(data string) {
C.Call_CB_S_I_S_S(b.cCallback, b.operationID, NO_ERR, NO_ERR_MSG, C.CString(data)) C.Call_CB_S_I_S_S(b.cCallback, b.operationID, NO_ERR, NO_ERR_MSG, C.CString(data))
} }
// =====================================================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 //export init_sdk
func init_sdk( func init_sdk(
cCallback C.CB_I_S, cCallback C.CB_I_S,

@ -8,6 +8,7 @@ import "C"
import ( import (
"encoding/json" "encoding/json"
"strconv"
"unsafe" "unsafe"
) )
@ -29,3 +30,6 @@ func FreeCString(strList ...*C.char) {
C.free(unsafe.Pointer(str)) C.free(unsafe.Pointer(str))
} }
} }
func Int32ToString(intValue int32) string {
return strconv.Itoa(int(intValue))
}

Loading…
Cancel
Save