prepare for async

This commit is contained in:
ctlove0523 2021-03-29 21:53:03 +08:00
parent 9609bbf318
commit 7aa1a9e293
2 changed files with 43 additions and 1 deletions

42
async/message/msg.go Normal file
View File

@ -0,0 +1,42 @@
package main
import (
"fmt"
iot "github.com/ctlove0523/huaweicloud-iot-device-sdk-go"
uuid "github.com/satori/go.uuid"
"time"
)
func main() {
// 创建一个设备并初始化
device := iot.CreateAsyncIotDevice("5fdb75cccbfe2f02ce81d4bf_liqian", "123456789", "tls://iot-mqtts.cn-north-4.myhuaweicloud.com:8883")
device.Init()
// 注册平台下发消息的callback当收到平台下发的消息时调用此callback.
// 支持注册多个callback并且按照注册顺序调用
device.AddMessageHandler(func(message iot.Message) bool {
fmt.Println("first handler called" + iot.Interface2JsonString(message))
return true
})
device.AddMessageHandler(func(message iot.Message) bool {
fmt.Println("second handler called" + iot.Interface2JsonString(message))
return true
})
//向平台发送消息
message := iot.Message{
ObjectDeviceId: uuid.NewV4().String(),
Name: "Fist send message to platform",
Id: uuid.NewV4().String(),
Content: "Hello Huawei IoT Platform",
}
asyncResult:=device.SendMessage(message)
if asyncResult.Wait() && asyncResult.Error()!= nil {
fmt.Println("async send message failed")
} else {
fmt.Println("async send message success")
}
time.Sleep(2 * time.Minute)
}

View File

@ -9,7 +9,7 @@ import (
type AsyncDevice interface { type AsyncDevice interface {
BaseDevice BaseDevice
Gateway Gateway
SendMessage(message Message) AsyncResult SendMessage(message Message) BooleanAsyncResult
ReportProperties(properties DeviceProperties) AsyncResult ReportProperties(properties DeviceProperties) AsyncResult
BatchReportSubDevicesProperties(service DevicesService) AsyncResult BatchReportSubDevicesProperties(service DevicesService) AsyncResult
QueryDeviceShadow(query DevicePropertyQueryRequest, handler DevicePropertyQueryResponseHandler) AsyncResult QueryDeviceShadow(query DevicePropertyQueryRequest, handler DevicePropertyQueryResponseHandler) AsyncResult