Всем привет! Подскажите пожалуйста, можно ли сохра...
# russian
c
Всем привет! Подскажите пожалуйста, можно ли сохранить (серелизовать) корутину. Ну и позже восстановить (дисерелезовать). Я понимаю, что не все можно серелизовать, что корутина может захватить всякое разное в свой контекст. Темнимение мб есть способ какого-то доступа до переменных стека корутины, их чтение и установка, запуск корутины с уже заданным состоянием
Это было бы очень удобно при написании телеграм ботов, ответы которых обрабатываются на разных серверах Ну или описание BPMN процессов кодом
a
Пока нет, но ресерч в этом направлении идёт. Не в короткой перспективе, разумеется.
Пока можно руками сериализовать CoroutineContext и восстановить его потом
c
текущее состояние корутины (в том числе на каком шаге корутина) хранится там? если так, то это сильно упрощает
a
По сути вам надо сериализовать вот этот объект: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.coroutines/-continuation/
Может быть @Ilmir Usmanov [JB] подскажет куда копать. Я знаю, что были уже прототипы для этого дела, только не уверен, что где-то в открытом доступе есть.
c
Copy code
suspendCoroutine<Unit> {
            it.context.fold(EmptyCoroutineContext as CoroutineContext) { a, b ->
                println("-->$b")
                b
            }

            it.resume(Unit)
        }
показ только то что я доложил в контекст. пасиб, буду капать
e
Тут был где-то рабочий код https://github.com/Kotlin/kotlinx.coroutines/issues/76