/** * Check that all parameters to update the pool are presents and valid. * * @param updatePoolDTO * @throws URISyntaxException */ private void checkUpdatePoolParameters(UpdatePoolDTO updatePoolDTO) throws BadParameterException, URISyntaxException { checkPoolParameters( updatePoolDTO.getHost(), updatePoolDTO.getUsername(), updatePoolDTO.getAppendWorkerNames(), updatePoolDTO.getPassword(), updatePoolDTO.getUseWorkerPassword()); }
/** * @param poolToUpdate * @throws URISyntaxException * @throws PoolStartException * @throws SocketException * @throws BadParameterException */ public void updatePool(UpdatePoolDTO poolToUpdate) throws NotFoundException, SocketException, PoolStartException, URISyntaxException, BadParameterException { boolean hasBeenStopped = false; Pool pool = getPool(poolToUpdate.getName()); if (pool == null) { throw new NotFoundException( "The pool with name " + poolToUpdate.getName() + " has not been found."); } checkUpdatePoolParameters(poolToUpdate); if (poolToUpdate.getHost() != null && !poolToUpdate.getHost().equals(pool.getHost())) { if (!hasBeenStopped) { pool.stopPool("Pool updated and needed to restart."); } hasBeenStopped = true; pool.setHost(poolToUpdate.getHost()); } if (poolToUpdate.getIsExtranonceSubscribeEnabled() != null && !poolToUpdate .getIsExtranonceSubscribeEnabled() .equals(pool.getIsExtranonceSubscribeEnabled())) { if (!hasBeenStopped) { pool.stopPool("Pool updated and needed to restart."); } hasBeenStopped = true; pool.setIsExtranonceSubscribeEnabled(poolToUpdate.getIsExtranonceSubscribeEnabled()); } if (poolToUpdate.getPassword() != null && !poolToUpdate.getPassword().equals(pool.getPassword())) { if (!hasBeenStopped) { pool.stopPool("Pool updated and needed to restart."); } hasBeenStopped = true; pool.setPassword(poolToUpdate.getPassword()); } if (poolToUpdate.getUsername() != null && !poolToUpdate.getUsername().equals(pool.getUsername())) { if (!hasBeenStopped) { pool.stopPool("Pool updated and needed to restart."); } hasBeenStopped = true; pool.setUsername(poolToUpdate.getUsername()); } if (poolToUpdate.getPriority() != null && !poolToUpdate.getPriority().equals(pool.getPriority())) { if (poolToUpdate.getPriority() < 0) { throw new BadParameterException("The priority has to be higher or equal to 0"); } pool.setPriority(poolToUpdate.getPriority()); if (poolSwitchingStrategyManager != null) { poolSwitchingStrategyManager.onPoolUpdated(pool); } } if (poolToUpdate.getWeight() != null && !poolToUpdate.getWeight().equals(pool.getWeight())) { if (poolToUpdate.getWeight() < 0) { throw new BadParameterException("The weight has to be higher or equal to 0"); } pool.setWeight(poolToUpdate.getWeight()); if (poolSwitchingStrategyManager != null) { poolSwitchingStrategyManager.onPoolUpdated(pool); } } if (poolToUpdate.getAppendWorkerNames() != null && !poolToUpdate.getAppendWorkerNames().equals(pool.isAppendWorkerNames())) { if (!hasBeenStopped) { pool.stopPool("Pool updated and needed to restart."); } hasBeenStopped = true; pool.setAppendWorkerNames(poolToUpdate.getAppendWorkerNames()); } if (poolToUpdate.getWorkerNamesSeparator() != null && !poolToUpdate.getWorkerNamesSeparator().equals(pool.getWorkerSeparator())) { pool.setWorkerSeparator(poolToUpdate.getWorkerNamesSeparator()); } if (poolToUpdate.getUseWorkerPassword() != null && !poolToUpdate.getUseWorkerPassword().equals(pool.isUseWorkerPassword())) { pool.setUseWorkerPassword(poolToUpdate.getUseWorkerPassword()); } // If the pool has been stopped since some options needs a restart, // restart the pool. if (hasBeenStopped) { pool.startPool(this); } }