This commit is contained in:
Him188 2020-01-17 23:29:22 +08:00
parent ccf8545646
commit 1dee5fe075

View File

@ -1,9 +1,7 @@
package net.mamoe.mirai.api.http package net.mamoe.mirai.api.http
import kotlinx.coroutines.CompletableJob
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.SupervisorJob import kotlinx.coroutines.SupervisorJob
import java.lang.StringBuilder
import kotlin.coroutines.CoroutineContext import kotlin.coroutines.CoroutineContext
import kotlin.coroutines.EmptyCoroutineContext import kotlin.coroutines.EmptyCoroutineContext
@ -37,33 +35,32 @@ object SessionManager {
} }
/** /**
* @author NaturalHG * @author NaturalHG
* 这个用于管理不同Client与Mirai HTTP的会话 * 这个用于管理不同Client与Mirai HTTP的会话
*/ */
abstract class Session internal constructor( abstract class Session internal constructor(
coroutineContext: CoroutineContext
) : CoroutineScope { ) : CoroutineScope {
private val sessionJob = SupervisorJob() private val supervisorJob = SupervisorJob()
final override val coroutineContext: CoroutineContext = supervisorJob + coroutineContext
val key: String = generateSessionKey() val key: String = generateSessionKey()
internal fun close() { internal fun close() {
sessionJob.cancel() supervisorJob.cancel()
} }
} }
/** /**
* 任何新链接建立后分配一个[TempSession] * 任何新链接建立后分配一个[TempSession]
* *
* TempSession在建立180s内没有转变为[AuthedSession]应被清除 * TempSession在建立180s内没有转变为[AuthedSession]应被清除
*/ */
class TempSession internal constructor(override val coroutineContext: CoroutineContext) : Session() { class TempSession internal constructor(coroutineContext: CoroutineContext) : Session(coroutineContext) {
} }
@ -71,7 +68,7 @@ class TempSession internal constructor(override val coroutineContext: CoroutineC
* 任何[TempSession]认证后转化为一个[AuthedSession] * 任何[TempSession]认证后转化为一个[AuthedSession]
* 在这一步[AuthedSession]应该已经有assigned的bot * 在这一步[AuthedSession]应该已经有assigned的bot
*/ */
class AuthedSession internal constructor(botNumber:Int, override val coroutineContext: CoroutineContext):Session(){ class AuthedSession internal constructor(botNumber: Int, coroutineContext: CoroutineContext) : Session(coroutineContext) {
} }