Search in sources :

Example 21 with Result

use of io.nuls.kernel.model.Result in project nuls by nuls-io.

the class LevelDBManager method destroyArea.

public static Result destroyArea(String areaName) {
    if (!baseCheckArea(areaName)) {
        return Result.getFailed(DBErrorCode.DB_AREA_NOT_EXIST);
    }
    if (StringUtils.isBlank(dataPath) || !checkPathLegal(areaName)) {
        return Result.getFailed(DBErrorCode.DB_AREA_CREATE_PATH_ERROR);
    }
    Result result;
    try {
        DB db = AREAS.remove(areaName);
        db.close();
        File dir = new File(dataPath + File.separator + areaName);
        if (!dir.exists()) {
            return Result.getFailed(DBErrorCode.DB_AREA_NOT_EXIST);
        }
        String filePath = dataPath + File.separator + areaName + File.separator + BASE_DB_NAME;
        destroyDB(filePath);
        AREAS_COMPARATOR.remove(areaName);
        delete(BASE_AREA_NAME, bytes(areaName + "-comparator"));
        delete(BASE_AREA_NAME, bytes(areaName + "-cacheSize"));
        result = Result.getSuccess();
    } catch (Exception e) {
        Log.error("error destroy area: " + areaName, e);
        result = Result.getFailed(DBErrorCode.DB_AREA_DESTROY_ERROR);
    }
    return result;
}
Also used : File(java.io.File) DB(org.iq80.leveldb.DB) IOException(java.io.IOException) UnsupportedEncodingException(java.io.UnsupportedEncodingException) Result(io.nuls.kernel.model.Result)

Example 22 with Result

use of io.nuls.kernel.model.Result in project nuls by nuls-io.

the class LevelDBManager method createArea.

public static Result createArea(String areaName, Long cacheSize, Comparator<byte[]> comparator) {
    lock.lock();
    try {
        if (StringUtils.isBlank(areaName)) {
            return Result.getFailed(KernelErrorCode.NULL_PARAMETER);
        }
        if (AREAS.containsKey(areaName)) {
            return Result.getFailed(DBErrorCode.DB_AREA_EXIST);
        }
        // prevent too many areas
        if (AREAS.size() > (max - 1)) {
            return Result.getFailed(DBErrorCode.DB_AREA_CREATE_EXCEED_LIMIT);
        }
        if (StringUtils.isBlank(dataPath) || !checkPathLegal(areaName)) {
            return Result.getFailed(DBErrorCode.DB_AREA_CREATE_PATH_ERROR);
        }
        Result result;
        try {
            File dir = new File(dataPath + File.separator + areaName);
            if (!dir.exists()) {
                dir.mkdir();
            }
            String filePath = dataPath + File.separator + areaName + File.separator + BASE_DB_NAME;
            DB db = openDB(filePath, true, cacheSize, comparator);
            AREAS.put(areaName, db);
            result = Result.getSuccess();
        } catch (Exception e) {
            Log.error("error create area: " + areaName, e);
            result = Result.getFailed(DBErrorCode.DB_AREA_CREATE_ERROR);
        }
        return result;
    } finally {
        lock.unlock();
    }
}
Also used : File(java.io.File) DB(org.iq80.leveldb.DB) IOException(java.io.IOException) UnsupportedEncodingException(java.io.UnsupportedEncodingException) Result(io.nuls.kernel.model.Result)

Example 23 with Result

use of io.nuls.kernel.model.Result in project nuls by nuls-io.

the class UtxoResource method getUtxoByAddressAndAmount.

@GET
@Path("/amount/{address}/{amount}")
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "根据address和amount查询UTXO")
@ApiResponses(value = { @ApiResponse(code = 200, message = "success", response = AccountUtxoDto.class) })
public RpcClientResult getUtxoByAddressAndAmount(@ApiParam(name = "address", value = "地址", required = true) @PathParam("address") String address, @ApiParam(name = "amount", value = "金额", required = true) @PathParam("amount") Long amount) {
    if (StringUtils.isBlank(address) || amount == null) {
        return Result.getFailed(LedgerErrorCode.NULL_PARAMETER).toRpcClientResult();
    }
    if (!AddressTool.validAddress(address)) {
        return Result.getFailed(LedgerErrorCode.PARAMETER_ERROR).toRpcClientResult();
    }
    Result result = null;
    try {
        List<Coin> coinList = getAllUtxoByAddress(address);
        Na amountNa = Na.valueOf(amount.longValue());
        AccountUtxoDto accountUtxoDto = new AccountUtxoDto();
        List<UtxoDto> list = new LinkedList<>();
        Na values = Na.ZERO;
        for (Coin coin : coinList) {
            if (!coin.usable()) {
                continue;
            }
            if (coin.getNa().equals(Na.ZERO)) {
                continue;
            }
            list.add(new UtxoDto(coin));
            values = values.add(coin.getNa());
            if (values.isGreaterOrEquals(amountNa)) {
                break;
            }
        }
        accountUtxoDto.setUtxoDtoList(list);
        result = Result.getSuccess().setData(accountUtxoDto);
        return result.toRpcClientResult();
    } catch (Exception e) {
        Log.error(e);
        result = Result.getFailed(LedgerErrorCode.SYS_UNKOWN_EXCEPTION);
        return result.toRpcClientResult();
    }
}
Also used : Coin(io.nuls.kernel.model.Coin) Na(io.nuls.kernel.model.Na) NulsException(io.nuls.kernel.exception.NulsException) RpcClientResult(io.nuls.kernel.model.RpcClientResult) Result(io.nuls.kernel.model.Result) Path(javax.ws.rs.Path) Produces(javax.ws.rs.Produces) GET(javax.ws.rs.GET)

Example 24 with Result

use of io.nuls.kernel.model.Result in project nuls by nuls-io.

the class LevelDBServiceImpl method createWriteBatch.

@Override
public BatchOperation createWriteBatch(String area) {
    if (StringUtils.isBlank(area)) {
        return null;
    }
    BatchOperationImpl batchOperation = new BatchOperationImpl(area);
    Result result = batchOperation.checkBatch();
    if (result.isFailed()) {
        Log.error("DB batch create error: " + result.getMsg());
        return null;
    }
    return batchOperation;
}
Also used : Result(io.nuls.kernel.model.Result)

Example 25 with Result

use of io.nuls.kernel.model.Result in project nuls by nuls-io.

the class AccountServiceImpl method saveMultiSigAccount.

/**
 * 导入一个跟本地地址相关的多签账户
 *
 * @param addressStr 多签地址
 * @param pubkeys    多签组成公钥列表
 * @param m          最小签名数
 * @return 是否成功
 */
@Override
public Result<Boolean> saveMultiSigAccount(String addressStr, List<String> pubkeys, int m) {
    Script redeemScript = ScriptBuilder.createNulsRedeemScript(m, pubkeys);
    Address address = new Address(NulsContext.getInstance().getDefaultChainId(), NulsContext.P2SH_ADDRESS_TYPE, SerializeUtils.sha256hash160(redeemScript.getProgram()));
    if (!AddressTool.getStringAddressByBytes(address.getAddressBytes()).equals(addressStr)) {
        return Result.getFailed(AccountErrorCode.ADDRESS_ERROR);
    }
    MultiSigAccount account = new MultiSigAccount();
    account.setAddress(address);
    account.setM(m);
    account.addPubkeys(pubkeys);
    Result result = null;
    try {
        result = this.multiSigAccountStorageService.saveAccount(account.getAddress(), account.serialize());
    } catch (IOException e) {
        Log.error(e);
        return Result.getFailed(KernelErrorCode.SERIALIZE_ERROR);
    }
    if (result.isFailed()) {
        return result;
    }
    return result.setData(addressStr);
}
Also used : Script(io.nuls.kernel.script.Script) Address(io.nuls.kernel.model.Address) IOException(java.io.IOException) Result(io.nuls.kernel.model.Result)

Aggregations

Result (io.nuls.kernel.model.Result)70 NulsException (io.nuls.kernel.exception.NulsException)16 IOException (java.io.IOException)15 NulsRuntimeException (io.nuls.kernel.exception.NulsRuntimeException)12 ValidateResult (io.nuls.kernel.validate.ValidateResult)11 AccountPo (io.nuls.account.storage.po.AccountPo)7 RpcClientResult (io.nuls.kernel.model.RpcClientResult)7 ArrayList (java.util.ArrayList)7 Account (io.nuls.account.model.Account)6 NulsDigestData (io.nuls.kernel.model.NulsDigestData)5 Test (org.junit.Test)5 CryptoException (io.nuls.core.tools.crypto.Exception.CryptoException)4 BatchOperation (io.nuls.db.service.BatchOperation)4 Address (io.nuls.kernel.model.Address)4 Block (io.nuls.kernel.model.Block)4 BlockHeader (io.nuls.kernel.model.BlockHeader)4 Transaction (io.nuls.kernel.model.Transaction)4 Node (io.nuls.network.model.Node)4 NotFound (io.nuls.protocol.model.NotFound)4 ApiOperation (io.swagger.annotations.ApiOperation)4