All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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