@Override
public void getStreamSegmentInfo(GetStreamSegmentInfo getStreamSegmentInfo) {
String segmentName = getStreamSegmentInfo.getSegmentName();
final String operation = "getStreamSegmentInfo";
if (!verifyToken(segmentName, getStreamSegmentInfo.getRequestId(), getStreamSegmentInfo.getDelegationToken(), operation)) {
return;
}
segmentStore.getStreamSegmentInfo(segmentName, TIMEOUT)
.thenAccept(properties -> {
if (properties != null) {
StreamSegmentInfo result = new StreamSegmentInfo(getStreamSegmentInfo.getRequestId(),
properties.getName(), true, properties.isSealed(), properties.isDeleted(),
properties.getLastModified().getTime(), properties.getLength(), properties.getStartOffset());
log.trace("Read stream segment info: {}", result);
connection.send(result);
} else {
log.trace("getStreamSegmentInfo could not find segment {}", segmentName);
connection.send(new StreamSegmentInfo(getStreamSegmentInfo.getRequestId(), segmentName, false, true, true, 0, 0, 0));
}
})
.exceptionally(e -> handleException(getStreamSegmentInfo.getRequestId(), segmentName, operation, e));
}