public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { if (streamInfo_ != null) { output.writeMessage(1, getStreamInfo()); } if (segmentId_ != 0L) { output.writeInt64(2, segmentId_); } unknownFields.writeTo(output); }
public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; size = 0; if (streamInfo_ != null) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(1, getStreamInfo()); } if (segmentId_ != 0L) { size += com.google.protobuf.CodedOutputStream .computeInt64Size(2, segmentId_); } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; }
@java.lang.Override public int hashCode() { if (memoizedHashCode != 0) { return memoizedHashCode; } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); if (hasStreamInfo()) { hash = (37 * hash) + STREAMINFO_FIELD_NUMBER; hash = (53 * hash) + getStreamInfo().hashCode(); } hash = (37 * hash) + SEGMENTID_FIELD_NUMBER; hash = (53 * hash) + com.google.protobuf.Internal.hashLong( getSegmentId()); hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; }
@Override public void getSegmentsImmediatlyFollowing(SegmentId request, StreamObserver<SuccessorResponse> responseObserver) { if (request.getStreamInfo().getStream().equals("stream1")) { Map<SegmentId, Pair<Double, Double>> result = new HashMap<>(); if (request.getSegmentId() == 0) { } else if (request.getStreamInfo().getStream().equals("stream8")) { Map<SegmentId, Pair<Double, Double>> result = new HashMap<>(); if (request.getSegmentId() == 0) {
@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.SegmentId)) { return super.equals(obj); } io.pravega.controller.stream.api.grpc.v1.Controller.SegmentId other = (io.pravega.controller.stream.api.grpc.v1.Controller.SegmentId) obj; boolean result = true; result = result && (hasStreamInfo() == other.hasStreamInfo()); if (hasStreamInfo()) { result = result && getStreamInfo() .equals(other.getStreamInfo()); } result = result && (getSegmentId() == other.getSegmentId()); result = result && unknownFields.equals(other.unknownFields); return result; }
public CompletableFuture<Map<SegmentRange, List<Long>>> getSegmentsImmediatelyFollowing(SegmentId segment) { Preconditions.checkNotNull(segment, "segment"); OperationContext context = streamStore.createContext(segment.getStreamInfo().getScope(), segment .getStreamInfo().getStream()); return streamStore.getSuccessors(segment.getStreamInfo().getScope(), segment.getStreamInfo().getStream(), segment.getSegmentId(), context, executor) .thenApply(successors -> successors.entrySet().stream() .collect(Collectors.toMap( entry -> ModelHelper.createSegmentRange(segment.getStreamInfo().getScope(), segment.getStreamInfo().getStream(), entry.getKey().segmentId(), entry.getKey().getKeyStart(), entry.getKey().getKeyEnd()), Map.Entry::getValue))); }
@Override public void getSegmentsImmediatlyFollowing(SegmentId segmentId, StreamObserver<SuccessorResponse> responseObserver) { log.info("getSegmentsImmediatelyFollowing called for segment {} ", segmentId); authenticateExecuteAndProcessResults(() -> this.authHelper.checkAuthorization(segmentId.getStreamInfo().getScope() + "/" + segmentId.getStreamInfo().getStream(), AuthHandler.Permissions.READ), delegationToken -> controllerService.getSegmentsImmediatelyFollowing(segmentId) .thenApply(ModelHelper::createSuccessorResponse) .thenApply(response -> { response.setDelegationToken(delegationToken); return response.build(); }), responseObserver); }
/** * <code>.io.pravega.controller.stream.api.grpc.v1.StreamInfo streamInfo = 1;</code> */ public io.pravega.controller.stream.api.grpc.v1.Controller.StreamInfoOrBuilder getStreamInfoOrBuilder() { return getStreamInfo(); }
/** * Helper to convert Segment Id into Segment object. * * @param segment The Segment Id. * @return New instance of Segment. */ public static final Segment encode(final SegmentId segment) { Preconditions.checkNotNull(segment, "segment"); return new Segment(segment.getStreamInfo().getScope(), segment.getStreamInfo().getStream(), segment.getSegmentId()); }
@Test public void createSuccessorResponse() { Controller.SegmentRange segmentRange = createSegmentRange(0.1, 0.5); Map<Controller.SegmentRange, List<Long>> inputMap = new HashMap<>(1); inputMap.put(segmentRange, Arrays.asList(1L)); Controller.SuccessorResponse successorResponse = ModelHelper.createSuccessorResponse(inputMap).build(); Assert.assertEquals(1, successorResponse.getSegmentsCount()); final SegmentId resultSegmentID = successorResponse.getSegments(0).getSegment().getSegmentId(); assertEquals("testScope", resultSegmentID.getStreamInfo().getScope()); assertEquals("testStream", resultSegmentID.getStreamInfo().getStream()); }
@Test public void decodeSegmentId() { final String streamName = "stream1"; SegmentId segmentID = ModelHelper.decode(createSegmentId(streamName, 2)); assertEquals(streamName, segmentID.getStreamInfo().getStream()); assertEquals("scope", segmentID.getStreamInfo().getScope()); assertEquals(2, segmentID.getSegmentId()); }
@Override public void isSegmentValid(SegmentId request, StreamObserver<SegmentValidityResponse> responseObserver) { log.info("isSegmentValid called for segment {}/{}/{}.", request.getStreamInfo().getScope(), request.getStreamInfo().getStream(), request.getSegmentId()); authenticateExecuteAndProcessResults(() -> this.authHelper.checkAuthorization(request.getStreamInfo().getScope() + "/" + request.getStreamInfo().getStream(), AuthHandler.Permissions.READ_UPDATE), delegationToken -> controllerService.isSegmentValid(request.getStreamInfo().getScope(), request.getStreamInfo().getStream(), request.getSegmentId()) .thenApply(bRes -> SegmentValidityResponse.newBuilder().setResponse(bRes).build()), responseObserver); }
@Test public void testStreamCutRequestAndResponse() { List<SegmentId> segments = Collections.singletonList(SegmentId.newBuilder().setStreamInfo(Controller.StreamInfo.newBuilder(). setScope("testScope").setStream("testStream")).build()); AssertExtensions.assertThrows("invalid scope and stream", () -> ModelHelper.createStreamCutRangeResponse("scope", "stream", segments, ""), e -> e instanceof IllegalArgumentException); Controller.StreamCutRangeResponse response = ModelHelper.createStreamCutRangeResponse("testScope", "testStream", segments, ""); Assert.assertEquals(1, response.getSegmentsCount()); final SegmentId resultSegmentID = response.getSegments(0); assertEquals("testScope", resultSegmentID.getStreamInfo().getScope()); assertEquals("testStream", resultSegmentID.getStreamInfo().getStream()); assertEquals(0L, resultSegmentID.getSegmentId()); }
@Override public void isSegmentValid(SegmentId request, StreamObserver<SegmentValidityResponse> responseObserver) { if (request.getStreamInfo().getStream().equals("stream1")) { responseObserver.onNext(SegmentValidityResponse.newBuilder().setResponse(true).build()); responseObserver.onCompleted(); } else if (request.getStreamInfo().getStream().equals("stream2")) { responseObserver.onNext(SegmentValidityResponse.newBuilder().setResponse(false).build()); responseObserver.onCompleted(); } else { responseObserver.onError(Status.INTERNAL.withDescription("Server error").asRuntimeException()); } }
public Builder mergeFrom(io.pravega.controller.stream.api.grpc.v1.Controller.SegmentId other) { if (other == io.pravega.controller.stream.api.grpc.v1.Controller.SegmentId.getDefaultInstance()) return this; if (other.hasStreamInfo()) { mergeStreamInfo(other.getStreamInfo()); } if (other.getSegmentId() != 0L) { setSegmentId(other.getSegmentId()); } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; }
public CompletableFuture<NodeUri> getURI(final SegmentId segment) { Preconditions.checkNotNull(segment, "segment"); return CompletableFuture.completedFuture( segmentHelper.getSegmentUri(segment.getStreamInfo().getScope(), segment.getStreamInfo().getStream(), segment.getSegmentId(), hostStore) ); }
public static final Controller.StreamCutRangeResponse createStreamCutRangeResponse(final String scope, final String stream, final List<SegmentId> segments, String delegationToken) { Exceptions.checkNotNullOrEmpty(scope, "scope"); Exceptions.checkNotNullOrEmpty(stream, "stream"); Exceptions.checkArgument(segments.stream().allMatch(x -> x.getStreamInfo().getScope().equals(scope) && x.getStreamInfo().getStream().equals(stream)), "streamInfo", "stream info does not match segment id", scope, stream, segments); return Controller.StreamCutRangeResponse.newBuilder() .addAllSegments(segments) .setDelegationToken(delegationToken) .build(); }
@Override public void getURI(SegmentId request, StreamObserver<NodeUri> responseObserver) { log.info("getURI called for segment {}/{}/{}.", request.getStreamInfo().getScope(), request.getStreamInfo().getStream(), request.getSegmentId()); authenticateExecuteAndProcessResults(() -> this.authHelper.checkAuthorization(request.getStreamInfo().getScope() + "/" + request.getStreamInfo().getStream(), AuthHandler.Permissions.READ_UPDATE), delegationToken -> controllerService.getURI(request), responseObserver); }
@Override public void getURI(SegmentId request, StreamObserver<NodeUri> responseObserver) { if (request.getStreamInfo().getStream().equals("stream1")) { responseObserver.onNext(NodeUri.newBuilder().setEndpoint("localhost"). setPort(SERVICE_PORT).build()); responseObserver.onCompleted(); } else { responseObserver.onError(Status.INTERNAL.withDescription("Server error").asRuntimeException()); } }