.class public final Landroidx/room/CoroutinesRoom$Companion; .super Ljava/lang/Object; .source "SourceFile" # annotations .annotation system Ldalvik/annotation/EnclosingClass; value = Landroidx/room/CoroutinesRoom; .end annotation .annotation system Ldalvik/annotation/InnerClass; accessFlags = 0x19 name = "Companion" .end annotation .annotation build Lkotlin/jvm/internal/SourceDebugExtension; value = { "SMAP\nCoroutinesRoom.kt\nKotlin\n*S Kotlin\n*F\n+ 1 CoroutinesRoom.kt\nandroidx/room/CoroutinesRoom$Companion\n+ 2 CancellableContinuation.kt\nkotlinx/coroutines/CancellableContinuationKt\n*L\n1#1,162:1\n314#2,11:163\n*S KotlinDebug\n*F\n+ 1 CoroutinesRoom.kt\nandroidx/room/CoroutinesRoom$Companion\n*L\n84#1:163,11\n*E\n" } .end annotation # direct methods .method private constructor ()V .locals 0 .line 47 invoke-direct {p0}, Ljava/lang/Object;->()V return-void .end method .method public synthetic constructor (Lkotlin/jvm/internal/DefaultConstructorMarker;)V .locals 0 .line 0 invoke-direct {p0}, Landroidx/room/CoroutinesRoom$Companion;->()V return-void .end method # virtual methods .method public final createFlow(Landroidx/room/RoomDatabase;Z[Ljava/lang/String;Ljava/util/concurrent/Callable;)Lkotlinx/coroutines/flow/Flow; .locals 7 .annotation system Ldalvik/annotation/Signature; value = { "(", "Landroidx/room/RoomDatabase;", "Z[", "Ljava/lang/String;", "Ljava/util/concurrent/Callable<", "TR;>;)", "Lkotlinx/coroutines/flow/Flow;" } .end annotation .line 110 new-instance v6, Landroidx/room/CoroutinesRoom$Companion$createFlow$1; const/4 v5, 0x0 move-object v0, v6 move v1, p2 move-object v2, p1 move-object v3, p3 move-object v4, p4 invoke-direct/range {v0 .. v5}, Landroidx/room/CoroutinesRoom$Companion$createFlow$1;->(ZLandroidx/room/RoomDatabase;[Ljava/lang/String;Ljava/util/concurrent/Callable;Lkotlin/coroutines/Continuation;)V invoke-static {v6}, Lkotlinx/coroutines/flow/FlowKt;->flow(Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; move-result-object p1 return-object p1 .end method .method public final execute(Landroidx/room/RoomDatabase;ZLandroid/os/CancellationSignal;Ljava/util/concurrent/Callable;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; .locals 7 .annotation system Ldalvik/annotation/Signature; value = { "(", "Landroidx/room/RoomDatabase;", "Z", "Landroid/os/CancellationSignal;", "Ljava/util/concurrent/Callable<", "TR;>;", "Lkotlin/coroutines/Continuation;", ")", "Ljava/lang/Object;" } .end annotation .line 76 invoke-virtual {p1}, Landroidx/room/RoomDatabase;->isOpenInternal()Z move-result v0 if-eqz v0, :cond_0 invoke-virtual {p1}, Landroidx/room/RoomDatabase;->inTransaction()Z move-result v0 if-eqz v0, :cond_0 .line 77 invoke-interface {p4}, Ljava/util/concurrent/Callable;->call()Ljava/lang/Object; move-result-object p1 return-object p1 .line 82 :cond_0 invoke-interface {p5}, Lkotlin/coroutines/Continuation;->getContext()Lkotlin/coroutines/CoroutineContext; move-result-object v0 sget-object v1, Landroidx/room/TransactionElement;->Key:Landroidx/room/TransactionElement$Key; invoke-interface {v0, v1}, Lkotlin/coroutines/CoroutineContext;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; move-result-object v0 check-cast v0, Landroidx/room/TransactionElement; if-eqz v0, :cond_2 invoke-virtual {v0}, Landroidx/room/TransactionElement;->getTransactionDispatcher$room_ktx_release()Lkotlin/coroutines/ContinuationInterceptor; move-result-object v0 if-nez v0, :cond_1 goto :goto_1 :cond_1 :goto_0 move-object v2, v0 goto :goto_3 :cond_2 :goto_1 if-eqz p2, :cond_3 .line 83 invoke-static {p1}, Landroidx/room/CoroutinesRoomKt;->getTransactionDispatcher(Landroidx/room/RoomDatabase;)Lkotlinx/coroutines/CoroutineDispatcher; move-result-object p1 :goto_2 move-object v0, p1 goto :goto_0 :cond_3 invoke-static {p1}, Landroidx/room/CoroutinesRoomKt;->getQueryDispatcher(Landroidx/room/RoomDatabase;)Lkotlinx/coroutines/CoroutineDispatcher; move-result-object p1 goto :goto_2 .line 315 :goto_3 new-instance p1, Lkotlinx/coroutines/CancellableContinuationImpl; invoke-static {p5}, Lkotlin/coroutines/intrinsics/IntrinsicsKt;->intercepted(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; move-result-object p2 const/4 v0, 0x1 invoke-direct {p1, p2, v0}, Lkotlinx/coroutines/CancellableContinuationImpl;->(Lkotlin/coroutines/Continuation;I)V .line 321 invoke-virtual {p1}, Lkotlinx/coroutines/CancellableContinuationImpl;->initCancellability()V .line 85 sget-object v1, Lkotlinx/coroutines/GlobalScope;->INSTANCE:Lkotlinx/coroutines/GlobalScope; const/4 v3, 0x0 new-instance v4, Landroidx/room/CoroutinesRoom$Companion$execute$4$job$1; const/4 p2, 0x0 invoke-direct {v4, p4, p1, p2}, Landroidx/room/CoroutinesRoom$Companion$execute$4$job$1;->(Ljava/util/concurrent/Callable;Lkotlinx/coroutines/CancellableContinuation;Lkotlin/coroutines/Continuation;)V const/4 v5, 0x2 const/4 v6, 0x0 invoke-static/range {v1 .. v6}, Lkotlinx/coroutines/BuildersKt;->launch$default(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/Job; move-result-object p2 .line 93 new-instance p4, Landroidx/room/CoroutinesRoom$Companion$execute$4$1; invoke-direct {p4, p3, p2}, Landroidx/room/CoroutinesRoom$Companion$execute$4$1;->(Landroid/os/CancellationSignal;Lkotlinx/coroutines/Job;)V invoke-interface {p1, p4}, Lkotlinx/coroutines/CancellableContinuation;->invokeOnCancellation(Lkotlin/jvm/functions/Function1;)V .line 323 invoke-virtual {p1}, Lkotlinx/coroutines/CancellableContinuationImpl;->getResult()Ljava/lang/Object; move-result-object p1 .line 314 invoke-static {}, Lkotlin/coroutines/intrinsics/IntrinsicsKt;->getCOROUTINE_SUSPENDED()Ljava/lang/Object; move-result-object p2 if-ne p1, p2, :cond_4 invoke-static {p5}, Lkotlin/coroutines/jvm/internal/DebugProbesKt;->probeCoroutineSuspended(Lkotlin/coroutines/Continuation;)V :cond_4 return-object p1 .end method .method public final execute(Landroidx/room/RoomDatabase;ZLjava/util/concurrent/Callable;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; .locals 2 .annotation system Ldalvik/annotation/Signature; value = { "(", "Landroidx/room/RoomDatabase;", "Z", "Ljava/util/concurrent/Callable<", "TR;>;", "Lkotlin/coroutines/Continuation;", ")", "Ljava/lang/Object;" } .end annotation .line 55 invoke-virtual {p1}, Landroidx/room/RoomDatabase;->isOpenInternal()Z move-result v0 if-eqz v0, :cond_0 invoke-virtual {p1}, Landroidx/room/RoomDatabase;->inTransaction()Z move-result v0 if-eqz v0, :cond_0 .line 56 invoke-interface {p3}, Ljava/util/concurrent/Callable;->call()Ljava/lang/Object; move-result-object p1 return-object p1 .line 61 :cond_0 invoke-interface {p4}, Lkotlin/coroutines/Continuation;->getContext()Lkotlin/coroutines/CoroutineContext; move-result-object v0 sget-object v1, Landroidx/room/TransactionElement;->Key:Landroidx/room/TransactionElement$Key; invoke-interface {v0, v1}, Lkotlin/coroutines/CoroutineContext;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; move-result-object v0 check-cast v0, Landroidx/room/TransactionElement; if-eqz v0, :cond_1 invoke-virtual {v0}, Landroidx/room/TransactionElement;->getTransactionDispatcher$room_ktx_release()Lkotlin/coroutines/ContinuationInterceptor; move-result-object v0 if-nez v0, :cond_3 :cond_1 if-eqz p2, :cond_2 .line 62 invoke-static {p1}, Landroidx/room/CoroutinesRoomKt;->getTransactionDispatcher(Landroidx/room/RoomDatabase;)Lkotlinx/coroutines/CoroutineDispatcher; move-result-object p1 :goto_0 move-object v0, p1 goto :goto_1 :cond_2 invoke-static {p1}, Landroidx/room/CoroutinesRoomKt;->getQueryDispatcher(Landroidx/room/RoomDatabase;)Lkotlinx/coroutines/CoroutineDispatcher; move-result-object p1 goto :goto_0 .line 63 :cond_3 :goto_1 new-instance p1, Landroidx/room/CoroutinesRoom$Companion$execute$2; const/4 p2, 0x0 invoke-direct {p1, p3, p2}, Landroidx/room/CoroutinesRoom$Companion$execute$2;->(Ljava/util/concurrent/Callable;Lkotlin/coroutines/Continuation;)V invoke-static {v0, p1, p4}, Lkotlinx/coroutines/BuildersKt;->withContext(Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; move-result-object p1 return-object p1 .end method