fix: modify the way of communication from C to Go.
This commit is contained in:
parent
9b418a8d17
commit
9648dae44b
@ -1,2 +1,2 @@
|
|||||||
go build -buildmode=c-shared -trimpath -ldflags="-s -w" -o openimsdk.dll export.go constant.go protocol.go
|
go build -buildmode=c-shared -trimpath -ldflags="-s -w" -o openimsdk.dll export.go constant.go protocol.go tools.go
|
||||||
|
|
||||||
|
@ -2,10 +2,10 @@ package main
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
typedef void (*CB_I_I_S)(int,int,char *);
|
typedef void (*CB_I_S)(int,char *);
|
||||||
typedef void (*CB_I_S_S)(int,char *,char *);
|
typedef void (*CB_I_S_S)(int,char *,char *);
|
||||||
typedef void (*CB_I_S_S_I)(int,char *,char *,int);
|
typedef void (*CB_I_S_S_I)(int,char *,char *,int);
|
||||||
extern void Call_CB_I_I_S(CB_I_I_S func,int event,int errCode,char* errMsg);
|
extern void Call_CB_I_S(CB_I_S func,int event,char* data);
|
||||||
extern void Call_CB_I_S_S(CB_I_S_S func,int errCode,char* errMsg,char* data);
|
extern void Call_CB_I_S_S(CB_I_S_S func,int errCode,char* errMsg,char* data);
|
||||||
extern void Call_CB_I_S_S_I(CB_I_S_S_I func,int errCode,char* errMsg,char* data,int progress);
|
extern void Call_CB_I_S_S_I(CB_I_S_S_I func,int errCode,char* errMsg,char* data,int progress);
|
||||||
*/
|
*/
|
||||||
@ -15,33 +15,38 @@ import (
|
|||||||
"open_im_sdk/open_im_sdk"
|
"open_im_sdk/open_im_sdk"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type Base struct {
|
||||||
|
ErrCode int32 `json:"errCode"`
|
||||||
|
ErrMsg string `json:"errMsg"`
|
||||||
|
}
|
||||||
type ConnCallback struct {
|
type ConnCallback struct {
|
||||||
cCallback C.CB_I_I_S
|
cCallback C.CB_I_S
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewConnCallback(cCallback C.CB_I_I_S) *ConnCallback {
|
func NewConnCallback(cCallback C.CB_I_S) *ConnCallback {
|
||||||
return &ConnCallback{cCallback: cCallback}
|
return &ConnCallback{cCallback: cCallback}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c ConnCallback) OnConnecting() {
|
func (c ConnCallback) OnConnecting() {
|
||||||
C.Call_CB_I_I_S(c.cCallback, CONNECTING, NO_ERR, NO_ERR_MSG)
|
C.Call_CB_I_S(c.cCallback, CONNECTING, NO_DATA)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c ConnCallback) OnConnectSuccess() {
|
func (c ConnCallback) OnConnectSuccess() {
|
||||||
C.Call_CB_I_I_S(c.cCallback, CONNECT_SUCCESS, NO_ERR, NO_ERR_MSG)
|
C.Call_CB_I_S(c.cCallback, CONNECT_SUCCESS, NO_DATA)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c ConnCallback) OnConnectFailed(errCode int32, errMsg string) {
|
func (c ConnCallback) OnConnectFailed(errCode int32, errMsg string) {
|
||||||
C.Call_CB_I_I_S(c.cCallback, CONNECT_FAILED, C.int(errCode), C.CString(errMsg))
|
|
||||||
|
C.Call_CB_I_S(c.cCallback, CONNECT_FAILED, C.CString(StructToJsonString(Base{ErrCode: errCode, ErrMsg: errMsg})))
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c ConnCallback) OnKickedOffline() {
|
func (c ConnCallback) OnKickedOffline() {
|
||||||
C.Call_CB_I_I_S(c.cCallback, KICKED_OFFLINE, NO_ERR, NO_ERR_MSG)
|
C.Call_CB_I_S(c.cCallback, KICKED_OFFLINE, NO_DATA)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c ConnCallback) OnUserTokenExpired() {
|
func (c ConnCallback) OnUserTokenExpired() {
|
||||||
C.Call_CB_I_I_S(c.cCallback, USER_TOKEN_EXPIRED, NO_ERR, NO_ERR_MSG)
|
C.Call_CB_I_S(c.cCallback, USER_TOKEN_EXPIRED, NO_DATA)
|
||||||
}
|
}
|
||||||
|
|
||||||
type SendMessageCallback struct {
|
type SendMessageCallback struct {
|
||||||
@ -82,7 +87,7 @@ func (b BaseCallback) OnSuccess(data string) {
|
|||||||
|
|
||||||
//export init_sdk
|
//export init_sdk
|
||||||
func init_sdk(
|
func init_sdk(
|
||||||
cCallback C.CB_I_I_S,
|
cCallback C.CB_I_S,
|
||||||
operationID *C.char, config *C.char) bool {
|
operationID *C.char, config *C.char) bool {
|
||||||
callback := NewConnCallback(cCallback)
|
callback := NewConnCallback(cCallback)
|
||||||
return open_im_sdk.InitSDK(callback, C.GoString(operationID), C.GoString(config))
|
return open_im_sdk.InitSDK(callback, C.GoString(operationID), C.GoString(config))
|
||||||
|
@ -2,14 +2,14 @@ package main
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
typedef void (*CB_I_I_S)(int,int,char *);
|
typedef void (*CB_I_S)(int,char *);
|
||||||
typedef void (*CB_I_S_S)(int,char *,char *);
|
typedef void (*CB_I_S_S)(int,char *,char *);
|
||||||
typedef void (*CB_I_S_S_I)(int,char *,char *,int);
|
typedef void (*CB_I_S_S_I)(int,char *,char *,int);
|
||||||
|
|
||||||
__attribute__((weak))
|
__attribute__((weak))
|
||||||
void Call_CB_I_I_S(CB_I_I_S func,int event,int errCode,char* errMsg)
|
void Call_CB_I_S(CB_I_S func,int event,char* data)
|
||||||
{
|
{
|
||||||
func(event,errCode,errMsg);
|
func(event,data);
|
||||||
}
|
}
|
||||||
__attribute__((weak))
|
__attribute__((weak))
|
||||||
void Call_CB_I_S_S(CB_I_S_S func,int errCode,char* errMsg,char* data)
|
void Call_CB_I_S_S(CB_I_S_S func,int errCode,char* errMsg,char* data)
|
||||||
|
@ -1,5 +1,13 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
|
import "encoding/json"
|
||||||
|
|
||||||
func parseBool() bool {
|
func parseBool() bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func StructToJsonString(param interface{}) string {
|
||||||
|
dataType, _ := json.Marshal(param)
|
||||||
|
dataString := string(dataType)
|
||||||
|
return dataString
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user