@java.lang.Override public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } if (!(obj instanceof io.pravega.controller.stream.api.grpc.v1.Controller.SegmentsAtTime)) { return super.equals(obj); } io.pravega.controller.stream.api.grpc.v1.Controller.SegmentsAtTime other = (io.pravega.controller.stream.api.grpc.v1.Controller.SegmentsAtTime) obj; boolean result = true; result = result && getSegmentsList() .equals(other.getSegmentsList()); result = result && getDelegationToken() .equals(other.getDelegationToken()); result = result && unknownFields.equals(other.unknownFields); return result; }
@java.lang.Override public int hashCode() { if (memoizedHashCode != 0) { return memoizedHashCode; } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); if (getSegmentsCount() > 0) { hash = (37 * hash) + SEGMENTS_FIELD_NUMBER; hash = (53 * hash) + getSegmentsList().hashCode(); } hash = (37 * hash) + DELEGATIONTOKEN_FIELD_NUMBER; hash = (53 * hash) + getDelegationToken().hashCode(); hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; }
@Override public CompletableFuture<Map<Segment, Long>> getSegmentsAtTime(final Stream stream, final long timestamp) { Exceptions.checkNotClosed(closed.get(), this); Preconditions.checkNotNull(stream, "stream"); long traceId = LoggerHelpers.traceEnter(log, "getSegmentsAtTime", stream, timestamp); final CompletableFuture<SegmentsAtTime> result = this.retryConfig.runAsync(() -> { RPCAsyncCallback<SegmentsAtTime> callback = new RPCAsyncCallback<>(traceId, "getSegmentsAtTime"); StreamInfo streamInfo = ModelHelper.createStreamInfo(stream.getScope(), stream.getStreamName()); GetSegmentsRequest request = GetSegmentsRequest.newBuilder() .setStreamInfo(streamInfo) .setTimestamp(timestamp) .build(); client.getSegments(request, callback); return callback.getFuture(); }, this.executor); return result.thenApply(segments -> { log.debug("Received the following data from the controller {}", segments.getSegmentsList()); return segments.getSegmentsList() .stream() .collect(Collectors.toMap(location -> ModelHelper.encode(location.getSegmentId()), location -> location.getOffset())); }).whenComplete((x, e) -> { if (e != null) { log.warn("getSegmentsAtTime failed: ", e); } LoggerHelpers.traceLeave(log, "getSegmentsAtTime", traceId); }); }