1
1
package eventsource
2
2
3
3
import (
4
- "code.cloudfoundry.org/go-loggregator"
5
- "code.cloudfoundry.org/go-loggregator/conversion"
6
- "code.cloudfoundry.org/go-loggregator/rpc/loggregator_v2"
4
+ "code.cloudfoundry.org/go-loggregator/v8 "
5
+ "code.cloudfoundry.org/go-loggregator/v8/ conversion"
6
+ "code.cloudfoundry.org/go-loggregator/v8/ rpc/loggregator_v2"
7
7
"context"
8
8
"github.com/cloudfoundry/sonde-go/events"
9
9
)
@@ -27,11 +27,12 @@ func NewV2Adapter(s Streamer) V2Adapter {
27
27
}
28
28
29
29
// Firehose returns only selected event stream
30
- func (a V2Adapter ) Firehose (subscriptionID string ) chan * events.Envelope {
30
+ func (a V2Adapter ) Firehose (config * FirehoseConfig ) chan * events.Envelope {
31
31
ctx := context .Background ()
32
-
32
+ var v1msgs = make (chan * events.Envelope , 10000 )
33
+ var v2msgs = make (chan * loggregator_v2.Envelope , 10000 )
33
34
es := a .streamer .Stream (ctx , & loggregator_v2.EgressBatchRequest {
34
- ShardId : subscriptionID ,
35
+ ShardId : config . SubscriptionID ,
35
36
Selectors : []* loggregator_v2.Selector {
36
37
{
37
38
Message : & loggregator_v2.Selector_Log {
@@ -61,17 +62,23 @@ func (a V2Adapter) Firehose(subscriptionID string) chan *events.Envelope {
61
62
},
62
63
})
63
64
64
- var msgs = make (chan * events.Envelope , 100 )
65
65
go func () {
66
66
for ctx .Err () == nil {
67
67
for _ , e := range es () {
68
- // ToV1 converts v2 envelopes down to v1 envelopes.
69
- for _ , v1e := range conversion .ToV1 (e ) {
70
- msgs <- v1e
71
- }
68
+ v2msgs <- e
69
+ }
70
+ }
71
+ }()
72
+
73
+ go func () {
74
+ for ctx .Err () == nil {
75
+ e := <- v2msgs
76
+ //// ToV1 converts v2 envelopes down to v1 envelopes.
77
+ for _ , v1e := range conversion .ToV1 (e ) {
78
+ v1msgs <- v1e
72
79
}
73
80
}
74
81
}()
75
82
76
- return msgs
83
+ return v1msgs
77
84
}
0 commit comments