From 01a4bcf13db7d2aeed77e198a11fddb1e5317f0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B2=B3?= Date: Wed, 4 Dec 2019 01:54:23 +0800 Subject: [PATCH] update npc sdk and version --- .travis.yml | 10 ++++++++-- cmd/npc/sdk.go | 35 +++++++++++++++++++++++++---------- 2 files changed, 33 insertions(+), 12 deletions(-) diff --git a/.travis.yml b/.travis.yml index 64c4aa0..345d47f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,7 +7,9 @@ services: - docker script: - go test -v ./cmd/nps/ - +os: + - linux + - windows before_deploy: - wget https://github.com/upx/upx/releases/download/v3.95/upx-3.95-amd64_linux.tar.xz - tar -xvf upx-3.95-amd64_linux.tar.xz @@ -162,7 +164,7 @@ before_deploy: - tar -czvf win_386_server.tar.gz conf/nps.conf conf/tasks.json conf/clients.json conf/hosts.json conf/server.key conf/server.pem web/views web/static nps.exe - - export VERSION=0.24.2 + - export VERSION=0.24.3 - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" - sudo apt-get update @@ -174,6 +176,9 @@ before_deploy: - docker exec -it spksrc /bin/bash -c 'cd /spksrc && make setup && cd /spksrc/spk/npc && make' - cp ~/spksrc/packages/npc_noarch-all_$VERSION-1.spk ./npc_$VERSION.spk + - if [ "$TRAVIS_OS_NAME" = "windows" ]; then go build -buildmode=c-shared -o npc_sdk.dll cmd\npc\sdk.go ; fi + - tar -czvf npc_sdk.tar.gz npc_sdk.dll npc_sdk.h + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - export DOCKER_CLI_EXPERIMENTAL=enabled - docker run --rm --privileged docker/binfmt:66f9012c56a8316f9244ffd7622d7c21c1f6f28d @@ -220,6 +225,7 @@ deploy: - win_amd64_client.tar.gz - win_amd64_server.tar.gz - npc_$VERSION.spk + - nnpc_sdk.tar.gz on: tags: true all_branches: true diff --git a/cmd/npc/sdk.go b/cmd/npc/sdk.go index bf247fa..b4b60f9 100644 --- a/cmd/npc/sdk.go +++ b/cmd/npc/sdk.go @@ -2,32 +2,47 @@ package main import "C" import ( - "fmt" "github.com/cnlh/nps/client" "time" ) -//export PrintBye -func PrintBye() { - fmt.Println("From DLL: Bye!") -} - var status bool +var closeBefore bool +var cl *client.TRPClient -//export Sum -func StartClientByVerifyKey(a int, b int) bool { - c := client.NewRPClient(*serverAddr, *verifyKey, *connType, *proxyUrl, nil) +//export StartClientByVerifyKey +func StartClientByVerifyKey(serverAddr, verifyKey, connType, proxyUrl string) bool { + if cl != nil { + closeBefore = true + cl.Close() + } + cl = client.NewRPClient(serverAddr, verifyKey, connType, proxyUrl, nil) + closeBefore = false go func() { for { status = true - c.Start() + cl.Start() status = false + if closeBefore { + return + } time.Sleep(time.Second * 5) } }() return true } +//export GetClientStatus +func GetClientStatus() bool { + return status +} + +//export CloseClient +func CloseClient() { + cl.Close() + closeBefore = true +} + func main() { // Need a main function to make CGO compile package as C shared library }