-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathmain.go
More file actions
125 lines (98 loc) · 2.16 KB
/
main.go
File metadata and controls
125 lines (98 loc) · 2.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package main
import (
"github.com/spr-networks/sprbus"
//"github.com/spr-networks/sprbus/log"
"fmt"
"github.com/sirupsen/logrus"
"io"
"log"
"os"
"sync"
"time"
)
var client *sprbus.Client
// var socket = "/tmp/test.sock"
var socket = os.Getenv("TEST_PREFIX") + "/state/api/eventbus.sock"
func custom_subscribe(client *sprbus.Client) {
time.Sleep(time.Second / 4)
var wg sync.WaitGroup
stream, err := client.SubscribeTopic("spr")
if nil != err {
log.Fatal(err)
}
go func() {
wg.Add(1)
for {
reply, err := stream.Recv()
if io.EOF == err {
break
}
if nil != err {
return
}
topic := reply.GetTopic()
value := reply.GetValue()
fmt.Printf("topic=%v value=%v\n", topic, value)
}
}()
}
func custom_publish(client *sprbus.Client) {
for i := 0; i < 5; i++ {
_, err := client.Publish("spr:test", "{\"data\": \"test\"}")
if err != nil {
log.Fatal(err)
}
}
}
func custom_server() {
//log.Println("server listening...")
server, err := sprbus.NewServer(socket)
if err != nil {
log.Fatal(err)
}
// does not return
log.Println("server:", server)
}
func spr_publish() {
for i := 0; i < 5; i++ {
type testS struct {
Title string
Body string
}
sprbus.Publish("spr:test:struct", testS{Title: "tttt1111", Body: "datahere"})
sprbus.Publish("spr:test:string", "s1ACID")
sprbus.Publish("spr:test:array", []int{11, 23})
}
}
func spr_event() {
sprbus.HandleEvent("", func(topic string, json string) {
fmt.Printf("[sprbus] %v %v\n", topic, json)
})
}
func spr_log() {
var log = sprbus.NewLog("spr:log")
// can modify log
log.SetLevel(logrus.DebugLevel)
/*log.SetOutput(os.Stdout)
log.SetReportCaller(false)
log.SetFormatter(&logrus.TextFormatter{FullTimestamp: true})*/
log.Warnf("this is a warning: %v", 1234)
log.Println("connected to", socket)
log.Debugf("debug: %v", 1234)
}
func main() {
go custom_server()
time.Sleep(time.Second / 2)
go spr_event()
time.Sleep(time.Second / 2)
client, err := sprbus.NewClient(socket)
defer client.Close()
if err != nil {
log.Fatal("err", err)
}
//custom_subscribe(client)
//custom_publish(client)
spr_publish()
spr_log()
time.Sleep(time.Second * 5)
}