nirvana.support.services.ServiceWaitingInitSupport.scala Maven / Gradle / Ivy
package nirvana.support.services
import java.util.concurrent.{TimeUnit, CountDownLatch}
/**
* 等待服务完成
*/
trait ServiceWaitingInitSupport {
private val latch = new CountDownLatch(1)
/**
* 等待服务初始化
* @param time 等待时间
* @param unit 时间单元
* @return 是否初始化完成
*/
protected def awaitServiceInit(time: Long, unit: TimeUnit): Boolean = {
latch.await(time, unit)
}
/**
* 等待1分钟,服务初始化
*/
protected def awaitServiceInit() {
if (!latch.await(1, TimeUnit.MINUTES)) {
throw new NirvanaException("timeout to wating service init", NirvanaSupportErrorCode.WAITING_SERVER_INIT_TIMEOUT)
}
}
/**
* 判断服务是否已经初始化
*/
protected def throwExceptionIfServiceInitialized() = {
if (latch.getCount == 0) {
throw new NirvanaException("service already initialized", NirvanaSupportErrorCode.SERVICE_HAS_INITIALIZED)
}
}
/**
* 标记服务已经初始化完毕
*/
protected def serviceInitialized() {
latch.countDown()
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy