List of usage examples for io.vertx.core MultiMap get
@Nullable String get(String name);
From source file:org.sfs.nodes.compute.masterkey.VerifyRepairMasterKeys.java
License:Apache License
@Override public void handle(final SfsRequest httpServerRequest) { VertxContext<Server> vertxContext = httpServerRequest.vertxContext(); Defer.aVoid().flatMap(new Authenticate(httpServerRequest)) .flatMap(new ValidateActionAdminOrSystem(httpServerRequest)).map(aVoid -> httpServerRequest) .map(new ValidateHeaderBetweenLong(Jobs.Parameters.TIMEOUT, 100, Long.MAX_VALUE)) .map(new ToVoid<>()).flatMap(aVoid -> { ClusterInfo clusterInfo = vertxContext.verticle().getClusterInfo(); Nodes nodes = vertxContext.verticle().nodes(); MultiMap headers = httpServerRequest.headers(); long timeout = headers.contains(Jobs.Parameters.TIMEOUT) ? Long.parseLong(headers.get(Jobs.Parameters.TIMEOUT)) : 100;/*w ww . j av a2 s . co m*/ MultiMap params = MultiMap.caseInsensitiveMultiMap(); TransientServiceDef transientServiceDef = clusterInfo.getCurrentMasterNode(); MasterNode masterNode = nodes.remoteMasterNode(vertxContext, transientServiceDef); httpServerRequest.startProxyKeepAlive(); return masterNode.executeJob(Jobs.ID.REPAIR_MASTER_KEYS, params, timeout, TimeUnit.MILLISECONDS); }).single().subscribe(new ConnectionCloseTerminus<Void>(httpServerRequest) { @Override public void onNext(Void aVoid) { JsonObject responseJson = new JsonObject().put("code", HTTP_OK).put("message", "Success"); httpServerRequest.response().write(responseJson.encode(), StandardCharsets.UTF_8.toString()) .write(DELIMITER_BUFFER); } }); }
From source file:org.sfs.nodes.compute.object.DeleteObject.java
License:Apache License
@Override public void handle(final SfsRequest httpServerRequest) { MultiMap queryParams = httpServerRequest.params(); final String versionAsString = queryParams.get(VERSION); VertxContext<Server> vertxContext = httpServerRequest.vertxContext(); aVoid().flatMap(new Authenticate(httpServerRequest)) .flatMap(new ValidateActionAuthenticated(httpServerRequest)) .map(aVoid -> fromSfsRequest(httpServerRequest)).map(new ValidateObjectPath()) .flatMap(new LoadAccountAndContainerAndObject(vertxContext)).flatMap(persistentObject -> { int maxRevisions = persistentObject.getParent().getMaxObjectRevisions(); boolean hasVersionString = !isNullOrEmpty(versionAsString); // if there is no version number supplied // add a delete marker if the newest version // isn't already a delete marker List<TransientVersion> versionsToCheck = new ArrayList<>(); TransientVersion newVersion = null; if (!hasVersionString) { if (maxRevisions <= 0) { for (TransientVersion transientVersion : persistentObject.getVersions()) { transientVersion.setDeleted(TRUE); versionsToCheck.add(transientVersion); }/* www .j ava 2s .c o m*/ } else { Optional<TransientVersion> oNewestVersion = persistentObject.getNewestVersion(); if (oNewestVersion.isPresent()) { TransientVersion newestVersion = oNewestVersion.get(); versionsToCheck.add(newestVersion); if (!TRUE.equals(newestVersion.getDeleteMarker())) { newVersion = persistentObject.newVersion().merge(newestVersion.toJsonObject()) .setDeleteMarker(TRUE); } } } } else { final boolean all = equalsIgnoreCase("all", versionAsString); final Set<Long> toDeleteVersions; if (!all) { toDeleteVersions = from(on(',').omitEmptyStrings().trimResults().split(versionAsString)) .transform(input -> tryParse(input)).filter(notNull()).toSet(); } else { toDeleteVersions = emptySet(); } Iterable<TransientVersion> versionsToDelete = from(persistentObject.getVersions()) .filter(notNull()).filter(input -> all || toDeleteVersions.contains(input.getId())); for (TransientVersion version : versionsToDelete) { version.setDeleted(TRUE); versionsToCheck.add(version); } } TransientVersion finalNewVersion = newVersion; return Observable.from(versionsToCheck) .flatMap(new ValidateActionObjectDelete(httpServerRequest)).count().map(new ToVoid<>()) .flatMap(aVoid -> { if (finalNewVersion != null) { return new PruneObject(httpServerRequest.vertxContext(), finalNewVersion) .call(persistentObject).map(modified -> persistentObject); } else { return new PruneObject(httpServerRequest.vertxContext()).call(persistentObject) .map(modified -> persistentObject); } }); }).flatMap(persistentObject -> { if (persistentObject.getVersions().isEmpty()) { return just(persistentObject).flatMap(new RemoveObject(httpServerRequest.vertxContext())) .map(new ValidateOptimisticObjectLock()); } else { return just(persistentObject) .map(persistentObject1 -> persistentObject.setUpdateTs(getInstance())) .flatMap(new UpdateObject(httpServerRequest.vertxContext())) .map(new ValidateOptimisticObjectLock()); } }).single().subscribe(new ConnectionCloseTerminus<PersistentObject>(httpServerRequest) { @Override public void onNext(PersistentObject input) { httpServerRequest.response().setStatusCode(HTTP_NO_CONTENT); } }); }
From source file:org.sfs.nodes.compute.object.GetObject.java
License:Apache License
@Override public void handle(final SfsRequest httpServerRequest) { httpServerRequest.pause();/*from w ww . j a va2s . com*/ MultiMap queryParams = httpServerRequest.params(); final String versionAsString = queryParams.get(VERSION); final BufferEndableWriteStream httpResponseWriteStream = new NoEndEndableWriteStream( new HttpServerResponseEndableWriteStream(httpServerRequest.response())); VertxContext<Server> vertxContext = httpServerRequest.vertxContext(); aVoid().flatMap(new Authenticate(httpServerRequest)) .flatMap(new ValidateActionAuthenticated(httpServerRequest)) .map(aVoid -> fromSfsRequest(httpServerRequest)).map(new ValidateObjectPath()) .flatMap(new LoadAccountAndContainerAndObject(vertxContext)).flatMap(persistentObject -> { if (isNullOrEmpty(versionAsString)) { return just(persistentObject).map(new ValidatePersistentObjectLatestVersionExists()); } else { final long parsedVersion = tryParse(versionAsString); return just(persistentObject).map(new ValidatePersistentObjectVersionExists(parsedVersion)); } }).flatMap(new ValidateActionObjectRead(httpServerRequest)).map(new ValidateVersionNotDeleted()) .map(new ValidateVersionNotDeleteMarker()).map(new ValidateVersionNotExpired()) .map(new ValidateVersionHasSegments()).map(new ValidateVersionSegmentsHasData()) .map(new ValidateVersionIsReadable()).flatMap(transientVersion -> { // Dynamic large objects are stupid but it's the way openstack swift does // there's lots of opportunity to delete dynamic large object parts // or change them after the object manifest has been declared // but hey... we're doing it anyways because we want to be // compatible with existing gui tools that support swift. // This reactor will fail if there are no parts if (transientVersion.getObjectManifest().isPresent()) { return just(transientVersion) .flatMap(new EmitDynamicLargeObjectParts(httpServerRequest.vertxContext())) .map(new ValidatePersistentObjectLatestVersionExists()) .flatMap(new ValidateActionObjectRead(httpServerRequest)) .map(new ValidateVersionNotDeleted()).map(new ValidateVersionNotDeleteMarker()) .map(new ValidateVersionNotExpired()).map(new ValidateVersionHasSegments()) .map(new ValidateVersionSegmentsHasData()).map(new ValidateVersionIsReadable()) .toSortedList((lft, rgt) -> { String lftId = lft.getParent().getId(); String rgtId = rgt.getParent().getId(); return lftId.compareTo(rgtId); }) .flatMap(transientVersions -> just(transientVersions) .map(new ValidateDynamicLargeObjectHasParts(transientVersion)) .doOnNext(aVoid -> httpServerRequest.response().setStatusCode(HTTP_OK)) .map(new WriteHttpServerResponseHeaders(httpServerRequest, transientVersion, transientVersions)) .map(aVoid -> transientVersions) .flatMap(new ReadSegments(vertxContext, httpResponseWriteStream))); } else { return aVoid().doOnNext(aVoid -> httpServerRequest.response().setStatusCode(HTTP_OK)) .map(new WriteHttpServerResponseHeaders(httpServerRequest, transientVersion, emptyList())) .map(aVoid -> singletonList(transientVersion)) .flatMap(new ReadSegments(vertxContext, httpResponseWriteStream)); } }).map(new ToVoid<>()).subscribe(new ConnectionCloseTerminus<Void>(httpServerRequest) { @Override public void onNext(Void input) { // do nothing here since the headers need to set before the stream is copied. As a result // the WriteHttpServerResponseHeaders map call } }); }
From source file:org.sfs.nodes.compute.object.HeadObject.java
License:Apache License
@Override public void handle(final SfsRequest httpServerRequest) { httpServerRequest.pause();//w w w . ja v a 2 s .c om VertxContext<Server> vertxContext = httpServerRequest.vertxContext(); MultiMap queryParams = httpServerRequest.params(); final String versionAsString = queryParams.get(VERSION); aVoid().flatMap(new Authenticate(httpServerRequest)) .flatMap(new ValidateActionAuthenticated(httpServerRequest)) .map(aVoid -> fromSfsRequest(httpServerRequest)).map(new ValidateObjectPath()) .flatMap(new LoadAccountAndContainerAndObject(vertxContext)).flatMap(persistentObject -> { if (isNullOrEmpty(versionAsString)) { return just(persistentObject).map(new ValidatePersistentObjectLatestVersionExists()); } else { final long parsedVersion = tryParse(versionAsString); return just(persistentObject).map(new ValidatePersistentObjectVersionExists(parsedVersion)); } }).flatMap(new ValidateActionObjectRead(httpServerRequest)).map(new ValidateVersionNotDeleted()) .map(new ValidateVersionNotDeleteMarker()).map(new ValidateVersionNotExpired()) .map(new ValidateVersionHasSegments()).map(new ValidateVersionSegmentsHasData()) .map(new ValidateVersionIsReadable()).flatMap(transientVersion -> { if (transientVersion.getObjectManifest().isPresent()) { return just(transientVersion) .flatMap(new EmitDynamicLargeObjectParts(httpServerRequest.vertxContext())) .map(new ValidatePersistentObjectLatestVersionExists()) .flatMap(transientVersion1 -> just(transientVersion1) .map(new ValidateActionObjectRead(httpServerRequest)) .map(aVoid -> transientVersion1)) .map(new ValidateVersionNotDeleted()).map(new ValidateVersionNotDeleteMarker()) .map(new ValidateVersionNotExpired()).map(new ValidateVersionHasSegments()) .map(new ValidateVersionSegmentsHasData()).map(new ValidateVersionIsReadable()) .toSortedList((lft, rgt) -> { String lftId = lft.getParent().getId(); String rgtId = rgt.getParent().getId(); return lftId.compareTo(rgtId); }) .flatMap(transientVersions -> just(transientVersions) .map(new ValidateDynamicLargeObjectHasParts(transientVersion)) .doOnNext(aVoid -> httpServerRequest.response().setStatusCode(HTTP_OK)) .map(new WriteHttpServerResponseHeaders(httpServerRequest, transientVersion, transientVersions)) .map(aVoid -> transientVersions)); } else { return aVoid().doOnNext(aVoid -> httpServerRequest.response().setStatusCode(HTTP_OK)) .map(new WriteHttpServerResponseHeaders(httpServerRequest, transientVersion, emptyList())); } }).map(new ToVoid<>()).single().subscribe(new ConnectionCloseTerminus<Void>(httpServerRequest) { @Override public void onNext(Void input) { // do nothing here since the headers are set earlier } }); }
From source file:org.sfs.nodes.compute.object.PostObject.java
License:Apache License
@Override public void handle(final SfsRequest httpServerRequest) { httpServerRequest.pause();//from w ww. j a v a2 s . co m VertxContext<Server> vertxContext = httpServerRequest.vertxContext(); aVoid().flatMap(new Authenticate(httpServerRequest)) .flatMap(new ValidateActionAuthenticated(httpServerRequest)) .map(aVoid -> fromSfsRequest(httpServerRequest)).map(new ValidateObjectPath()) .flatMap(new LoadAccountAndContainerAndObject(vertxContext)) .map(new ValidatePersistentObjectLatestVersionExists()) .flatMap(new ValidateActionObjectUpdate(httpServerRequest)) .map(new ValidateVersionNotDeleteMarker()).map(new ValidateVersionNotExpired()) .map(transientVersion -> { TransientVersion newVersion = transientVersion.getParent().newVersion(); return newVersion.merge(transientVersion.toJsonObject()); }).map(transientVersion -> { Calendar updateTs = getInstance(); transientVersion.setUpdateTs(updateTs); MultiMap headers = httpServerRequest.headers(); Metadata metadata = transientVersion.getMetadata(); metadata.clear(); metadata.withHttpHeaders(headers); String contentEncoding = headers.get(CONTENT_ENCODING); String contentType = headers.get(CONTENT_TYPE); String contentDisposition = headers.get(CONTENT_DISPOSITION); String deleteAt = headers.get(X_DELETE_AT); String deleteAfter = headers.get(X_DELETE_AFTER); if (!isNullOrEmpty(deleteAt)) { Long parsed = tryParse(deleteAt); transientVersion.setDeleteAt(parsed); } if (!isNullOrEmpty(deleteAfter)) { Long parsed = tryParse(deleteAfter); long now = checkedAdd(updateTs.getTimeInMillis(), parsed); transientVersion.setDeleteAt(now); } if (isNullOrEmpty(deleteAt) && isNullOrEmpty(deleteAfter)) { transientVersion.setDeleteAt(null); } transientVersion.setContentEncoding(contentEncoding); transientVersion.setContentType(contentType); transientVersion.setContentDisposition(contentDisposition); return transientVersion; }) .flatMap(transientVersion -> just((PersistentObject) transientVersion.getParent()) .flatMap(new PruneObject(httpServerRequest.vertxContext(), transientVersion)) .map(modified -> (PersistentObject) transientVersion.getParent())) .map(persistentObject -> persistentObject.setUpdateTs(getInstance())) .flatMap(new UpdateObject(httpServerRequest.vertxContext())).map(new ValidateOptimisticObjectLock()) .map(persistentObject -> persistentObject.getNewestVersion().get()) .doOnNext(version -> httpServerRequest.response().setStatusCode(HTTP_ACCEPTED)) .flatMap(version -> aVoid() .map(new WriteHttpServerResponseHeaders(httpServerRequest, version, emptyList()))) .single().subscribe(new ConnectionCloseTerminus<Void>(httpServerRequest) { @Override public void onNext(Void aVoid) { // do nothing here since the headers are set earlier } }); }
From source file:org.sfs.nodes.compute.object.PutObject.java
License:Apache License
@Override public void handle(final SfsRequest httpServerRequest) { httpServerRequest.pause();/*from www. j a va 2 s . c o m*/ VertxContext<Server> vertxContext = httpServerRequest.vertxContext(); final AtomicReference<FileBackedBuffer> tempFileRef = new AtomicReference<>(); Observable<Void> o = aVoid().flatMap(new Authenticate(httpServerRequest)) .flatMap(new ValidateActionAuthenticated(httpServerRequest)).map(aVoid -> httpServerRequest) .map(new ValidateParamNotExists(MULTIPART_MANIFEST)).map(new ValidateHeaderNotExists(X_COPY_FROM)) .map(new ValidateHeaderIsBase16LowercaseEncoded(ETAG)) .map(new ValidateHeaderIsBase64Encoded(CONTENT_MD5)) .map(new ValidateHeaderIsBase64Encoded(X_CONTENT_SHA512)).map(new ValidateTtl()).map(new ToVoid<>()) .flatMap(aVoid -> { ObjectPath objectPath = fromSfsRequest(httpServerRequest); return just(objectPath).map(new ValidateObjectPath()) .flatMap(new LoadAccountAndContainer(vertxContext)) .flatMap(persistentContainer -> just(objectPath.objectPath().get()) .flatMap(new LoadObject(vertxContext, persistentContainer)) .map(oPersistentObject -> { if (oPersistentObject.isPresent()) { PersistentObject persistentObject = oPersistentObject.get(); return persistentObject.newVersion().merge(httpServerRequest); } else { final TransientObject transientObject = new TransientObject( persistentContainer, objectPath.objectPath().get()) .setOwnerGuid(httpServerRequest.getUserAndRole() .getUser().getId()); return transientObject.newVersion().merge(httpServerRequest); } })); }).flatMap(new ValidateActionObjectCreate(httpServerRequest)) // do this step after we validate that we can create an object // so we don't consume a stream if we won't be able to create an object .flatMap(transientVersion -> { final MultiMap headers = httpServerRequest.headers(); String contentLength = headers.get(CONTENT_LENGTH); if (contentLength == null) { Path tempDirectory = httpServerRequest.vertxContext().verticle().sfsFileSystem() .tmpDirectory(); FileBackedBuffer fileBackedBuffer = new FileBackedBuffer(vertxContext.vertx(), 8192, true, tempDirectory); tempFileRef.set(fileBackedBuffer); LimitedReadStream readStream = new LimitedReadStream(httpServerRequest, MAX_SEGMENT_SIZE); CountingReadStream countingWriteStream = new CountingReadStream(readStream); return pump(countingWriteStream, fileBackedBuffer).map(aVoid -> { transientVersion.setContentLength(countingWriteStream.count()); httpServerRequest.headers().set(CONTENT_LENGTH, valueOf(countingWriteStream.count())); return transientVersion; }); } else { return just(transientVersion); } }) .flatMap(transientVersion -> just(httpServerRequest) .map(new ValidateHeaderBetweenLong(CONTENT_LENGTH, 0L, MAX_SEGMENT_SIZE)) .map(httpServerRequest1 -> transientVersion)) .flatMap(transientVersion -> { long length = transientVersion.getContentLength().get(); if (length > 0) { return aVoid().flatMap(aVoid -> { if (tempFileRef.get() != null) { FileBackedBuffer fileBackedBuffer = tempFileRef.get(); return Observable.just(transientVersion).flatMap(new WriteNewSegment( httpServerRequest.vertxContext(), fileBackedBuffer.readStream())); } else { return Observable.just(transientVersion).flatMap( new WriteNewSegment(httpServerRequest.vertxContext(), httpServerRequest)); } }).map(transientSegment -> { validateSegment(transientSegment); return transientSegment; }).map(transientSegment -> transientSegment.getParent()); } else { return just(transientVersion); } }).flatMap(transientVersion -> { final long versionId = transientVersion.getId(); XObject xObject = transientVersion.getParent(); if (xObject instanceof PersistentObject) { return just((PersistentObject) xObject) .map(persistentObject -> persistentObject.setUpdateTs(getInstance())) .flatMap(new UpdateObject(httpServerRequest.vertxContext())) .map(new ValidateOptimisticObjectLock()) .map(persistentObject -> persistentObject.getVersion(versionId).get()); } else { return just((TransientObject) xObject).doOnNext(transientObject -> { Optional<TransientServiceDef> currentMaintainerNode = vertxContext.verticle() .getClusterInfo().getCurrentMaintainerNode(); if (currentMaintainerNode.isPresent()) { transientObject.setNodeId(currentMaintainerNode.get().getId()); } }).flatMap(new PersistObject(httpServerRequest.vertxContext())) .map(new ValidateOptimisticObjectLock()) .map(persistentObject -> persistentObject.getVersion(versionId).get()); } }).flatMap(transientVersion -> { long length = transientVersion.getContentLength().get(); if (length > 0) { TransientSegment latestSegment = transientVersion.getNewestSegment().get(); return just(latestSegment).flatMap(new AcknowledgeSegment(httpServerRequest.vertxContext())) .map(modified -> latestSegment) .flatMap(new VerifySegmentQuick(httpServerRequest.vertxContext())).map(verified -> { checkState(verified, "Segment verification failed"); return (Void) null; }).map(aVoid -> latestSegment.getParent()); } else { return just(transientVersion); } }).flatMap(transientVersion -> { PersistentObject persistentObject = (PersistentObject) transientVersion.getParent(); return just(persistentObject) .flatMap(new PruneObject(httpServerRequest.vertxContext(), transientVersion)) .map(modified -> persistentObject.getVersion(transientVersion.getId()).get()); }).flatMap(transientVersion -> { final long versionId = transientVersion.getId(); XObject xObject = transientVersion.getParent(); return just((PersistentObject) xObject) .map(persistentObject -> persistentObject.setUpdateTs(getInstance())) .flatMap(new UpdateObject(httpServerRequest.vertxContext())) .map(new ValidateOptimisticObjectLock()) .map(persistentObject -> persistentObject.getVersion(versionId).get()); }).doOnNext(version -> httpServerRequest.response().setStatusCode(HTTP_CREATED)) .flatMap(version -> aVoid() .map(new WriteHttpServerResponseHeaders(httpServerRequest, version, emptyList()))) .single(); using(() -> null, aVoid -> o, aVoid -> cleanupTmp(tempFileRef).subscribe(new NullSubscriber<>())) .subscribe(new ConnectionCloseTerminus<Void>(httpServerRequest) { @Override public void onNext(Void aVoid) { // do nothing here since the headers are set earlier } } ); }
From source file:org.sfs.nodes.compute.object.VerifyRepairObjectExecute.java
License:Apache License
@Override public void handle(final SfsRequest httpServerRequest) { VertxContext<Server> vertxContext = httpServerRequest.vertxContext(); Defer.aVoid().flatMap(new Authenticate(httpServerRequest)) .flatMap(new ValidateActionAdminOrSystem(httpServerRequest)).map(aVoid -> httpServerRequest) .map(new ValidateHeaderBetweenLong(Jobs.Parameters.TIMEOUT, 100, Long.MAX_VALUE)) .map(new ToVoid<>()).map(aVoid -> ObjectPath.fromSfsRequest(httpServerRequest)) .map(new ValidateObjectPath()).flatMap(objectPath -> { ClusterInfo clusterInfo = vertxContext.verticle().getClusterInfo(); Nodes nodes = vertxContext.verticle().nodes(); MultiMap headers = httpServerRequest.headers(); long timeout = headers.contains(Jobs.Parameters.TIMEOUT) ? Long.parseLong(headers.get(Jobs.Parameters.TIMEOUT)) : 100;/*w ww . ja va 2s .c om*/ String unparsedForceRemoveVolumes = headers.contains(Jobs.Parameters.FORCE_REMOVE_VOLUMES) ? headers.get(Jobs.Parameters.FORCE_REMOVE_VOLUMES) : null; MultiMap params = MultiMap.caseInsensitiveMultiMap(); if (unparsedForceRemoveVolumes != null) { params.add(Jobs.Parameters.FORCE_REMOVE_VOLUMES, unparsedForceRemoveVolumes); } params.set(Jobs.Parameters.OBJECT_ID, objectPath.objectPath().get()); TransientServiceDef transientServiceDef = clusterInfo.getCurrentMasterNode(); MasterNode masterNode = nodes.remoteMasterNode(vertxContext, transientServiceDef); httpServerRequest.startProxyKeepAlive(); return masterNode.executeJob(Jobs.ID.VERIFY_REPAIR_OBJECT, params, timeout, TimeUnit.MILLISECONDS); }).single().subscribe(new ConnectionCloseTerminus<Void>(httpServerRequest) { @Override public void onNext(Void aVoid) { JsonObject responseJson = new JsonObject().put("code", HTTP_OK).put("message", "Success"); httpServerRequest.response().write(responseJson.encode(), StandardCharsets.UTF_8.toString()) .write(DELIMITER_BUFFER); } }); }
From source file:org.sfs.nodes.compute.object.VerifyRepairObjectStop.java
License:Apache License
@Override public void handle(final SfsRequest httpServerRequest) { VertxContext<Server> vertxContext = httpServerRequest.vertxContext(); Defer.aVoid().flatMap(new Authenticate(httpServerRequest)) .flatMap(new ValidateActionAdminOrSystem(httpServerRequest)).map(aVoid -> httpServerRequest) .map(new ValidateHeaderExists(Jobs.Parameters.TIMEOUT)) .map(new ValidateHeaderBetweenLong(Jobs.Parameters.TIMEOUT, 100, Long.MAX_VALUE)) .map(new ToVoid<>()).map(aVoid -> ObjectPath.fromSfsRequest(httpServerRequest)) .map(new ValidateObjectPath()).flatMap(objectPath -> { ClusterInfo clusterInfo = vertxContext.verticle().getClusterInfo(); Nodes nodes = vertxContext.verticle().nodes(); MultiMap headers = httpServerRequest.headers(); long timeout = headers.contains(Jobs.Parameters.TIMEOUT) ? Long.parseLong(headers.get(Jobs.Parameters.TIMEOUT)) : -1;// w w w. jav a 2 s .c o m TransientServiceDef transientServiceDef = clusterInfo.getCurrentMasterNode(); MasterNode masterNode = nodes.remoteMasterNode(vertxContext, transientServiceDef); httpServerRequest.startProxyKeepAlive(); return masterNode.stopJob(Jobs.ID.VERIFY_REPAIR_OBJECT, timeout, TimeUnit.MILLISECONDS); }).single().subscribe(new ConnectionCloseTerminus<Void>(httpServerRequest) { @Override public void onNext(Void aVoid) { JsonObject responseJson = new JsonObject().put("code", HTTP_OK).put("message", "Success"); httpServerRequest.response().write(responseJson.encode(), StandardCharsets.UTF_8.toString()) .write(DELIMITER_BUFFER); } }); }
From source file:org.sfs.nodes.compute.object.VerifyRepairObjectWait.java
License:Apache License
@Override public void handle(final SfsRequest httpServerRequest) { VertxContext<Server> vertxContext = httpServerRequest.vertxContext(); Defer.aVoid().flatMap(new Authenticate(httpServerRequest)) .flatMap(new ValidateActionAdminOrSystem(httpServerRequest)).map(aVoid -> httpServerRequest) .map(new ValidateHeaderExists(Jobs.Parameters.TIMEOUT)) .map(new ValidateHeaderBetweenLong(Jobs.Parameters.TIMEOUT, 100, Long.MAX_VALUE)) .map(new ToVoid<>()).map(aVoid -> ObjectPath.fromSfsRequest(httpServerRequest)) .map(new ValidateObjectPath()).flatMap(objectPath -> { ClusterInfo clusterInfo = vertxContext.verticle().getClusterInfo(); Nodes nodes = vertxContext.verticle().nodes(); MultiMap headers = httpServerRequest.headers(); long timeout = headers.contains(Jobs.Parameters.TIMEOUT) ? Long.parseLong(headers.get(Jobs.Parameters.TIMEOUT)) : -1;/* ww w.j a v a 2 s.co m*/ TransientServiceDef transientServiceDef = clusterInfo.getCurrentMasterNode(); MasterNode masterNode = nodes.remoteMasterNode(vertxContext, transientServiceDef); httpServerRequest.startProxyKeepAlive(); return masterNode.waitForJob(Jobs.ID.VERIFY_REPAIR_OBJECT, timeout, TimeUnit.MILLISECONDS); }).single().subscribe(new ConnectionCloseTerminus<Void>(httpServerRequest) { @Override public void onNext(Void aVoid) { JsonObject responseJson = new JsonObject().put("code", HTTP_OK).put("message", "Success"); httpServerRequest.response().write(responseJson.encode(), StandardCharsets.UTF_8.toString()) .write(DELIMITER_BUFFER); } }); }
From source file:org.sfs.nodes.data.AckBlob.java
License:Apache License
@Override public void handle(final SfsRequest httpServerRequest) { VertxContext<Server> vertxContext = httpServerRequest.vertxContext(); aVoid().flatMap(new Authenticate(httpServerRequest)) .flatMap(new ValidateActionAdminOrSystem(httpServerRequest)) .map(new ValidateNodeIsDataNode<>(vertxContext)).map(aVoid -> httpServerRequest) .map(new ValidateParamExists(VOLUME)).map(new ValidateParamExists(POSITION)) .map(new ValidateParamBetweenLong(POSITION, 0, MAX_VALUE)).flatMap(httpServerRequest1 -> { MultiMap headers = httpServerRequest1.params(); String volumeId = headers.get(VOLUME); long position = parseLong(headers.get(POSITION)); final Volume volume = vertxContext.verticle().nodes().volumeManager().get(volumeId).get(); return volume.acknowledge(httpServerRequest1.vertxContext().vertx(), position); }).map(headerBlobOptional -> new Holder2<>(httpServerRequest, headerBlobOptional)) .map(new WriteHeaderBlobAsHttpResponseHeaders<>()).single() .onErrorResumeNext(new HandleServerToBusy<>()) .subscribe(new Terminus<Holder2<SfsRequest, Optional<HeaderBlob>>>(httpServerRequest) { @Override/*w w w . j a v a 2s. co m*/ public void onNext(Holder2<SfsRequest, Optional<HeaderBlob>> holder) { Optional<HeaderBlob> oBlob = holder.value1(); if (oBlob.isPresent()) { holder.value0().response().setStatusCode(HTTP_NO_CONTENT); } else { holder.value0().response().setStatusCode(HTTP_NOT_MODIFIED); } } }); }