Skip to content

Commit 7357d58

Browse files
committed
example: add struct pointer example
1 parent 48944a2 commit 7357d58

File tree

1 file changed

+37
-0
lines changed
  • examples/high_level/struct_pointer

1 file changed

+37
-0
lines changed

Diff for: examples/high_level/struct_pointer/main.go

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package main
2+
3+
import (
4+
"bytes"
5+
"fmt"
6+
"time"
7+
8+
"github.com/yomorun/y3-codec-golang"
9+
)
10+
11+
// Example of encoding and decoding struct type.
12+
func main() {
13+
// Simulate source to generate and send data
14+
data := &NoiseData{Noise: 40, Time: time.Now().UnixNano() / 1e6, From: "127.0.0.1"}
15+
fmt.Printf("encoded data: %v\n", *data)
16+
sendingBuf, _ := y3.NewCodec(0x10).Marshal(data)
17+
source := y3.FromStream(bytes.NewReader(sendingBuf))
18+
// Simulate flow listening and decoding data
19+
var decode = func(v []byte) (interface{}, error) {
20+
var obj NoiseData
21+
err := y3.ToObject(v, &obj)
22+
if err != nil {
23+
return nil, err
24+
}
25+
return obj, nil
26+
}
27+
consumer := source.Subscribe(0x10).OnObserve(decode)
28+
for item := range consumer {
29+
fmt.Printf("observed data: %v\n", item)
30+
}
31+
}
32+
33+
type NoiseData struct {
34+
Noise float32 `y3:"0x11"`
35+
Time int64 `y3:"0x12"`
36+
From string `y3:"0x13"`
37+
}

0 commit comments

Comments
 (0)