Skip to content

Commit ff917f0

Browse files
authored
Grpc common APIs for Services, Client and Server (#419)
1 parent 4db9cdd commit ff917f0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+1764
-253
lines changed

gradle-plugin/src/main/kotlin/kotlinx/rpc/grpc/DefaultGrpcExtension.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@ internal open class DefaultGrpcExtension @Inject constructor(
172172

173173
protoSourceSet.generateTask.set(bufGenerateTask)
174174

175+
// todo fix for common source sets
175176
tasks.withType<KotlinCompile>().configureEach {
176177
// compileKotlin - main
177178
// compileTestKotlin - test
@@ -276,7 +277,6 @@ internal open class DefaultGrpcExtension @Inject constructor(
276277
}
277278

278279
options.put("debugOutput", "protoc-gen-kotlin-multiplatform.log")
279-
options.put("messageMode", "interface")
280280
options.put("explicitApiModeEnabled", project.provider {
281281
project.the<KotlinBaseExtension>().explicitApi != ExplicitApiMode.Disabled
282282
})

grpc/grpc-core/api/grpc-core.api

Lines changed: 24 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -62,45 +62,35 @@ public final class kotlinx/rpc/grpc/Server$DefaultImpls {
6262
public static synthetic fun awaitTermination-VtjQ1oo$default (Lkotlinx/rpc/grpc/Server;JLkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
6363
}
6464

65-
public abstract interface class kotlinx/rpc/grpc/Status {
66-
public abstract fun getCause ()Ljava/lang/Throwable;
67-
public abstract fun getCode ()Lkotlinx/rpc/grpc/Status$Code;
68-
public abstract fun getDescription ()Ljava/lang/String;
69-
}
70-
71-
public final class kotlinx/rpc/grpc/Status$Code : java/lang/Enum {
72-
public static final field ABORTED Lkotlinx/rpc/grpc/Status$Code;
73-
public static final field ALREADY_EXISTS Lkotlinx/rpc/grpc/Status$Code;
74-
public static final field CANCELLED Lkotlinx/rpc/grpc/Status$Code;
75-
public static final field DATA_LOSS Lkotlinx/rpc/grpc/Status$Code;
76-
public static final field DEADLINE_EXCEEDED Lkotlinx/rpc/grpc/Status$Code;
77-
public static final field FAILED_PRECONDITION Lkotlinx/rpc/grpc/Status$Code;
78-
public static final field INTERNAL Lkotlinx/rpc/grpc/Status$Code;
79-
public static final field INVALID_ARGUMENT Lkotlinx/rpc/grpc/Status$Code;
80-
public static final field NOT_FOUND Lkotlinx/rpc/grpc/Status$Code;
81-
public static final field OK Lkotlinx/rpc/grpc/Status$Code;
82-
public static final field OUT_OF_RANGE Lkotlinx/rpc/grpc/Status$Code;
83-
public static final field PERMISSION_DENIED Lkotlinx/rpc/grpc/Status$Code;
84-
public static final field RESOURCE_EXHAUSTED Lkotlinx/rpc/grpc/Status$Code;
85-
public static final field UNAUTHENTICATED Lkotlinx/rpc/grpc/Status$Code;
86-
public static final field UNAVAILABLE Lkotlinx/rpc/grpc/Status$Code;
87-
public static final field UNIMPLEMENTED Lkotlinx/rpc/grpc/Status$Code;
88-
public static final field UNKNOWN Lkotlinx/rpc/grpc/Status$Code;
65+
public final class kotlinx/rpc/grpc/StatusCode : java/lang/Enum {
66+
public static final field ABORTED Lkotlinx/rpc/grpc/StatusCode;
67+
public static final field ALREADY_EXISTS Lkotlinx/rpc/grpc/StatusCode;
68+
public static final field CANCELLED Lkotlinx/rpc/grpc/StatusCode;
69+
public static final field DATA_LOSS Lkotlinx/rpc/grpc/StatusCode;
70+
public static final field DEADLINE_EXCEEDED Lkotlinx/rpc/grpc/StatusCode;
71+
public static final field FAILED_PRECONDITION Lkotlinx/rpc/grpc/StatusCode;
72+
public static final field INTERNAL Lkotlinx/rpc/grpc/StatusCode;
73+
public static final field INVALID_ARGUMENT Lkotlinx/rpc/grpc/StatusCode;
74+
public static final field NOT_FOUND Lkotlinx/rpc/grpc/StatusCode;
75+
public static final field OK Lkotlinx/rpc/grpc/StatusCode;
76+
public static final field OUT_OF_RANGE Lkotlinx/rpc/grpc/StatusCode;
77+
public static final field PERMISSION_DENIED Lkotlinx/rpc/grpc/StatusCode;
78+
public static final field RESOURCE_EXHAUSTED Lkotlinx/rpc/grpc/StatusCode;
79+
public static final field UNAUTHENTICATED Lkotlinx/rpc/grpc/StatusCode;
80+
public static final field UNAVAILABLE Lkotlinx/rpc/grpc/StatusCode;
81+
public static final field UNIMPLEMENTED Lkotlinx/rpc/grpc/StatusCode;
82+
public static final field UNKNOWN Lkotlinx/rpc/grpc/StatusCode;
8983
public static fun getEntries ()Lkotlin/enums/EnumEntries;
9084
public final fun getValue ()I
9185
public final fun getValueAscii ()[B
92-
public static fun valueOf (Ljava/lang/String;)Lkotlinx/rpc/grpc/Status$Code;
93-
public static fun values ()[Lkotlinx/rpc/grpc/Status$Code;
94-
}
95-
96-
public abstract interface class kotlinx/rpc/grpc/StatusRuntimeException {
97-
public abstract fun getStatus ()Lkotlinx/rpc/grpc/Status;
86+
public static fun valueOf (Ljava/lang/String;)Lkotlinx/rpc/grpc/StatusCode;
87+
public static fun values ()[Lkotlinx/rpc/grpc/StatusCode;
9888
}
9989

100-
public final class kotlinx/rpc/grpc/StatusRuntimeException_jvmKt {
101-
public static final fun StatusRuntimeException (Lkotlinx/rpc/grpc/Status;)Lkotlinx/rpc/grpc/StatusRuntimeException;
102-
public static final fun toJvm (Lkotlinx/rpc/grpc/StatusRuntimeException;)Lio/grpc/StatusRuntimeException;
103-
public static final fun toKotlin (Lio/grpc/StatusRuntimeException;)Lkotlinx/rpc/grpc/StatusRuntimeException;
90+
public final class kotlinx/rpc/grpc/Status_jvmKt {
91+
public static final fun Status (Lkotlinx/rpc/grpc/StatusCode;Ljava/lang/String;Ljava/lang/Throwable;)Lio/grpc/Status;
92+
public static synthetic fun Status$default (Lkotlinx/rpc/grpc/StatusCode;Ljava/lang/String;Ljava/lang/Throwable;ILjava/lang/Object;)Lio/grpc/Status;
93+
public static final fun getCode (Lio/grpc/Status;)Lkotlinx/rpc/grpc/StatusCode;
10494
}
10595

10696
public abstract interface class kotlinx/rpc/grpc/descriptor/GrpcClientDelegate {

grpc/grpc-core/api/grpc-core.klib.api

Lines changed: 70 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,41 @@
11
// Klib ABI Dump
2-
// Targets: [iosArm64, iosSimulatorArm64, iosX64, js, linuxArm64, linuxX64, macosArm64, macosX64, mingwX64, tvosArm64, tvosSimulatorArm64, tvosX64, wasmJs, watchosArm32, watchosArm64, watchosDeviceArm64, watchosSimulatorArm64, watchosX64]
2+
// Targets: [macosArm64]
33
// Rendering settings:
44
// - Signature version: 2
55
// - Show manifest properties: true
66
// - Show declarations: true
77

88
// Library unique name: <org.jetbrains.kotlinx:grpc-core>
9+
final enum class kotlinx.rpc.grpc/StatusCode : kotlin/Enum<kotlinx.rpc.grpc/StatusCode> { // kotlinx.rpc.grpc/StatusCode|null[0]
10+
enum entry ABORTED // kotlinx.rpc.grpc/StatusCode.ABORTED|null[0]
11+
enum entry ALREADY_EXISTS // kotlinx.rpc.grpc/StatusCode.ALREADY_EXISTS|null[0]
12+
enum entry CANCELLED // kotlinx.rpc.grpc/StatusCode.CANCELLED|null[0]
13+
enum entry DATA_LOSS // kotlinx.rpc.grpc/StatusCode.DATA_LOSS|null[0]
14+
enum entry DEADLINE_EXCEEDED // kotlinx.rpc.grpc/StatusCode.DEADLINE_EXCEEDED|null[0]
15+
enum entry FAILED_PRECONDITION // kotlinx.rpc.grpc/StatusCode.FAILED_PRECONDITION|null[0]
16+
enum entry INTERNAL // kotlinx.rpc.grpc/StatusCode.INTERNAL|null[0]
17+
enum entry INVALID_ARGUMENT // kotlinx.rpc.grpc/StatusCode.INVALID_ARGUMENT|null[0]
18+
enum entry NOT_FOUND // kotlinx.rpc.grpc/StatusCode.NOT_FOUND|null[0]
19+
enum entry OK // kotlinx.rpc.grpc/StatusCode.OK|null[0]
20+
enum entry OUT_OF_RANGE // kotlinx.rpc.grpc/StatusCode.OUT_OF_RANGE|null[0]
21+
enum entry PERMISSION_DENIED // kotlinx.rpc.grpc/StatusCode.PERMISSION_DENIED|null[0]
22+
enum entry RESOURCE_EXHAUSTED // kotlinx.rpc.grpc/StatusCode.RESOURCE_EXHAUSTED|null[0]
23+
enum entry UNAUTHENTICATED // kotlinx.rpc.grpc/StatusCode.UNAUTHENTICATED|null[0]
24+
enum entry UNAVAILABLE // kotlinx.rpc.grpc/StatusCode.UNAVAILABLE|null[0]
25+
enum entry UNIMPLEMENTED // kotlinx.rpc.grpc/StatusCode.UNIMPLEMENTED|null[0]
26+
enum entry UNKNOWN // kotlinx.rpc.grpc/StatusCode.UNKNOWN|null[0]
27+
28+
final val entries // kotlinx.rpc.grpc/StatusCode.entries|#static{}entries[0]
29+
final fun <get-entries>(): kotlin.enums/EnumEntries<kotlinx.rpc.grpc/StatusCode> // kotlinx.rpc.grpc/StatusCode.entries.<get-entries>|<get-entries>#static(){}[0]
30+
final val value // kotlinx.rpc.grpc/StatusCode.value|{}value[0]
31+
final fun <get-value>(): kotlin/Int // kotlinx.rpc.grpc/StatusCode.value.<get-value>|<get-value>(){}[0]
32+
final val valueAscii // kotlinx.rpc.grpc/StatusCode.valueAscii|{}valueAscii[0]
33+
final fun <get-valueAscii>(): kotlin/ByteArray // kotlinx.rpc.grpc/StatusCode.valueAscii.<get-valueAscii>|<get-valueAscii>(){}[0]
34+
35+
final fun valueOf(kotlin/String): kotlinx.rpc.grpc/StatusCode // kotlinx.rpc.grpc/StatusCode.valueOf|valueOf#static(kotlin.String){}[0]
36+
final fun values(): kotlin/Array<kotlinx.rpc.grpc/StatusCode> // kotlinx.rpc.grpc/StatusCode.values|values#static(){}[0]
37+
}
38+
939
abstract interface <#A: kotlin/Any> kotlinx.rpc.grpc.descriptor/GrpcDelegate { // kotlinx.rpc.grpc.descriptor/GrpcDelegate|null[0]
1040
abstract fun clientProvider(kotlinx.rpc.grpc/ManagedChannel): kotlinx.rpc.grpc.descriptor/GrpcClientDelegate // kotlinx.rpc.grpc.descriptor/GrpcDelegate.clientProvider|clientProvider(kotlinx.rpc.grpc.ManagedChannel){}[0]
1141
abstract fun definitionFor(#A): kotlinx.rpc.grpc/ServerServiceDefinition // kotlinx.rpc.grpc.descriptor/GrpcDelegate.definitionFor|definitionFor(1:0){}[0]
@@ -48,52 +78,10 @@ abstract interface kotlinx.rpc.grpc/Server { // kotlinx.rpc.grpc/Server|null[0]
4878
abstract suspend fun awaitTermination(kotlin.time/Duration = ...): kotlinx.rpc.grpc/Server // kotlinx.rpc.grpc/Server.awaitTermination|awaitTermination(kotlin.time.Duration){}[0]
4979
}
5080

51-
abstract interface kotlinx.rpc.grpc/Status { // kotlinx.rpc.grpc/Status|null[0]
52-
abstract val cause // kotlinx.rpc.grpc/Status.cause|{}cause[0]
53-
abstract fun <get-cause>(): kotlin/Throwable? // kotlinx.rpc.grpc/Status.cause.<get-cause>|<get-cause>(){}[0]
54-
abstract val code // kotlinx.rpc.grpc/Status.code|{}code[0]
55-
abstract fun <get-code>(): kotlinx.rpc.grpc/Status.Code // kotlinx.rpc.grpc/Status.code.<get-code>|<get-code>(){}[0]
56-
abstract val description // kotlinx.rpc.grpc/Status.description|{}description[0]
57-
abstract fun <get-description>(): kotlin/String? // kotlinx.rpc.grpc/Status.description.<get-description>|<get-description>(){}[0]
58-
59-
final enum class Code : kotlin/Enum<kotlinx.rpc.grpc/Status.Code> { // kotlinx.rpc.grpc/Status.Code|null[0]
60-
enum entry ABORTED // kotlinx.rpc.grpc/Status.Code.ABORTED|null[0]
61-
enum entry ALREADY_EXISTS // kotlinx.rpc.grpc/Status.Code.ALREADY_EXISTS|null[0]
62-
enum entry CANCELLED // kotlinx.rpc.grpc/Status.Code.CANCELLED|null[0]
63-
enum entry DATA_LOSS // kotlinx.rpc.grpc/Status.Code.DATA_LOSS|null[0]
64-
enum entry DEADLINE_EXCEEDED // kotlinx.rpc.grpc/Status.Code.DEADLINE_EXCEEDED|null[0]
65-
enum entry FAILED_PRECONDITION // kotlinx.rpc.grpc/Status.Code.FAILED_PRECONDITION|null[0]
66-
enum entry INTERNAL // kotlinx.rpc.grpc/Status.Code.INTERNAL|null[0]
67-
enum entry INVALID_ARGUMENT // kotlinx.rpc.grpc/Status.Code.INVALID_ARGUMENT|null[0]
68-
enum entry NOT_FOUND // kotlinx.rpc.grpc/Status.Code.NOT_FOUND|null[0]
69-
enum entry OK // kotlinx.rpc.grpc/Status.Code.OK|null[0]
70-
enum entry OUT_OF_RANGE // kotlinx.rpc.grpc/Status.Code.OUT_OF_RANGE|null[0]
71-
enum entry PERMISSION_DENIED // kotlinx.rpc.grpc/Status.Code.PERMISSION_DENIED|null[0]
72-
enum entry RESOURCE_EXHAUSTED // kotlinx.rpc.grpc/Status.Code.RESOURCE_EXHAUSTED|null[0]
73-
enum entry UNAUTHENTICATED // kotlinx.rpc.grpc/Status.Code.UNAUTHENTICATED|null[0]
74-
enum entry UNAVAILABLE // kotlinx.rpc.grpc/Status.Code.UNAVAILABLE|null[0]
75-
enum entry UNIMPLEMENTED // kotlinx.rpc.grpc/Status.Code.UNIMPLEMENTED|null[0]
76-
enum entry UNKNOWN // kotlinx.rpc.grpc/Status.Code.UNKNOWN|null[0]
77-
78-
final val entries // kotlinx.rpc.grpc/Status.Code.entries|#static{}entries[0]
79-
final fun <get-entries>(): kotlin.enums/EnumEntries<kotlinx.rpc.grpc/Status.Code> // kotlinx.rpc.grpc/Status.Code.entries.<get-entries>|<get-entries>#static(){}[0]
80-
final val value // kotlinx.rpc.grpc/Status.Code.value|{}value[0]
81-
final fun <get-value>(): kotlin/Int // kotlinx.rpc.grpc/Status.Code.value.<get-value>|<get-value>(){}[0]
82-
final val valueAscii // kotlinx.rpc.grpc/Status.Code.valueAscii|{}valueAscii[0]
83-
final fun <get-valueAscii>(): kotlin/ByteArray // kotlinx.rpc.grpc/Status.Code.valueAscii.<get-valueAscii>|<get-valueAscii>(){}[0]
84-
85-
final fun valueOf(kotlin/String): kotlinx.rpc.grpc/Status.Code // kotlinx.rpc.grpc/Status.Code.valueOf|valueOf#static(kotlin.String){}[0]
86-
final fun values(): kotlin/Array<kotlinx.rpc.grpc/Status.Code> // kotlinx.rpc.grpc/Status.Code.values|values#static(){}[0]
87-
}
88-
}
89-
90-
abstract interface kotlinx.rpc.grpc/StatusRuntimeException { // kotlinx.rpc.grpc/StatusRuntimeException|null[0]
91-
abstract val status // kotlinx.rpc.grpc/StatusRuntimeException.status|{}status[0]
92-
abstract fun <get-status>(): kotlinx.rpc.grpc/Status // kotlinx.rpc.grpc/StatusRuntimeException.status.<get-status>|<get-status>(){}[0]
93-
}
94-
9581
abstract class <#A: kotlinx.rpc.grpc/ManagedChannelBuilder<#A>> kotlinx.rpc.grpc/ManagedChannelBuilder { // kotlinx.rpc.grpc/ManagedChannelBuilder|null[0]
9682
constructor <init>() // kotlinx.rpc.grpc/ManagedChannelBuilder.<init>|<init>(){}[0]
83+
84+
final fun usePlaintext(): #A // kotlinx.rpc.grpc/ManagedChannelBuilder.usePlaintext|usePlaintext(){}[0]
9785
}
9886

9987
abstract class <#A: kotlinx.rpc.grpc/ServerBuilder<#A>> kotlinx.rpc.grpc/ServerBuilder { // kotlinx.rpc.grpc/ServerBuilder|null[0]
@@ -107,7 +95,7 @@ abstract class kotlinx.rpc.grpc/HandlerRegistry { // kotlinx.rpc.grpc/HandlerReg
10795
constructor <init>() // kotlinx.rpc.grpc/HandlerRegistry.<init>|<init>(){}[0]
10896
}
10997

110-
abstract class kotlinx.rpc.grpc/ManagedChannelPlatform { // kotlinx.rpc.grpc/ManagedChannelPlatform|null[0]
98+
abstract class kotlinx.rpc.grpc/ManagedChannelPlatform : kotlinx.rpc.grpc.internal/GrpcChannel { // kotlinx.rpc.grpc/ManagedChannelPlatform|null[0]
11199
constructor <init>() // kotlinx.rpc.grpc/ManagedChannelPlatform.<init>|<init>(){}[0]
112100
}
113101

@@ -135,11 +123,46 @@ final class kotlinx.rpc.grpc/GrpcServer : kotlinx.rpc.grpc/Server, kotlinx.rpc/R
135123
final suspend fun awaitTermination(kotlin.time/Duration): kotlinx.rpc.grpc/GrpcServer // kotlinx.rpc.grpc/GrpcServer.awaitTermination|awaitTermination(kotlin.time.Duration){}[0]
136124
}
137125

126+
final class kotlinx.rpc.grpc/GrpcTrailers { // kotlinx.rpc.grpc/GrpcTrailers|null[0]
127+
constructor <init>() // kotlinx.rpc.grpc/GrpcTrailers.<init>|<init>(){}[0]
128+
129+
final fun merge(kotlinx.rpc.grpc/GrpcTrailers) // kotlinx.rpc.grpc/GrpcTrailers.merge|merge(kotlinx.rpc.grpc.GrpcTrailers){}[0]
130+
}
131+
138132
final class kotlinx.rpc.grpc/ServerServiceDefinition { // kotlinx.rpc.grpc/ServerServiceDefinition|null[0]
139133
constructor <init>() // kotlinx.rpc.grpc/ServerServiceDefinition.<init>|<init>(){}[0]
134+
135+
final fun getMethods(): kotlin.collections/Collection<kotlinx.rpc.grpc.internal/ServerMethodDefinition<*, *>> // kotlinx.rpc.grpc/ServerServiceDefinition.getMethods|getMethods(){}[0]
136+
final fun getServiceDescriptor(): kotlinx.rpc.grpc.internal/ServiceDescriptor // kotlinx.rpc.grpc/ServerServiceDefinition.getServiceDescriptor|getServiceDescriptor(){}[0]
140137
}
141138

139+
final class kotlinx.rpc.grpc/Status { // kotlinx.rpc.grpc/Status|null[0]
140+
constructor <init>() // kotlinx.rpc.grpc/Status.<init>|<init>(){}[0]
141+
142+
final fun getCause(): kotlin/Throwable? // kotlinx.rpc.grpc/Status.getCause|getCause(){}[0]
143+
final fun getDescription(): kotlin/String? // kotlinx.rpc.grpc/Status.getDescription|getDescription(){}[0]
144+
}
145+
146+
final class kotlinx.rpc.grpc/StatusException : kotlin/Exception { // kotlinx.rpc.grpc/StatusException|null[0]
147+
constructor <init>(kotlinx.rpc.grpc/Status) // kotlinx.rpc.grpc/StatusException.<init>|<init>(kotlinx.rpc.grpc.Status){}[0]
148+
constructor <init>(kotlinx.rpc.grpc/Status, kotlinx.rpc.grpc/GrpcTrailers?) // kotlinx.rpc.grpc/StatusException.<init>|<init>(kotlinx.rpc.grpc.Status;kotlinx.rpc.grpc.GrpcTrailers?){}[0]
149+
150+
final fun getStatus(): kotlinx.rpc.grpc/Status // kotlinx.rpc.grpc/StatusException.getStatus|getStatus(){}[0]
151+
final fun getTrailers(): kotlinx.rpc.grpc/GrpcTrailers? // kotlinx.rpc.grpc/StatusException.getTrailers|getTrailers(){}[0]
152+
}
153+
154+
final class kotlinx.rpc.grpc/StatusRuntimeException : kotlin/RuntimeException { // kotlinx.rpc.grpc/StatusRuntimeException|null[0]
155+
constructor <init>(kotlinx.rpc.grpc/Status) // kotlinx.rpc.grpc/StatusRuntimeException.<init>|<init>(kotlinx.rpc.grpc.Status){}[0]
156+
constructor <init>(kotlinx.rpc.grpc/Status, kotlinx.rpc.grpc/GrpcTrailers?) // kotlinx.rpc.grpc/StatusRuntimeException.<init>|<init>(kotlinx.rpc.grpc.Status;kotlinx.rpc.grpc.GrpcTrailers?){}[0]
157+
158+
final fun getStatus(): kotlinx.rpc.grpc/Status // kotlinx.rpc.grpc/StatusRuntimeException.getStatus|getStatus(){}[0]
159+
final fun getTrailers(): kotlinx.rpc.grpc/GrpcTrailers? // kotlinx.rpc.grpc/StatusRuntimeException.getTrailers|getTrailers(){}[0]
160+
}
161+
162+
final val kotlinx.rpc.grpc/code // kotlinx.rpc.grpc/code|@kotlinx.rpc.grpc.Status{}code[0]
163+
final fun (kotlinx.rpc.grpc/Status).<get-code>(): kotlinx.rpc.grpc/StatusCode // kotlinx.rpc.grpc/code.<get-code>|<get-code>@kotlinx.rpc.grpc.Status(){}[0]
164+
142165
final fun kotlinx.rpc.grpc/GrpcClient(kotlin/String, kotlin/Function1<kotlinx.rpc.grpc/ManagedChannelBuilder<*>, kotlin/Unit> = ...): kotlinx.rpc.grpc/GrpcClient // kotlinx.rpc.grpc/GrpcClient|GrpcClient(kotlin.String;kotlin.Function1<kotlinx.rpc.grpc.ManagedChannelBuilder<*>,kotlin.Unit>){}[0]
143166
final fun kotlinx.rpc.grpc/GrpcClient(kotlin/String, kotlin/Int, kotlin/Function1<kotlinx.rpc.grpc/ManagedChannelBuilder<*>, kotlin/Unit> = ...): kotlinx.rpc.grpc/GrpcClient // kotlinx.rpc.grpc/GrpcClient|GrpcClient(kotlin.String;kotlin.Int;kotlin.Function1<kotlinx.rpc.grpc.ManagedChannelBuilder<*>,kotlin.Unit>){}[0]
144167
final fun kotlinx.rpc.grpc/GrpcServer(kotlin/Int, kotlin/Function1<kotlinx.rpc.grpc/ServerBuilder<*>, kotlin/Unit> = ..., kotlin/Function1<kotlinx.rpc/RpcServer, kotlin/Unit> = ...): kotlinx.rpc.grpc/GrpcServer // kotlinx.rpc.grpc/GrpcServer|GrpcServer(kotlin.Int;kotlin.Function1<kotlinx.rpc.grpc.ServerBuilder<*>,kotlin.Unit>;kotlin.Function1<kotlinx.rpc.RpcServer,kotlin.Unit>){}[0]
145-
final fun kotlinx.rpc.grpc/StatusRuntimeException(kotlinx.rpc.grpc/Status): kotlinx.rpc.grpc/StatusRuntimeException // kotlinx.rpc.grpc/StatusRuntimeException|StatusRuntimeException(kotlinx.rpc.grpc.Status){}[0]
168+
final fun kotlinx.rpc.grpc/Status(kotlinx.rpc.grpc/StatusCode, kotlin/String? = ..., kotlin/Throwable? = ...): kotlinx.rpc.grpc/Status // kotlinx.rpc.grpc/Status|Status(kotlinx.rpc.grpc.StatusCode;kotlin.String?;kotlin.Throwable?){}[0]

grpc/grpc-core/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ kotlin {
3636
commonTest {
3737
dependencies {
3838
implementation(libs.kotlin.test)
39+
implementation(libs.coroutines.test)
3940
}
4041
}
4142

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/*
2+
* Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
3+
*/
4+
5+
package kotlinx.rpc.grpc
6+
7+
@Suppress("RedundantConstructorKeyword")
8+
public expect class GrpcTrailers constructor() {
9+
public fun merge(trailers: GrpcTrailers)
10+
}

grpc/grpc-core/src/commonMain/kotlin/kotlinx/rpc/grpc/ManagedChannel.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@
66

77
package kotlinx.rpc.grpc
88

9+
import kotlinx.rpc.grpc.internal.GrpcChannel
910
import kotlin.time.Duration
1011

1112
/**
1213
* Same as [ManagedChannel], but is platform-exposed.
1314
*/
14-
public expect abstract class ManagedChannelPlatform
15+
public expect abstract class ManagedChannelPlatform : GrpcChannel
1516

1617
/**
1718
* A virtual connection to a conceptual endpoint, to perform RPCs.
@@ -66,7 +67,9 @@ public interface ManagedChannel {
6667
/**
6768
* Builder class for [ManagedChannel].
6869
*/
69-
public expect abstract class ManagedChannelBuilder<T : ManagedChannelBuilder<T>>
70+
public expect abstract class ManagedChannelBuilder<T : ManagedChannelBuilder<T>> {
71+
public fun usePlaintext(): T
72+
}
7073

7174
internal expect fun ManagedChannelBuilder(hostname: String, port: Int): ManagedChannelBuilder<*>
7275
internal expect fun ManagedChannelBuilder(target: String): ManagedChannelBuilder<*>

grpc/grpc-core/src/commonMain/kotlin/kotlinx/rpc/grpc/ServerServiceDefinition.kt

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,20 @@
66

77
package kotlinx.rpc.grpc
88

9+
import kotlinx.rpc.grpc.internal.ServerMethodDefinition
10+
import kotlinx.rpc.grpc.internal.ServiceDescriptor
11+
import kotlinx.rpc.internal.utils.InternalRpcApi
12+
913
/**
1014
* Definition of a service to be exposed via a Server.
1115
*/
12-
public expect class ServerServiceDefinition
16+
public expect class ServerServiceDefinition {
17+
public fun getServiceDescriptor(): ServiceDescriptor
18+
public fun getMethods(): Collection<ServerMethodDefinition<*, *>>
19+
}
20+
21+
@InternalRpcApi
22+
public expect fun serverServiceDefinition(
23+
serviceDescriptor: ServiceDescriptor,
24+
methods: Collection<ServerMethodDefinition<*, *>>
25+
): ServerServiceDefinition

0 commit comments

Comments
 (0)