func close()

in Sources/SourceKitLSP/Swift/CodeCompletionSession.swift [218:243]


  func close() {
    // Temporary back-reference to server to keep it alive during close().
    let server = self.server

    queue.async {
      switch self.state {
        case .closed:
          // Already closed, nothing to do.
          break
        case .opening(let group):
          group.notify(queue: self.queue) {
            switch self.state {
            case .closed, .opening(_):
              // Don't try again.
              break
            case .open:
              self._sendClose(server)
              self.state = .closed
            }
          }
        case .open:
          self._sendClose(server)
          self.state = .closed
      }
    }
  }