Skip to content

Commit ac5e326

Browse files
committed
Merge branch 'master' of github.com:grpc/grpc-java into impl/xds_timeout_with_max_stream_duration
2 parents e103a9e + 0f7fd28 commit ac5e326

File tree

4 files changed

+3608
-6
lines changed

4 files changed

+3608
-6
lines changed

xds/src/main/java/io/grpc/xds/XdsClient.java

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package io.grpc.xds;
1818

19+
import static com.google.common.base.Preconditions.checkNotNull;
1920
import static com.google.common.base.Preconditions.checkState;
2021

2122
import com.google.common.annotations.VisibleForTesting;
@@ -117,7 +118,8 @@ private LdsUpdate(long httpMaxStreamDurationNano, @Nullable String rdsName,
117118
@Nullable List<VirtualHost> virtualHosts) {
118119
this.httpMaxStreamDurationNano = httpMaxStreamDurationNano;
119120
this.rdsName = rdsName;
120-
this.virtualHosts = virtualHosts;
121+
this.virtualHosts = virtualHosts == null
122+
? null : Collections.unmodifiableList(new ArrayList<>(virtualHosts));
121123
}
122124

123125
long getHttpMaxStreamDurationNano() {
@@ -169,7 +171,7 @@ static Builder newBuilder() {
169171
return new Builder();
170172
}
171173

172-
private static class Builder {
174+
static class Builder {
173175
private long httpMaxStreamDurationNano;
174176
@Nullable
175177
private String rdsName;
@@ -189,8 +191,11 @@ Builder setRdsName(String rdsName) {
189191
return this;
190192
}
191193

192-
Builder setVirtualHosts(List<VirtualHost> virtualHosts) {
193-
this.virtualHosts = virtualHosts;
194+
Builder addVirtualHost(VirtualHost virtualHost) {
195+
if (virtualHosts == null) {
196+
virtualHosts = new ArrayList<>();
197+
}
198+
virtualHosts.add(virtualHost);
194199
return this;
195200
}
196201

@@ -206,7 +211,8 @@ static final class RdsUpdate implements ResourceUpdate {
206211
private final List<VirtualHost> virtualHosts;
207212

208213
private RdsUpdate(List<VirtualHost> virtualHosts) {
209-
this.virtualHosts = virtualHosts;
214+
this.virtualHosts = Collections.unmodifiableList(
215+
new ArrayList<>(checkNotNull(virtualHosts, "virtualHosts")));
210216
}
211217

212218
static RdsUpdate fromVirtualHosts(List<VirtualHost> virtualHosts) {
@@ -223,6 +229,23 @@ public String toString() {
223229
.add("virtualHosts", virtualHosts)
224230
.toString();
225231
}
232+
233+
@Override
234+
public int hashCode() {
235+
return Objects.hash(virtualHosts);
236+
}
237+
238+
@Override
239+
public boolean equals(Object o) {
240+
if (this == o) {
241+
return true;
242+
}
243+
if (o == null || getClass() != o.getClass()) {
244+
return false;
245+
}
246+
RdsUpdate that = (RdsUpdate) o;
247+
return Objects.equals(virtualHosts, that.virtualHosts);
248+
}
226249
}
227250

228251
static final class CdsUpdate implements ResourceUpdate {
@@ -474,7 +497,7 @@ EdsUpdate build() {
474497
* Updates via resource discovery RPCs using LDS. Includes {@link Listener} object containing
475498
* config for security, RBAC or other server side features such as rate limit.
476499
*/
477-
static final class ListenerUpdate {
500+
static final class ListenerUpdate implements ResourceUpdate {
478501
// TODO(sanjaypujare): flatten structure by moving Listener class members here.
479502
private final Listener listener;
480503

0 commit comments

Comments
 (0)