MiraiForum

    • 注册
    • 登录
    • 搜索
    • 热门
    • 最新
    • 未解决
    • 标签
    • 群组
    • 友情链接

    自动重载配置

    技术交流板块
    1
    1
    208
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • cssxsh
      cssxsh 最后由 编辑

      
          lateinit var service: WatchService
      
          override fun onEnable() {
              DebugSetting.reload()
      
              service = configFolderPath.fileSystem.newWatchService()
              configFolderPath.register(
                  service,
                  arrayOf(StandardWatchEventKinds.ENTRY_MODIFY),
                  SensitivityWatchEventModifier.LOW
              )
      
              launch {
                  while (isActive) {
                      val key = runInterruptible(Dispatchers.IO, service::take)
                      for (event in key.pollEvents()) {
                          val path = event.context() as? Path ?: continue
                          if (path.extension != "yml") continue
                          when (val name = path.nameWithoutExtension) {
                              DebugSetting.saveName -> launch {
                                  logger.info { "$name reload for ${event.kind().name()} - ${event.count()}." }
                                  try {
                                      DebugSetting.reload()
                                  } catch (cause: Throwable) {
                                      logger.warning({ "$name reload failure." }, cause)
                                  }
                              }
                              else -> Unit
                          }
                      }
                      key.reset()
                  }
              }
          }
          override fun onDisable() {
              service.close()
          }
      
      1 条回复 最后回复 回复 引用 1
      • 1 / 1
      • First post
        Last post
      Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact