...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package logadmin
16
17 import (
18 "context"
19
20 vkit "cloud.google.com/go/logging/apiv2"
21 logpb "cloud.google.com/go/logging/apiv2/loggingpb"
22 "google.golang.org/api/iterator"
23 mrpb "google.golang.org/genproto/googleapis/api/monitoredres"
24 )
25
26
27
28
29
30
31 func (c *Client) ResourceDescriptors(ctx context.Context) *ResourceDescriptorIterator {
32 it := &ResourceDescriptorIterator{
33 it: c.lClient.ListMonitoredResourceDescriptors(ctx,
34 &logpb.ListMonitoredResourceDescriptorsRequest{}),
35 }
36 it.pageInfo, it.nextFunc = iterator.NewPageInfo(
37 it.fetch,
38 func() int { return len(it.items) },
39 func() interface{} { b := it.items; it.items = nil; return b })
40 return it
41 }
42
43
44 type ResourceDescriptorIterator struct {
45 it *vkit.MonitoredResourceDescriptorIterator
46 pageInfo *iterator.PageInfo
47 nextFunc func() error
48 items []*mrpb.MonitoredResourceDescriptor
49 }
50
51
52 func (it *ResourceDescriptorIterator) PageInfo() *iterator.PageInfo { return it.pageInfo }
53
54
55
56
57 func (it *ResourceDescriptorIterator) Next() (*mrpb.MonitoredResourceDescriptor, error) {
58 if err := it.nextFunc(); err != nil {
59 return nil, err
60 }
61 item := it.items[0]
62 it.items = it.items[1:]
63 return item, nil
64 }
65
66 func (it *ResourceDescriptorIterator) fetch(pageSize int, pageToken string) (string, error) {
67 return iterFetch(pageSize, pageToken, it.it.PageInfo(), func() error {
68 item, err := it.it.Next()
69 if err != nil {
70 return err
71 }
72 it.items = append(it.items, item)
73 return nil
74 })
75 }
76
View as plain text