/
callbacks.go
57 lines (53 loc) · 1.26 KB
/
callbacks.go
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
package test
import (
"context"
"log"
"sync"
discovery "github.com/envoyproxy/go-control-plane/envoy/api/v2"
)
type Callbacks struct {
Signal chan struct{}
Debug bool
Fetches int
Requests int
mu sync.Mutex
}
func (cb *Callbacks) Report() {
cb.mu.Lock()
defer cb.mu.Unlock()
log.Printf("server callbacks fetches=%d requests=%d\n", cb.Fetches, cb.Requests)
}
func (cb *Callbacks) OnStreamOpen(_ context.Context, id int64, typ string) error {
if cb.Debug {
log.Printf("stream %d open for %s\n", id, typ)
}
return nil
}
func (cb *Callbacks) OnStreamClosed(id int64) {
if cb.Debug {
log.Printf("stream %d closed\n", id)
}
}
func (cb *Callbacks) OnStreamRequest(int64, *discovery.DiscoveryRequest) error {
cb.mu.Lock()
defer cb.mu.Unlock()
cb.Requests++
if cb.Signal != nil {
close(cb.Signal)
cb.Signal = nil
}
return nil
}
func (cb *Callbacks) OnStreamResponse(int64, *discovery.DiscoveryRequest, *discovery.DiscoveryResponse) {
}
func (cb *Callbacks) OnFetchRequest(_ context.Context, req *discovery.DiscoveryRequest) error {
cb.mu.Lock()
defer cb.mu.Unlock()
cb.Fetches++
if cb.Signal != nil {
close(cb.Signal)
cb.Signal = nil
}
return nil
}
func (cb *Callbacks) OnFetchResponse(*discovery.DiscoveryRequest, *discovery.DiscoveryResponse) {}