def lock()

in protocol/src/main/scala/org/jetbrains/plugins/scala/indices/protocol/sbt/Locking.scala [27:43]


  def lock(lockFile: Path)(log: Logger = noopLogger): FileLock = {
    if (Files.exists(lockFile.getParent) || mkdirs(lockFile.getParent)) {
      val raf = new RandomAccessFile(lockFile.toFile, "rw")

      try {
        log(s"Acquiring lock on file $lockFile ...")
        val lock = raf.getChannel.lock()
        locks.put(lockFile, LockData(raf, lock))
        lock
      }
      catch {
        case e: IOException =>
          raf.close()
          throw e
      }
    } else throw new RuntimeException("Unable to create lock file.")
  }