Skip to content

Commit bd36ecf

Browse files
committed
Coroutine scope & dispatcher bindings for Metro
Provide default bindings for App Platform specific coroutine scopes and dispatchers. See #119
1 parent ae7c8f8 commit bd36ecf

File tree

12 files changed

+424
-0
lines changed

12 files changed

+424
-0
lines changed

buildSrc/src/main/kotlin/software/amazon/app/platform/gradle/buildsrc/BasePlugin.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ public open class BasePlugin : Plugin<Project> {
6464
"${APP_PLATFORM_GROUP}:kotlin-inject-impl" to ":kotlin-inject:impl",
6565
"${APP_PLATFORM_GROUP}:ksp-common-public" to ":ksp-common:public",
6666
"${APP_PLATFORM_GROUP}:metro-public" to ":metro:public",
67+
"${APP_PLATFORM_GROUP}:metro-impl" to ":metro:impl",
6768
"${APP_PLATFORM_GROUP}:metro-contribute-impl-code-generators" to
6869
":metro-extensions:contribute:impl-code-generators",
6970
"${APP_PLATFORM_GROUP}:presenter-public" to ":presenter:public",

gradle-plugin/src/main/kotlin/software/amazon/app/platform/gradle/AppPlatformPlugin.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ public open class AppPlatformPlugin : Plugin<Project> {
117117
"kotlin-inject-contribute-public",
118118
"kotlin-inject-impl",
119119
"kotlin-inject-public",
120+
"metro-impl",
120121
"metro-public",
121122
"presenter-molecule-impl",
122123
"presenter-molecule-public",

metro/impl/api/android/impl.api

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
public final class metro/hints/SoftwareAmazonAppPlatformPresenterMetroPresenterCoroutineScopeGraphAppScopeKt {
2+
public static final fun AppScope (Lsoftware/amazon/app/platform/presenter/metro/PresenterCoroutineScopeGraph;)V
3+
}
4+
5+
public final class metro/hints/SoftwareAmazonAppPlatformScopeCoroutineMetroAppScopeCoroutineScopeGraphAppScopeKt {
6+
public static final fun AppScope (Lsoftware/amazon/app/platform/scope/coroutine/metro/AppScopeCoroutineScopeGraph;)V
7+
}
8+
9+
public final class metro/hints/SoftwareAmazonAppPlatformScopeCoroutineMetroCoroutineDispatcherGraphAppScopeKt {
10+
public static final fun AppScope (Lsoftware/amazon/app/platform/scope/coroutine/metro/CoroutineDispatcherGraph;)V
11+
}
12+
13+
public abstract interface class software/amazon/app/platform/presenter/metro/PresenterCoroutineScopeGraph {
14+
public fun providePresenterCoroutineScope (Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/CoroutineDispatcher;)Lkotlinx/coroutines/CoroutineScope;
15+
}
16+
17+
public abstract interface class software/amazon/app/platform/presenter/metro/PresenterCoroutineScopeGraph$$$MetroContributionToAppScope : software/amazon/app/platform/presenter/metro/PresenterCoroutineScopeGraph {
18+
}
19+
20+
public final class software/amazon/app/platform/presenter/metro/PresenterCoroutineScopeGraph$$$MetroContributionToAppScope$DefaultImpls {
21+
public static fun providePresenterCoroutineScope (Lsoftware/amazon/app/platform/presenter/metro/PresenterCoroutineScopeGraph$$$MetroContributionToAppScope;Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/CoroutineDispatcher;)Lkotlinx/coroutines/CoroutineScope;
22+
}
23+
24+
public final class software/amazon/app/platform/presenter/metro/PresenterCoroutineScopeGraph$DefaultImpls {
25+
public static fun providePresenterCoroutineScope (Lsoftware/amazon/app/platform/presenter/metro/PresenterCoroutineScopeGraph;Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/CoroutineDispatcher;)Lkotlinx/coroutines/CoroutineScope;
26+
}
27+
28+
public final class software/amazon/app/platform/presenter/metro/PresenterCoroutineScopeGraph$ProvidePresenterCoroutineScope$$MetroFactory : dev/zacsweers/metro/internal/Factory {
29+
public static final field Companion Lsoftware/amazon/app/platform/presenter/metro/PresenterCoroutineScopeGraph$ProvidePresenterCoroutineScope$$MetroFactory$Companion;
30+
public synthetic fun <init> (Lsoftware/amazon/app/platform/presenter/metro/PresenterCoroutineScopeGraph;Ldev/zacsweers/metro/Provider;Ldev/zacsweers/metro/Provider;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
31+
public synthetic fun invoke ()Ljava/lang/Object;
32+
public final fun invoke ()Lkotlinx/coroutines/CoroutineScope;
33+
public final fun mirrorFunction (Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/CoroutineDispatcher;)Lkotlinx/coroutines/CoroutineScope;
34+
}
35+
36+
public final class software/amazon/app/platform/presenter/metro/PresenterCoroutineScopeGraph$ProvidePresenterCoroutineScope$$MetroFactory$Companion {
37+
public final fun create (Lsoftware/amazon/app/platform/presenter/metro/PresenterCoroutineScopeGraph;Ldev/zacsweers/metro/Provider;Ldev/zacsweers/metro/Provider;)Ldev/zacsweers/metro/internal/Factory;
38+
public final fun providePresenterCoroutineScope (Lsoftware/amazon/app/platform/presenter/metro/PresenterCoroutineScopeGraph;Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/CoroutineDispatcher;)Lkotlinx/coroutines/CoroutineScope;
39+
}
40+
41+
public abstract interface class software/amazon/app/platform/scope/coroutine/metro/AppScopeCoroutineScopeGraph {
42+
public fun provideAppCoroutineScope (Lsoftware/amazon/app/platform/scope/coroutine/CoroutineScopeScoped;)Lkotlinx/coroutines/CoroutineScope;
43+
public fun provideAppScopeCoroutineScopeScoped (Lkotlinx/coroutines/CoroutineDispatcher;)Lsoftware/amazon/app/platform/scope/coroutine/CoroutineScopeScoped;
44+
}
45+
46+
public abstract interface class software/amazon/app/platform/scope/coroutine/metro/AppScopeCoroutineScopeGraph$$$MetroContributionToAppScope : software/amazon/app/platform/scope/coroutine/metro/AppScopeCoroutineScopeGraph {
47+
}
48+
49+
public final class software/amazon/app/platform/scope/coroutine/metro/AppScopeCoroutineScopeGraph$$$MetroContributionToAppScope$DefaultImpls {
50+
public static fun provideAppCoroutineScope (Lsoftware/amazon/app/platform/scope/coroutine/metro/AppScopeCoroutineScopeGraph$$$MetroContributionToAppScope;Lsoftware/amazon/app/platform/scope/coroutine/CoroutineScopeScoped;)Lkotlinx/coroutines/CoroutineScope;
51+
public static fun provideAppScopeCoroutineScopeScoped (Lsoftware/amazon/app/platform/scope/coroutine/metro/AppScopeCoroutineScopeGraph$$$MetroContributionToAppScope;Lkotlinx/coroutines/CoroutineDispatcher;)Lsoftware/amazon/app/platform/scope/coroutine/CoroutineScopeScoped;
52+
}
53+
54+
public final class software/amazon/app/platform/scope/coroutine/metro/AppScopeCoroutineScopeGraph$DefaultImpls {
55+
public static fun provideAppCoroutineScope (Lsoftware/amazon/app/platform/scope/coroutine/metro/AppScopeCoroutineScopeGraph;Lsoftware/amazon/app/platform/scope/coroutine/CoroutineScopeScoped;)Lkotlinx/coroutines/CoroutineScope;
56+
public static fun provideAppScopeCoroutineScopeScoped (Lsoftware/amazon/app/platform/scope/coroutine/metro/AppScopeCoroutineScopeGraph;Lkotlinx/coroutines/CoroutineDispatcher;)Lsoftware/amazon/app/platform/scope/coroutine/CoroutineScopeScoped;
57+
}
58+
59+
public final class software/amazon/app/platform/scope/coroutine/metro/AppScopeCoroutineScopeGraph$ProvideAppCoroutineScope$$MetroFactory : dev/zacsweers/metro/internal/Factory {
60+
public static final field Companion Lsoftware/amazon/app/platform/scope/coroutine/metro/AppScopeCoroutineScopeGraph$ProvideAppCoroutineScope$$MetroFactory$Companion;
61+
public synthetic fun <init> (Lsoftware/amazon/app/platform/scope/coroutine/metro/AppScopeCoroutineScopeGraph;Ldev/zacsweers/metro/Provider;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
62+
public synthetic fun invoke ()Ljava/lang/Object;
63+
public final fun invoke ()Lkotlinx/coroutines/CoroutineScope;
64+
public final fun mirrorFunction (Lsoftware/amazon/app/platform/scope/coroutine/CoroutineScopeScoped;)Lkotlinx/coroutines/CoroutineScope;
65+
}
66+
67+
public final class software/amazon/app/platform/scope/coroutine/metro/AppScopeCoroutineScopeGraph$ProvideAppCoroutineScope$$MetroFactory$Companion {
68+
public final fun create (Lsoftware/amazon/app/platform/scope/coroutine/metro/AppScopeCoroutineScopeGraph;Ldev/zacsweers/metro/Provider;)Ldev/zacsweers/metro/internal/Factory;
69+
public final fun provideAppCoroutineScope (Lsoftware/amazon/app/platform/scope/coroutine/metro/AppScopeCoroutineScopeGraph;Lsoftware/amazon/app/platform/scope/coroutine/CoroutineScopeScoped;)Lkotlinx/coroutines/CoroutineScope;
70+
}
71+
72+
public final class software/amazon/app/platform/scope/coroutine/metro/AppScopeCoroutineScopeGraph$ProvideAppScopeCoroutineScopeScoped$$MetroFactory : dev/zacsweers/metro/internal/Factory {
73+
public static final field Companion Lsoftware/amazon/app/platform/scope/coroutine/metro/AppScopeCoroutineScopeGraph$ProvideAppScopeCoroutineScopeScoped$$MetroFactory$Companion;
74+
public synthetic fun <init> (Lsoftware/amazon/app/platform/scope/coroutine/metro/AppScopeCoroutineScopeGraph;Ldev/zacsweers/metro/Provider;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
75+
public synthetic fun invoke ()Ljava/lang/Object;
76+
public final fun invoke ()Lsoftware/amazon/app/platform/scope/coroutine/CoroutineScopeScoped;
77+
public final fun mirrorFunction (Lkotlinx/coroutines/CoroutineDispatcher;)Lsoftware/amazon/app/platform/scope/coroutine/CoroutineScopeScoped;
78+
}
79+
80+
public final class software/amazon/app/platform/scope/coroutine/metro/AppScopeCoroutineScopeGraph$ProvideAppScopeCoroutineScopeScoped$$MetroFactory$Companion {
81+
public final fun create (Lsoftware/amazon/app/platform/scope/coroutine/metro/AppScopeCoroutineScopeGraph;Ldev/zacsweers/metro/Provider;)Ldev/zacsweers/metro/internal/Factory;
82+
public final fun provideAppScopeCoroutineScopeScoped (Lsoftware/amazon/app/platform/scope/coroutine/metro/AppScopeCoroutineScopeGraph;Lkotlinx/coroutines/CoroutineDispatcher;)Lsoftware/amazon/app/platform/scope/coroutine/CoroutineScopeScoped;
83+
}
84+
85+
public abstract interface class software/amazon/app/platform/scope/coroutine/metro/CoroutineDispatcherGraph {
86+
public fun provideDefaultCoroutineDispatcher ()Lkotlinx/coroutines/CoroutineDispatcher;
87+
public fun provideIoCoroutineDispatcher ()Lkotlinx/coroutines/CoroutineDispatcher;
88+
public fun provideMainCoroutineDispatcher ()Lkotlinx/coroutines/CoroutineDispatcher;
89+
}
90+
91+
public abstract interface class software/amazon/app/platform/scope/coroutine/metro/CoroutineDispatcherGraph$$$MetroContributionToAppScope : software/amazon/app/platform/scope/coroutine/metro/CoroutineDispatcherGraph {
92+
}
93+
94+
public final class software/amazon/app/platform/scope/coroutine/metro/CoroutineDispatcherGraph$$$MetroContributionToAppScope$DefaultImpls {
95+
public static fun provideDefaultCoroutineDispatcher (Lsoftware/amazon/app/platform/scope/coroutine/metro/CoroutineDispatcherGraph$$$MetroContributionToAppScope;)Lkotlinx/coroutines/CoroutineDispatcher;
96+
public static fun provideIoCoroutineDispatcher (Lsoftware/amazon/app/platform/scope/coroutine/metro/CoroutineDispatcherGraph$$$MetroContributionToAppScope;)Lkotlinx/coroutines/CoroutineDispatcher;
97+
public static fun provideMainCoroutineDispatcher (Lsoftware/amazon/app/platform/scope/coroutine/metro/CoroutineDispatcherGraph$$$MetroContributionToAppScope;)Lkotlinx/coroutines/CoroutineDispatcher;
98+
}
99+
100+
public final class software/amazon/app/platform/scope/coroutine/metro/CoroutineDispatcherGraph$DefaultImpls {
101+
public static fun provideDefaultCoroutineDispatcher (Lsoftware/amazon/app/platform/scope/coroutine/metro/CoroutineDispatcherGraph;)Lkotlinx/coroutines/CoroutineDispatcher;
102+
public static fun provideIoCoroutineDispatcher (Lsoftware/amazon/app/platform/scope/coroutine/metro/CoroutineDispatcherGraph;)Lkotlinx/coroutines/CoroutineDispatcher;
103+
public static fun provideMainCoroutineDispatcher (Lsoftware/amazon/app/platform/scope/coroutine/metro/CoroutineDispatcherGraph;)Lkotlinx/coroutines/CoroutineDispatcher;
104+
}
105+
106+
public final class software/amazon/app/platform/scope/coroutine/metro/CoroutineDispatcherGraph$ProvideDefaultCoroutineDispatcher$$MetroFactory : dev/zacsweers/metro/internal/Factory {
107+
public static final field Companion Lsoftware/amazon/app/platform/scope/coroutine/metro/CoroutineDispatcherGraph$ProvideDefaultCoroutineDispatcher$$MetroFactory$Companion;
108+
public synthetic fun <init> (Lsoftware/amazon/app/platform/scope/coroutine/metro/CoroutineDispatcherGraph;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
109+
public synthetic fun invoke ()Ljava/lang/Object;
110+
public final fun invoke ()Lkotlinx/coroutines/CoroutineDispatcher;
111+
public final fun mirrorFunction ()Lkotlinx/coroutines/CoroutineDispatcher;
112+
}
113+
114+
public final class software/amazon/app/platform/scope/coroutine/metro/CoroutineDispatcherGraph$ProvideDefaultCoroutineDispatcher$$MetroFactory$Companion {
115+
public final fun create (Lsoftware/amazon/app/platform/scope/coroutine/metro/CoroutineDispatcherGraph;)Ldev/zacsweers/metro/internal/Factory;
116+
public final fun provideDefaultCoroutineDispatcher (Lsoftware/amazon/app/platform/scope/coroutine/metro/CoroutineDispatcherGraph;)Lkotlinx/coroutines/CoroutineDispatcher;
117+
}
118+
119+
public final class software/amazon/app/platform/scope/coroutine/metro/CoroutineDispatcherGraph$ProvideIoCoroutineDispatcher$$MetroFactory : dev/zacsweers/metro/internal/Factory {
120+
public static final field Companion Lsoftware/amazon/app/platform/scope/coroutine/metro/CoroutineDispatcherGraph$ProvideIoCoroutineDispatcher$$MetroFactory$Companion;
121+
public synthetic fun <init> (Lsoftware/amazon/app/platform/scope/coroutine/metro/CoroutineDispatcherGraph;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
122+
public synthetic fun invoke ()Ljava/lang/Object;
123+
public final fun invoke ()Lkotlinx/coroutines/CoroutineDispatcher;
124+
public final fun mirrorFunction ()Lkotlinx/coroutines/CoroutineDispatcher;
125+
}
126+
127+
public final class software/amazon/app/platform/scope/coroutine/metro/CoroutineDispatcherGraph$ProvideIoCoroutineDispatcher$$MetroFactory$Companion {
128+
public final fun create (Lsoftware/amazon/app/platform/scope/coroutine/metro/CoroutineDispatcherGraph;)Ldev/zacsweers/metro/internal/Factory;
129+
public final fun provideIoCoroutineDispatcher (Lsoftware/amazon/app/platform/scope/coroutine/metro/CoroutineDispatcherGraph;)Lkotlinx/coroutines/CoroutineDispatcher;
130+
}
131+
132+
public final class software/amazon/app/platform/scope/coroutine/metro/CoroutineDispatcherGraph$ProvideMainCoroutineDispatcher$$MetroFactory : dev/zacsweers/metro/internal/Factory {
133+
public static final field Companion Lsoftware/amazon/app/platform/scope/coroutine/metro/CoroutineDispatcherGraph$ProvideMainCoroutineDispatcher$$MetroFactory$Companion;
134+
public synthetic fun <init> (Lsoftware/amazon/app/platform/scope/coroutine/metro/CoroutineDispatcherGraph;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
135+
public synthetic fun invoke ()Ljava/lang/Object;
136+
public final fun invoke ()Lkotlinx/coroutines/CoroutineDispatcher;
137+
public final fun mirrorFunction ()Lkotlinx/coroutines/CoroutineDispatcher;
138+
}
139+
140+
public final class software/amazon/app/platform/scope/coroutine/metro/CoroutineDispatcherGraph$ProvideMainCoroutineDispatcher$$MetroFactory$Companion {
141+
public final fun create (Lsoftware/amazon/app/platform/scope/coroutine/metro/CoroutineDispatcherGraph;)Ldev/zacsweers/metro/internal/Factory;
142+
public final fun provideMainCoroutineDispatcher (Lsoftware/amazon/app/platform/scope/coroutine/metro/CoroutineDispatcherGraph;)Lkotlinx/coroutines/CoroutineDispatcher;
143+
}
144+

0 commit comments

Comments
 (0)