Search in sources :

Example 1 with CoreApiException

use of com.radixdlt.api.core.model.CoreApiException in project radixdlt by radixdlt.

the class NodeApiClient method getUnstakes.

public List<ResourceAmount> getUnstakes(REAddr addr, ECPublicKey validatorKey) {
    var networkIdentifier = new NetworkIdentifier().network("localnet");
    var unstakingDelayEpochLength = unstakingDelayEpochLength();
    var unstakes = new ArrayList<ResourceAmount>();
    try {
        var statusResponse = engineStatusHandler.handleRequest(new EngineStatusRequest().networkIdentifier(networkIdentifier));
        var curEpoch = statusResponse.getEngineStateIdentifier().getEpoch();
        var maxEpoch = curEpoch + unstakingDelayEpochLength + 1;
        for (long epochUnstake = curEpoch; epochUnstake <= maxEpoch; epochUnstake++) {
            var response = entityHandler.handleRequest(new EntityRequest().networkIdentifier(networkIdentifier).entityIdentifier(coreModelMapper.entityIdentifierExitingStake(addr, validatorKey, epochUnstake)));
            unstakes.addAll(response.getBalances());
        }
    } catch (CoreApiException e) {
        throw new IllegalStateException(e);
    }
    return unstakes;
}
Also used : EntityRequest(com.radixdlt.api.core.openapitools.model.EntityRequest) CoreApiException(com.radixdlt.api.core.model.CoreApiException) EngineStatusRequest(com.radixdlt.api.core.openapitools.model.EngineStatusRequest) NetworkIdentifier(com.radixdlt.api.core.openapitools.model.NetworkIdentifier) ArrayList(java.util.ArrayList)

Example 2 with CoreApiException

use of com.radixdlt.api.core.model.CoreApiException in project radixdlt by radixdlt.

the class EntityHandler method handleRequest.

@Override
public EntityResponse handleRequest(EntityRequest request) throws CoreApiException {
    modelMapper.verifyNetwork(request.getNetworkIdentifier());
    var entity = modelMapper.entity(request.getEntityIdentifier());
    var keyQueries = entity.getKeyQueries();
    var resourceQueries = entity.getResourceQueries();
    // This must be read atomically
    return radixEngine.read(reader -> {
        Function<REAddr, String> addressToSymbol = addr -> {
            var mapKey = SystemMapKey.ofResourceData(addr, SubstateTypeId.TOKEN_RESOURCE_METADATA.id());
            var substate = reader.get(mapKey).orElseThrow();
            var tokenResource = (TokenResourceMetadata) substate;
            return tokenResource.symbol();
        };
        var proof = reader.getMetadata().getProof();
        var response = new EntityResponse().stateIdentifier(modelMapper.stateIdentifier(proof.getAccumulatorState()));
        for (var resourceQuery : resourceQueries) {
            resourceQuery.fold((index, bucketPredicate) -> reader.reduceResources(index, ResourceInBucket::bucket, bucketPredicate).entrySet().stream().map(e -> modelMapper.resourceOperation(e.getKey(), e.getValue(), addressToSymbol)), systemMapKey -> reader.get(systemMapKey).map(ResourceInBucket.class::cast).stream().map(b -> modelMapper.resourceOperation(b, true, addressToSymbol))).forEach(response::addBalancesItem);
        }
        for (var keyQuery : keyQueries) {
            var substate = keyQuery.get(reader);
            substate.flatMap(modelMapper::dataObject).ifPresent(response::addDataObjectsItem);
        }
        return response;
    });
}
Also used : SubstateTypeId(com.radixdlt.atom.SubstateTypeId) TokenResourceMetadata(com.radixdlt.application.tokens.state.TokenResourceMetadata) CoreApiException(com.radixdlt.api.core.model.CoreApiException) LedgerAndBFTProof(com.radixdlt.statecomputer.LedgerAndBFTProof) Inject(com.google.inject.Inject) RadixEngine(com.radixdlt.engine.RadixEngine) REAddr(com.radixdlt.identifiers.REAddr) Function(java.util.function.Function) ResourceInBucket(com.radixdlt.application.tokens.ResourceInBucket) CoreJsonRpcHandler(com.radixdlt.api.core.CoreJsonRpcHandler) SystemMapKey(com.radixdlt.constraintmachine.SystemMapKey) EntityResponse(com.radixdlt.api.core.openapitools.model.EntityResponse) CoreModelMapper(com.radixdlt.api.core.model.CoreModelMapper) EntityRequest(com.radixdlt.api.core.openapitools.model.EntityRequest) ResourceInBucket(com.radixdlt.application.tokens.ResourceInBucket) EntityResponse(com.radixdlt.api.core.openapitools.model.EntityResponse) REAddr(com.radixdlt.identifiers.REAddr)

Aggregations

CoreApiException (com.radixdlt.api.core.model.CoreApiException)2 EntityRequest (com.radixdlt.api.core.openapitools.model.EntityRequest)2 Inject (com.google.inject.Inject)1 CoreJsonRpcHandler (com.radixdlt.api.core.CoreJsonRpcHandler)1 CoreModelMapper (com.radixdlt.api.core.model.CoreModelMapper)1 EngineStatusRequest (com.radixdlt.api.core.openapitools.model.EngineStatusRequest)1 EntityResponse (com.radixdlt.api.core.openapitools.model.EntityResponse)1 NetworkIdentifier (com.radixdlt.api.core.openapitools.model.NetworkIdentifier)1 ResourceInBucket (com.radixdlt.application.tokens.ResourceInBucket)1 TokenResourceMetadata (com.radixdlt.application.tokens.state.TokenResourceMetadata)1 SubstateTypeId (com.radixdlt.atom.SubstateTypeId)1 SystemMapKey (com.radixdlt.constraintmachine.SystemMapKey)1 RadixEngine (com.radixdlt.engine.RadixEngine)1 REAddr (com.radixdlt.identifiers.REAddr)1 LedgerAndBFTProof (com.radixdlt.statecomputer.LedgerAndBFTProof)1 ArrayList (java.util.ArrayList)1 Function (java.util.function.Function)1