feat: update sdk to v3.5.1 and refactor project structure.
This commit is contained in:
5
scripts/build_dll.bat
Normal file
5
scripts/build_dll.bat
Normal file
@@ -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
|
||||
2
scripts/build_run_test.bat
Normal file
2
scripts/build_run_test.bat
Normal file
@@ -0,0 +1,2 @@
|
||||
gcc -o test.exe -L. openimsdk.dll test.c
|
||||
test.exe
|
||||
9
scripts/build_so.sh
Normal file
9
scripts/build_so.sh
Normal file
@@ -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
|
||||
3
scripts/build_test.bat
Normal file
3
scripts/build_test.bat
Normal file
@@ -0,0 +1,3 @@
|
||||
gcc -o test.exe -L. openimsdk.dll test.c
|
||||
|
||||
::gcc -o test.exe -L ../../shared/windows -l libopenimsdk test.c
|
||||
32
scripts/gen_android_so.bat
Normal file
32
scripts/gen_android_so.bat
Normal file
@@ -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 Generate 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 Generate 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 Generate 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 Generate 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
|
||||
|
||||
|
||||
8
scripts/gen_ios_dylib.sh
Normal file
8
scripts/gen_ios_dylib.sh
Normal file
@@ -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
|
||||
|
||||
|
||||
@@ -1,92 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright © 2023 OpenIMSDK.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# ==============================================================================
|
||||
#
|
||||
# Store this file as .git/hooks/commit-msg in your repository in order to
|
||||
# enforce checking for proper commit message format before actual commits.
|
||||
# You may need to make the scripts executable by 'chmod +x .git/hooks/commit-msg'.
|
||||
|
||||
# commit-msg use go-gitlint tool, install go-gitlint via `go get github.com/llorllale/go-gitlint/cmd/go-gitlint`
|
||||
# go-gitlint --msg-file="$1"
|
||||
|
||||
# An example hook scripts to check the commit log message.
|
||||
# Called by "git commit" with one argument, the name of the file
|
||||
# that has the commit message. The hook should exit with non-zero
|
||||
# status after issuing an appropriate message if it wants to stop the
|
||||
# commit. The hook is allowed to edit the commit message file.
|
||||
|
||||
YELLOW="\e[93m"
|
||||
GREEN="\e[32m"
|
||||
RED="\e[31m"
|
||||
ENDCOLOR="\e[0m"
|
||||
|
||||
printMessage() {
|
||||
printf "${YELLOW}OpenIM : $1${ENDCOLOR}\n"
|
||||
}
|
||||
|
||||
printSuccess() {
|
||||
printf "${GREEN}OpenIM : $1${ENDCOLOR}\n"
|
||||
}
|
||||
|
||||
printError() {
|
||||
printf "${RED}OpenIM : $1${ENDCOLOR}\n"
|
||||
}
|
||||
|
||||
printMessage "Running the OpenIM commit-msg hook."
|
||||
|
||||
# This example catches duplicate Signed-off-by lines.
|
||||
|
||||
test "" = "$(grep '^Signed-off-by: ' "$1" |
|
||||
sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
|
||||
echo >&2 Duplicate Signed-off-by lines.
|
||||
exit 1
|
||||
}
|
||||
|
||||
# TODO: go-gitlint dir set
|
||||
OPENIM_ROOT=$(dirname "${BASH_SOURCE[0]}")/../..
|
||||
GITLINT_DIR="$OPENIM_ROOT/_output/tools/go-gitlint"
|
||||
|
||||
$GITLINT_DIR \
|
||||
--msg-file=$1 \
|
||||
--subject-regex="^(build|chore|ci|docs|feat|feature|fix|perf|refactor|revert|style|bot|test)(.*)?:\s?.*" \
|
||||
--subject-maxlen=150 \
|
||||
--subject-minlen=10 \
|
||||
--body-regex=".*" \
|
||||
--max-parents=1
|
||||
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
if ! command -v $GITLINT_DIR &>/dev/null; then
|
||||
printError "$GITLINT_DIR not found. Please run 'make tools' OR 'make tools.verify.go-gitlint' make verto install it."
|
||||
fi
|
||||
printError "Please fix your commit message to match kubecub coding standards"
|
||||
printError "https://gist.github.com/cubxxw/126b72104ac0b0ca484c9db09c3e5694#file-githook-md"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
### Add Sign-off-by line to the end of the commit message
|
||||
# Get local git config
|
||||
NAME=$(git config user.name)
|
||||
EMAIL=$(git config user.email)
|
||||
|
||||
# Check if the commit message contains a sign-off line
|
||||
grep -qs "^Signed-off-by: " "$1"
|
||||
SIGNED_OFF_BY_EXISTS=$?
|
||||
|
||||
# Add "Signed-off-by" line if it doesn't exist
|
||||
if [ $SIGNED_OFF_BY_EXISTS -ne 0 ]; then
|
||||
echo -e "\nSigned-off-by: $NAME <$EMAIL>" >> "$1"
|
||||
fi
|
||||
@@ -1,92 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright © 2023 OpenIMSDK.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# ==============================================================================
|
||||
#
|
||||
# Store this file as .git/hooks/commit-msg in your repository in order to
|
||||
# enforce checking for proper commit message format before actual commits.
|
||||
# You may need to make the scripts executable by 'chmod +x .git/hooks/commit-msg'.
|
||||
|
||||
# commit-msg use go-gitlint tool, install go-gitlint via `go get github.com/llorllale/go-gitlint/cmd/go-gitlint`
|
||||
# go-gitlint --msg-file="$1"
|
||||
|
||||
# An example hook scripts to check the commit log message.
|
||||
# Called by "git commit" with one argument, the name of the file
|
||||
# that has the commit message. The hook should exit with non-zero
|
||||
# status after issuing an appropriate message if it wants to stop the
|
||||
# commit. The hook is allowed to edit the commit message file.
|
||||
|
||||
YELLOW="\e[93m"
|
||||
GREEN="\e[32m"
|
||||
RED="\e[31m"
|
||||
ENDCOLOR="\e[0m"
|
||||
|
||||
printMessage() {
|
||||
printf "${YELLOW}OpenIM : $1${ENDCOLOR}\n"
|
||||
}
|
||||
|
||||
printSuccess() {
|
||||
printf "${GREEN}OpenIM : $1${ENDCOLOR}\n"
|
||||
}
|
||||
|
||||
printError() {
|
||||
printf "${RED}OpenIM : $1${ENDCOLOR}\n"
|
||||
}
|
||||
|
||||
printMessage "Running the OpenIM commit-msg hook."
|
||||
|
||||
# This example catches duplicate Signed-off-by lines.
|
||||
|
||||
test "" = "$(grep '^Signed-off-by: ' "$1" |
|
||||
sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
|
||||
echo >&2 Duplicate Signed-off-by lines.
|
||||
exit 1
|
||||
}
|
||||
|
||||
# TODO: go-gitlint dir set
|
||||
OPENIM_ROOT=$(dirname "${BASH_SOURCE[0]}")/../..
|
||||
GITLINT_DIR="$OPENIM_ROOT/_output/tools/go-gitlint"
|
||||
|
||||
$GITLINT_DIR \
|
||||
--msg-file=$1 \
|
||||
--subject-regex="^(build|chore|ci|docs|feat|feature|fix|perf|refactor|revert|style|bot|test)(.*)?:\s?.*" \
|
||||
--subject-maxlen=150 \
|
||||
--subject-minlen=10 \
|
||||
--body-regex=".*" \
|
||||
--max-parents=1
|
||||
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
if ! command -v $GITLINT_DIR &>/dev/null; then
|
||||
printError "$GITLINT_DIR not found. Please run 'make tools' OR 'make tools.verify.go-gitlint' make verto install it."
|
||||
fi
|
||||
printError "Please fix your commit message to match kubecub coding standards"
|
||||
printError "https://gist.github.com/cubxxw/126b72104ac0b0ca484c9db09c3e5694#file-githook-md"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
### Add Sign-off-by line to the end of the commit message
|
||||
# Get local git config
|
||||
NAME=$(git config user.name)
|
||||
EMAIL=$(git config user.email)
|
||||
|
||||
# Check if the commit message contains a sign-off line
|
||||
grep -qs "^Signed-off-by: " "$1"
|
||||
SIGNED_OFF_BY_EXISTS=$?
|
||||
|
||||
# Add "Signed-off-by" line if it doesn't exist
|
||||
if [ $SIGNED_OFF_BY_EXISTS -ne 0 ]; then
|
||||
echo -e "\nSigned-off-by: $NAME <$EMAIL>" >> "$1"
|
||||
fi
|
||||
@@ -1,111 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright © 2023 OpenIMSDK.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# ==============================================================================
|
||||
# This is a pre-commit hook that ensures attempts to commit files that are
|
||||
# are larger than $limit to your _local_ repo fail, with a helpful error message.
|
||||
|
||||
# You can override the default limit of 2MB by supplying the environment variable:
|
||||
# GIT_FILE_SIZE_LIMIT=50000000 git commit -m "test: this commit is allowed file sizes up to 50MB"
|
||||
#
|
||||
# ==============================================================================
|
||||
#
|
||||
|
||||
LC_ALL=C
|
||||
|
||||
local_branch="$(git rev-parse --abbrev-ref HEAD)"
|
||||
valid_branch_regex="^(main|master|develop|release(-[a-zA-Z0-9._-]+)?)$|(feature|feat|openim|hotfix|test|bug|bot|refactor|revert|ci|cicd|style|)\/[a-z0-9._-]+$|^HEAD$"
|
||||
|
||||
YELLOW="\e[93m"
|
||||
GREEN="\e[32m"
|
||||
RED="\e[31m"
|
||||
ENDCOLOR="\e[0m"
|
||||
|
||||
printMessage() {
|
||||
printf "${YELLOW}openim : $1${ENDCOLOR}\n"
|
||||
}
|
||||
|
||||
printSuccess() {
|
||||
printf "${GREEN}openim : $1${ENDCOLOR}\n"
|
||||
}
|
||||
|
||||
printError() {
|
||||
printf "${RED}openim : $1${ENDCOLOR}\n"
|
||||
}
|
||||
|
||||
printMessage "Running local openim pre-commit hook."
|
||||
|
||||
# flutter format .
|
||||
# https://gist.github.com/cubxxw/126b72104ac0b0ca484c9db09c3e5694#file-githook-md
|
||||
# TODO! GIT_FILE_SIZE_LIMIT=50000000 git commit -m "test: this commit is allowed file sizes up to 50MB"
|
||||
# Maximum file size limit in bytes
|
||||
limit=${GIT_FILE_SIZE_LIMIT:-2000000} # Default 2MB
|
||||
limitInMB=$(( $limit / 1000000 ))
|
||||
|
||||
function file_too_large(){
|
||||
filename=$0
|
||||
filesize=$(( $1 / 2**20 ))
|
||||
|
||||
cat <<HEREDOC
|
||||
|
||||
File $filename is $filesize MB, which is larger than github's maximum
|
||||
file size (2 MB). We will not be able to push this file to GitHub.
|
||||
Commit aborted
|
||||
|
||||
HEREDOC
|
||||
git status
|
||||
|
||||
}
|
||||
|
||||
# Move to the repo root so git files paths make sense
|
||||
repo_root=$( git rev-parse --show-toplevel )
|
||||
cd $repo_root
|
||||
|
||||
empty_tree=$( git hash-object -t tree /dev/null )
|
||||
|
||||
if git rev-parse --verify HEAD > /dev/null 2>&1
|
||||
then
|
||||
against=HEAD
|
||||
else
|
||||
against="$empty_tree"
|
||||
fi
|
||||
|
||||
# Set split so that for loop below can handle spaces in file names by splitting on line breaks
|
||||
IFS='
|
||||
'
|
||||
|
||||
shouldFail=false
|
||||
for file in $( git diff-index --cached --name-only $against ); do
|
||||
file_size=$(([ ! -f $file ] && echo 0) || (ls -la $file | awk '{ print $5 }'))
|
||||
if [ "$file_size" -gt "$limit" ]; then
|
||||
printError "File $file is $(( $file_size / 10**6 )) MB, which is larger than our configured limit of $limitInMB MB"
|
||||
shouldFail=true
|
||||
fi
|
||||
done
|
||||
|
||||
if $shouldFail
|
||||
then
|
||||
printMessage "If you really need to commit this file, you can override the size limit by setting the GIT_FILE_SIZE_LIMIT environment variable, e.g. GIT_FILE_SIZE_LIMIT=42000000 for 42MB. Or, commit with the --no-verify switch to skip the check entirely."
|
||||
printError "Commit aborted"
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
if [[ ! $local_branch =~ $valid_branch_regex ]]
|
||||
then
|
||||
printError "There is something wrong with your branch name. Branch names in this project must adhere to this contract: $valid_branch_regex.
|
||||
Your commit will be rejected. You should rename your branch to a valid name(feat/name OR bug/name) and try again."
|
||||
printError "For more on this, read on: https://gist.github.com/cubxxw/126b72104ac0b0ca484c9db09c3e5694"
|
||||
exit 1
|
||||
fi
|
||||
@@ -1,111 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright © 2023 OpenIMSDK.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# ==============================================================================
|
||||
# This is a pre-commit hook that ensures attempts to commit files that are
|
||||
# are larger than $limit to your _local_ repo fail, with a helpful error message.
|
||||
|
||||
# You can override the default limit of 2MB by supplying the environment variable:
|
||||
# GIT_FILE_SIZE_LIMIT=50000000 git commit -m "test: this commit is allowed file sizes up to 50MB"
|
||||
#
|
||||
# ==============================================================================
|
||||
#
|
||||
|
||||
LC_ALL=C
|
||||
|
||||
local_branch="$(git rev-parse --abbrev-ref HEAD)"
|
||||
valid_branch_regex="^(main|master|develop|release(-[a-zA-Z0-9._-]+)?)$|(feature|feat|openim|hotfix|test|bug|bot|refactor|revert|ci|cicd|style|)\/[a-z0-9._-]+$|^HEAD$"
|
||||
|
||||
YELLOW="\e[93m"
|
||||
GREEN="\e[32m"
|
||||
RED="\e[31m"
|
||||
ENDCOLOR="\e[0m"
|
||||
|
||||
printMessage() {
|
||||
printf "${YELLOW}openim : $1${ENDCOLOR}\n"
|
||||
}
|
||||
|
||||
printSuccess() {
|
||||
printf "${GREEN}openim : $1${ENDCOLOR}\n"
|
||||
}
|
||||
|
||||
printError() {
|
||||
printf "${RED}openim : $1${ENDCOLOR}\n"
|
||||
}
|
||||
|
||||
printMessage "Running local openim pre-commit hook."
|
||||
|
||||
# flutter format .
|
||||
# https://gist.github.com/cubxxw/126b72104ac0b0ca484c9db09c3e5694#file-githook-md
|
||||
# TODO! GIT_FILE_SIZE_LIMIT=50000000 git commit -m "test: this commit is allowed file sizes up to 50MB"
|
||||
# Maximum file size limit in bytes
|
||||
limit=${GIT_FILE_SIZE_LIMIT:-2000000} # Default 2MB
|
||||
limitInMB=$(( $limit / 1000000 ))
|
||||
|
||||
function file_too_large(){
|
||||
filename=$0
|
||||
filesize=$(( $1 / 2**20 ))
|
||||
|
||||
cat <<HEREDOC
|
||||
|
||||
File $filename is $filesize MB, which is larger than github's maximum
|
||||
file size (2 MB). We will not be able to push this file to GitHub.
|
||||
Commit aborted
|
||||
|
||||
HEREDOC
|
||||
git status
|
||||
|
||||
}
|
||||
|
||||
# Move to the repo root so git files paths make sense
|
||||
repo_root=$( git rev-parse --show-toplevel )
|
||||
cd $repo_root
|
||||
|
||||
empty_tree=$( git hash-object -t tree /dev/null )
|
||||
|
||||
if git rev-parse --verify HEAD > /dev/null 2>&1
|
||||
then
|
||||
against=HEAD
|
||||
else
|
||||
against="$empty_tree"
|
||||
fi
|
||||
|
||||
# Set split so that for loop below can handle spaces in file names by splitting on line breaks
|
||||
IFS='
|
||||
'
|
||||
|
||||
shouldFail=false
|
||||
for file in $( git diff-index --cached --name-only $against ); do
|
||||
file_size=$(([ ! -f $file ] && echo 0) || (ls -la $file | awk '{ print $5 }'))
|
||||
if [ "$file_size" -gt "$limit" ]; then
|
||||
printError "File $file is $(( $file_size / 10**6 )) MB, which is larger than our configured limit of $limitInMB MB"
|
||||
shouldFail=true
|
||||
fi
|
||||
done
|
||||
|
||||
if $shouldFail
|
||||
then
|
||||
printMessage "If you really need to commit this file, you can override the size limit by setting the GIT_FILE_SIZE_LIMIT environment variable, e.g. GIT_FILE_SIZE_LIMIT=42000000 for 42MB. Or, commit with the --no-verify switch to skip the check entirely."
|
||||
printError "Commit aborted"
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
if [[ ! $local_branch =~ $valid_branch_regex ]]
|
||||
then
|
||||
printError "There is something wrong with your branch name. Branch names in this project must adhere to this contract: $valid_branch_regex.
|
||||
Your commit will be rejected. You should rename your branch to a valid name(feat/name OR fix/name) and try again."
|
||||
printError "For more on this, read on: https://gist.github.com/cubxxw/126b72104ac0b0ca484c9db09c3e5694"
|
||||
exit 1
|
||||
fi
|
||||
@@ -1,119 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright © 2023 OpenIMSDK.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# ==============================================================================
|
||||
#
|
||||
|
||||
YELLOW="\e[93m"
|
||||
GREEN="\e[32m"
|
||||
RED="\e[31m"
|
||||
ENDCOLOR="\e[0m"
|
||||
|
||||
local_branch="$(git rev-parse --abbrev-ref HEAD)"
|
||||
valid_branch_regex="^(main|master|develop|release(-[a-zA-Z0-9._-]+)?)$|(feature|feat|openim|hotfix|test|bug|ci|cicd|style|)\/[a-z0-9._-]+$|^HEAD$"
|
||||
|
||||
printMessage() {
|
||||
printf "${YELLOW}OpenIM : $1${ENDCOLOR}\n"
|
||||
}
|
||||
|
||||
printSuccess() {
|
||||
printf "${GREEN}OpenIM : $1${ENDCOLOR}\n"
|
||||
}
|
||||
|
||||
printError() {
|
||||
printf "${RED}OpenIM : $1${ENDCOLOR}\n"
|
||||
}
|
||||
|
||||
printMessage "Running local OpenIM pre-push hook."
|
||||
|
||||
if [[ `git status --porcelain` ]]; then
|
||||
printError "This scripts needs to run against committed code only. Please commit or stash you changes."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
COLOR_SUFFIX="\033[0m"
|
||||
|
||||
BLACK_PREFIX="\033[30m"
|
||||
RED_PREFIX="\033[31m"
|
||||
GREEN_PREFIX="\033[32m"
|
||||
BACKGROUND_GREEN="\033[33m"
|
||||
BLUE_PREFIX="\033[34m"
|
||||
PURPLE_PREFIX="\033[35m"
|
||||
SKY_BLUE_PREFIX="\033[36m"
|
||||
WHITE_PREFIX="\033[37m"
|
||||
BOLD_PREFIX="\033[1m"
|
||||
UNDERLINE_PREFIX="\033[4m"
|
||||
ITALIC_PREFIX="\033[3m"
|
||||
|
||||
# Function to print colored text
|
||||
print_color() {
|
||||
local text=$1
|
||||
local color=$2
|
||||
echo -e "${color}${text}${COLOR_SUFFIX}"
|
||||
}
|
||||
|
||||
# Function to print section separator
|
||||
print_separator() {
|
||||
print_color "==========================================================" ${PURPLE_PREFIX}
|
||||
}
|
||||
|
||||
# Get current time
|
||||
time=$(date +"%Y-%m-%d %H:%M:%S")
|
||||
|
||||
# Print section separator
|
||||
print_separator
|
||||
|
||||
# Print time of submission
|
||||
print_color "PTIME: ${time}" "${BOLD_PREFIX}${CYAN_PREFIX}"
|
||||
echo ""
|
||||
author=$(git config user.name)
|
||||
repository=$(basename -s .git $(git config --get remote.origin.url))
|
||||
|
||||
# Print additional information if needed
|
||||
print_color "Repository: ${repository}" "${BLUE_PREFIX}"
|
||||
echo ""
|
||||
|
||||
print_color "Author: ${author}" "${PURPLE_PREFIX}"
|
||||
|
||||
# Print section separator
|
||||
print_separator
|
||||
|
||||
file_list=$(git diff --name-status HEAD @{u})
|
||||
added_files=$(grep -c '^A' <<< "$file_list")
|
||||
modified_files=$(grep -c '^M' <<< "$file_list")
|
||||
deleted_files=$(grep -c '^D' <<< "$file_list")
|
||||
|
||||
print_color "Added Files: ${added_files}" "${BACKGROUND_GREEN}"
|
||||
print_color "Modified Files: ${modified_files}" "${BACKGROUND_GREEN}"
|
||||
print_color "Deleted Files: ${deleted_files}" "${BACKGROUND_GREEN}"
|
||||
|
||||
if [[ ! $local_branch =~ $valid_branch_regex ]]
|
||||
then
|
||||
printError "There is something wrong with your branch name. Branch names in this project must adhere to this contract: $valid_branch_regex.
|
||||
Your commit will be rejected. You should rename your branch to a valid name(feat/name OR bug/name) and try again."
|
||||
printError "For more on this, read on: https://gist.github.com/cubxxw/126b72104ac0b0ca484c9db09c3e5694"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#
|
||||
#printMessage "Running the Flutter analyzer"
|
||||
#flutter analyze
|
||||
#
|
||||
#if [ $? -ne 0 ]; then
|
||||
# printError "Flutter analyzer error"
|
||||
# exit 1
|
||||
#fi
|
||||
#
|
||||
#printMessage "Finished running the Flutter analyzer"
|
||||
@@ -1,119 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright © 2023 OpenIMSDK.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# ==============================================================================
|
||||
#
|
||||
|
||||
YELLOW="\e[93m"
|
||||
GREEN="\e[32m"
|
||||
RED="\e[31m"
|
||||
ENDCOLOR="\e[0m"
|
||||
|
||||
local_branch="$(git rev-parse --abbrev-ref HEAD)"
|
||||
valid_branch_regex="^(main|master|develop|release(-[a-zA-Z0-9._-]+)?)$|(feature|feat|openim|hotfix|test|bug|ci|cicd|style|)\/[a-z0-9._-]+$|^HEAD$"
|
||||
|
||||
printMessage() {
|
||||
printf "${YELLOW}OpenIM : $1${ENDCOLOR}\n"
|
||||
}
|
||||
|
||||
printSuccess() {
|
||||
printf "${GREEN}OpenIM : $1${ENDCOLOR}\n"
|
||||
}
|
||||
|
||||
printError() {
|
||||
printf "${RED}OpenIM : $1${ENDCOLOR}\n"
|
||||
}
|
||||
|
||||
printMessage "Running local OpenIM pre-push hook."
|
||||
|
||||
if [[ $(git status --porcelain) ]]; then
|
||||
printError "This scripts needs to run against committed code only. Please commit or stash you changes."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
COLOR_SUFFIX="\033[0m"
|
||||
|
||||
BLACK_PREFIX="\033[30m"
|
||||
RED_PREFIX="\033[31m"
|
||||
GREEN_PREFIX="\033[32m"
|
||||
BACKGROUND_GREEN="\033[33m"
|
||||
BLUE_PREFIX="\033[34m"
|
||||
PURPLE_PREFIX="\033[35m"
|
||||
SKY_BLUE_PREFIX="\033[36m"
|
||||
WHITE_PREFIX="\033[37m"
|
||||
BOLD_PREFIX="\033[1m"
|
||||
UNDERLINE_PREFIX="\033[4m"
|
||||
ITALIC_PREFIX="\033[3m"
|
||||
|
||||
# Function to print colored text
|
||||
print_color() {
|
||||
local text=$1
|
||||
local color=$2
|
||||
echo -e "${color}${text}${COLOR_SUFFIX}"
|
||||
}
|
||||
|
||||
# Function to print section separator
|
||||
print_separator() {
|
||||
print_color "==========================================================" ${PURPLE_PREFIX}
|
||||
}
|
||||
|
||||
# Get current time
|
||||
time=$(date +"%Y-%m-%d %H:%M:%S")
|
||||
|
||||
# Print section separator
|
||||
print_separator
|
||||
|
||||
# Print time of submission
|
||||
print_color "PTIME: ${time}" "${BOLD_PREFIX}${CYAN_PREFIX}"
|
||||
echo ""
|
||||
author=$(git config user.name)
|
||||
repository=$(basename -s .git $(git config --get remote.origin.url))
|
||||
|
||||
# Print additional information if needed
|
||||
print_color "Repository: ${repository}" "${BLUE_PREFIX}"
|
||||
echo ""
|
||||
|
||||
print_color "Author: ${author}" "${PURPLE_PREFIX}"
|
||||
|
||||
# Print section separator
|
||||
print_separator
|
||||
|
||||
file_list=$(git diff --name-status HEAD @{u})
|
||||
added_files=$(grep -c '^A' <<< "$file_list")
|
||||
modified_files=$(grep -c '^M' <<< "$file_list")
|
||||
deleted_files=$(grep -c '^D' <<< "$file_list")
|
||||
|
||||
print_color "Added Files: ${added_files}" "${BACKGROUND_GREEN}"
|
||||
print_color "Modified Files: ${modified_files}" "${BACKGROUND_GREEN}"
|
||||
print_color "Deleted Files: ${deleted_files}" "${BACKGROUND_GREEN}"
|
||||
|
||||
if [[ ! $local_branch =~ $valid_branch_regex ]]
|
||||
then
|
||||
printError "There is something wrong with your branch name. Branch names in this project must adhere to this contract: $valid_branch_regex.
|
||||
Your commit will be rejected. You should rename your branch to a valid name(feat/name OR fix/name) and try again."
|
||||
printError "For more on this, read on: https://gist.github.com/cubxxw/126b72104ac0b0ca484c9db09c3e5694"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#
|
||||
#printMessage "Running the Flutter analyzer"
|
||||
#flutter analyze
|
||||
#
|
||||
#if [ $? -ne 0 ]; then
|
||||
# printError "Flutter analyzer error"
|
||||
# exit 1
|
||||
#fi
|
||||
#
|
||||
#printMessage "Finished running the Flutter analyzer"
|
||||
316
scripts/openimsdk.h
Normal file
316
scripts/openimsdk.h
Normal file
@@ -0,0 +1,316 @@
|
||||
/* 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 set_app_background_status(CB_S_I_S_S cCallback, char* operationID, int isBackground);
|
||||
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* sourcePath, 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_conversation_list_split(CB_S_I_S_S cCallback, char* operationID, int offset, int count);
|
||||
extern void get_one_conversation(CB_S_I_S_S cCallback, char* operationID, int sessionType, char* sourceID);
|
||||
extern void get_multiple_conversation(CB_S_I_S_S cCallback, char* operationID, char* conversationIDList);
|
||||
extern void set_conversation_msg_destruct_time(CB_S_I_S_S cCallback, char* operationID, char* conversationID, long long int msgDestructTime);
|
||||
extern void set_conversation_is_msg_destruct(CB_S_I_S_S cCallback, char* operationID, char* conversationID, int isMsgDestruct);
|
||||
extern void hide_conversation(CB_S_I_S_S cCallback, char* operationID, char* conversationID);
|
||||
extern void get_conversation_recv_message_opt(CB_S_I_S_S cCallback, char* operationID, char* conversationIDList);
|
||||
extern void set_conversation_draft(CB_S_I_S_S cCallback, char* operationID, char* conversationID, char* draftText);
|
||||
extern void reset_conversation_group_at_type(CB_S_I_S_S cCallback, char* operationID, char* conversationID);
|
||||
extern void pin_conversation(CB_S_I_S_S cCallback, char* operationID, char* conversationID, int isPinned);
|
||||
extern void set_conversation_private_chat(CB_S_I_S_S cCallback, char* operationID, char* conversationID, int isPrivate);
|
||||
extern void set_conversation_burn_duration(CB_S_I_S_S cCallback, char* operationID, char* conversationID, int duration);
|
||||
extern void set_conversation_recv_message_opt(CB_S_I_S_S cCallback, char* operationID, char* conversationID, int opt);
|
||||
extern void get_total_unread_msg_count(CB_S_I_S_S cCallback, char* operationID);
|
||||
extern char* get_at_all_tag(char* operationID);
|
||||
extern char* get_conversation_id_by_session_type(char* operationID, char* sourceID, int sessionType);
|
||||
extern void send_message(CB_S_I_S_S_I cCallback, char* operationID, char* message, char* recvID, char* groupID, char* offlinePushInfo);
|
||||
extern void send_message_not_oss(CB_S_I_S_S_I cCallback, char* operationID, char* message, char* recvID, char* groupID, char* offlinePushInfo);
|
||||
extern void find_message_list(CB_S_I_S_S cCallback, char* operationID, char* findMessageOptions);
|
||||
extern void get_advanced_history_message_list(CB_S_I_S_S cCallback, char* operationID, char* getMessageOptions);
|
||||
extern void get_advanced_history_message_list_reverse(CB_S_I_S_S cCallback, char* operationID, char* getMessageOptions);
|
||||
extern void revoke_message(CB_S_I_S_S cCallback, char* operationID, char* conversationID, char* clientMsgID);
|
||||
extern void typing_status_update(CB_S_I_S_S cCallback, char* operationID, char* recvID, char* msgTip);
|
||||
extern void mark_conversation_message_as_read(CB_S_I_S_S cCallback, char* operationID, char* conversationID);
|
||||
extern void delete_message_from_local_storage(CB_S_I_S_S cCallback, char* operationID, char* conversationID, char* clientMsgID);
|
||||
extern void delete_message(CB_S_I_S_S cCallback, char* operationID, char* conversationID, char* clientMsgID);
|
||||
extern void hide_all_conversations(CB_S_I_S_S cCallback, char* operationID);
|
||||
extern void delete_all_msg_from_local_and_svr(CB_S_I_S_S cCallback, char* operationID);
|
||||
extern void delete_all_msg_from_local(CB_S_I_S_S cCallback, char* operationID);
|
||||
extern void clear_conversation_and_delete_all_msg(CB_S_I_S_S cCallback, char* operationID, char* conversationID);
|
||||
extern void delete_conversation_and_delete_all_msg(CB_S_I_S_S cCallback, char* operationID, char* conversationID);
|
||||
extern void insert_single_message_to_local_storage(CB_S_I_S_S cCallback, char* operationID, char* message, char* recvID, char* sendID);
|
||||
extern void insert_group_message_to_local_storage(CB_S_I_S_S cCallback, char* operationID, char* message, char* groupID, char* sendID);
|
||||
extern void search_local_messages(CB_S_I_S_S cCallback, char* operationID, char* searchParam);
|
||||
extern void set_message_local_ex(CB_S_I_S_S cCallback, char* operationID, char* conversationID, char* clientMsgID, char* localEx);
|
||||
extern void get_users_info(CB_S_I_S_S cCallback, char* operationID, char* userIDs);
|
||||
extern void get_users_info_with_cache(CB_S_I_S_S cCallback, char* operationID, char* userIDs, char* groupID);
|
||||
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 set_global_recv_message_opt(CB_S_I_S_S cCallback, char* operationID, int opt);
|
||||
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
|
||||
866
scripts/openimsdkcc.cc
Normal file
866
scripts/openimsdkcc.cc
Normal file
@@ -0,0 +1,866 @@
|
||||
#include "openimsdkcc.h"
|
||||
|
||||
#include "wrapp_cpp_function.inc"
|
||||
|
||||
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& sourcePath, const std::string& sourcePicture, const std::string& bigPicture, const std::string& snapshotPicture)
|
||||
{
|
||||
char* operationID_cs=const_cast<char*>(operationID.c_str());
|
||||
char* sourcePath_cs=const_cast<char*>(sourcePath.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,sourcePath_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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
323
scripts/openimsdkcc.h
Normal file
323
scripts/openimsdkcc.h
Normal file
@@ -0,0 +1,323 @@
|
||||
#pragma once
|
||||
|
||||
#include "openimsdk.h"
|
||||
#include <functional>
|
||||
#include <string>
|
||||
#include <memory>
|
||||
#include <iostream>
|
||||
#include <bitset>
|
||||
#include <atomic>
|
||||
#include <thread>
|
||||
#include <chrono>
|
||||
#include <mutex>
|
||||
|
||||
|
||||
|
||||
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& sourcePath,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);
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
18
scripts/run_test.sh
Normal file
18
scripts/run_test.sh
Normal file
@@ -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
|
||||
301
scripts/wrapp_cpp_function.inc
Normal file
301
scripts/wrapp_cpp_function.inc
Normal file
@@ -0,0 +1,301 @@
|
||||
#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];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user