in core/src/main/kotlin/com/jetbrains/aspire/worker/AspireWorker.kt [107:143]
suspend fun start() {
if (!workerLifetimes.isTerminated) return
mutex.withLock {
if (!workerLifetimes.isTerminated) return
LOG.trace("Starting Aspire worker")
val workerLifetime = workerLifetimes.next()
val protocol = startAspireWorkerProtocol(workerLifetime.lifetime)
subscribeToAspireWorkerModel(protocol.aspireWorkerModel, workerLifetime.lifetime)
val token = UUID.randomUUID().toString()
val port = NetworkUtils.findFreePort(47100)
val certificate = calculateServerCertificate(workerLifetime)
val model = protocol.aspireWorkerModel
val aspireWorkerConfig = AspireWorkerConfig(
protocol.wire.serverPort,
token,
port,
certificate != null
)
LOG.trace { "Starting a new session host with launcher $aspireWorkerConfig" }
val aspireWorkerLauncher = AspireWorkerLauncher.getInstance(project)
aspireWorkerLauncher.launchWorker(aspireWorkerConfig, workerLifetime)
_workerState.value = AspireWorkerState.Active(
debugSessionToken = token,
debugSessionPort = port,
debugSessionServerCertificate = certificate,
model = model
)
}
}