@@ -62,22 +62,15 @@ abstract class XdsClient {
62
62
*/
63
63
static final class ConfigUpdate {
64
64
private final String clusterName ;
65
- private final Listener listener ;
66
65
67
- private ConfigUpdate (String clusterName , @ Nullable Listener listener ) {
66
+ private ConfigUpdate (String clusterName ) {
68
67
this .clusterName = clusterName ;
69
- this .listener = listener ;
70
68
}
71
69
72
70
String getClusterName () {
73
71
return clusterName ;
74
72
}
75
73
76
- @ Nullable
77
- public Listener getListener () {
78
- return listener ;
79
- }
80
-
81
74
@ Override
82
75
public String toString () {
83
76
return
@@ -93,7 +86,6 @@ static Builder newBuilder() {
93
86
94
87
static final class Builder {
95
88
private String clusterName ;
96
- @ Nullable private Listener listener ;
97
89
98
90
// Use ConfigUpdate.newBuilder().
99
91
private Builder () {
@@ -104,14 +96,9 @@ Builder setClusterName(String clusterName) {
104
96
return this ;
105
97
}
106
98
107
- Builder setListener (Listener listener ) {
108
- this .listener = listener ;
109
- return this ;
110
- }
111
-
112
99
ConfigUpdate build () {
113
100
Preconditions .checkState (clusterName != null , "clusterName is not set" );
114
- return new ConfigUpdate (clusterName , listener );
101
+ return new ConfigUpdate (clusterName );
115
102
}
116
103
}
117
104
}
@@ -352,6 +339,52 @@ EndpointUpdate build() {
352
339
}
353
340
}
354
341
342
+ /**
343
+ * Updates via resource discovery RPCs using LDS. Includes {@link Listener} object containing
344
+ * config for security, RBAC or other server side features such as rate limit.
345
+ */
346
+ static final class ListenerUpdate {
347
+ // TODO(sanjaypujare): flatten structure by moving Listener class members here.
348
+ private final Listener listener ;
349
+
350
+ private ListenerUpdate (Listener listener ) {
351
+ this .listener = listener ;
352
+ }
353
+
354
+ public Listener getListener () {
355
+ return listener ;
356
+ }
357
+
358
+ @ Override
359
+ public String toString () {
360
+ return MoreObjects .toStringHelper (this )
361
+ .add ("listener" , listener )
362
+ .toString ();
363
+ }
364
+
365
+ static Builder newBuilder () {
366
+ return new Builder ();
367
+ }
368
+
369
+ static final class Builder {
370
+ private Listener listener ;
371
+
372
+ // Use ListenerUpdate.newBuilder().
373
+ private Builder () {
374
+ }
375
+
376
+ Builder setListener (Listener listener ) {
377
+ this .listener = listener ;
378
+ return this ;
379
+ }
380
+
381
+ ListenerUpdate build () {
382
+ Preconditions .checkState (listener != null , "listener is not set" );
383
+ return new ListenerUpdate (listener );
384
+ }
385
+ }
386
+ }
387
+
355
388
/**
356
389
* Config watcher interface. To be implemented by the xDS resolver.
357
390
*/
@@ -385,6 +418,19 @@ interface EndpointWatcher {
385
418
void onError (Status error );
386
419
}
387
420
421
+ /**
422
+ * Listener watcher interface. To be used by {@link io.grpc.xds.internal.sds.XdsServerBuilder}.
423
+ */
424
+ interface ListenerWatcher {
425
+
426
+ /**
427
+ * Called when receiving an update on Listener configuration.
428
+ */
429
+ void onListenerChanged (ListenerUpdate update );
430
+
431
+ void onError (Status error );
432
+ }
433
+
388
434
/**
389
435
* Shutdown this {@link XdsClient} and release resources.
390
436
*/
@@ -430,6 +476,12 @@ void watchEndpointData(String clusterName, EndpointWatcher watcher) {
430
476
void cancelEndpointDataWatch (String clusterName , EndpointWatcher watcher ) {
431
477
}
432
478
479
+ /**
480
+ * Registers a watcher for a Listener with the given port.
481
+ */
482
+ void watchListenerData (int port , ListenerWatcher watcher ) {
483
+ }
484
+
433
485
/**
434
486
* Report client load stats to a remote server for the given cluster:cluster_service.
435
487
*
0 commit comments