Skip to content

Grpc common APIs for Services, Client and Server #419

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Aug 1, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,7 @@ internal open class DefaultGrpcExtension @Inject constructor(

protoSourceSet.generateTask.set(bufGenerateTask)

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

options.put("debugOutput", "protoc-gen-kotlin-multiplatform.log")
options.put("messageMode", "interface")
options.put("explicitApiModeEnabled", project.provider {
project.the<KotlinBaseExtension>().explicitApi != ExplicitApiMode.Disabled
})
Expand Down
58 changes: 24 additions & 34 deletions grpc/grpc-core/api/grpc-core.api
Original file line number Diff line number Diff line change
Expand Up @@ -62,45 +62,35 @@ public final class kotlinx/rpc/grpc/Server$DefaultImpls {
public static synthetic fun awaitTermination-VtjQ1oo$default (Lkotlinx/rpc/grpc/Server;JLkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
}

public abstract interface class kotlinx/rpc/grpc/Status {
public abstract fun getCause ()Ljava/lang/Throwable;
public abstract fun getCode ()Lkotlinx/rpc/grpc/Status$Code;
public abstract fun getDescription ()Ljava/lang/String;
}

public final class kotlinx/rpc/grpc/Status$Code : java/lang/Enum {
public static final field ABORTED Lkotlinx/rpc/grpc/Status$Code;
public static final field ALREADY_EXISTS Lkotlinx/rpc/grpc/Status$Code;
public static final field CANCELLED Lkotlinx/rpc/grpc/Status$Code;
public static final field DATA_LOSS Lkotlinx/rpc/grpc/Status$Code;
public static final field DEADLINE_EXCEEDED Lkotlinx/rpc/grpc/Status$Code;
public static final field FAILED_PRECONDITION Lkotlinx/rpc/grpc/Status$Code;
public static final field INTERNAL Lkotlinx/rpc/grpc/Status$Code;
public static final field INVALID_ARGUMENT Lkotlinx/rpc/grpc/Status$Code;
public static final field NOT_FOUND Lkotlinx/rpc/grpc/Status$Code;
public static final field OK Lkotlinx/rpc/grpc/Status$Code;
public static final field OUT_OF_RANGE Lkotlinx/rpc/grpc/Status$Code;
public static final field PERMISSION_DENIED Lkotlinx/rpc/grpc/Status$Code;
public static final field RESOURCE_EXHAUSTED Lkotlinx/rpc/grpc/Status$Code;
public static final field UNAUTHENTICATED Lkotlinx/rpc/grpc/Status$Code;
public static final field UNAVAILABLE Lkotlinx/rpc/grpc/Status$Code;
public static final field UNIMPLEMENTED Lkotlinx/rpc/grpc/Status$Code;
public static final field UNKNOWN Lkotlinx/rpc/grpc/Status$Code;
public final class kotlinx/rpc/grpc/StatusCode : java/lang/Enum {
public static final field ABORTED Lkotlinx/rpc/grpc/StatusCode;
public static final field ALREADY_EXISTS Lkotlinx/rpc/grpc/StatusCode;
public static final field CANCELLED Lkotlinx/rpc/grpc/StatusCode;
public static final field DATA_LOSS Lkotlinx/rpc/grpc/StatusCode;
public static final field DEADLINE_EXCEEDED Lkotlinx/rpc/grpc/StatusCode;
public static final field FAILED_PRECONDITION Lkotlinx/rpc/grpc/StatusCode;
public static final field INTERNAL Lkotlinx/rpc/grpc/StatusCode;
public static final field INVALID_ARGUMENT Lkotlinx/rpc/grpc/StatusCode;
public static final field NOT_FOUND Lkotlinx/rpc/grpc/StatusCode;
public static final field OK Lkotlinx/rpc/grpc/StatusCode;
public static final field OUT_OF_RANGE Lkotlinx/rpc/grpc/StatusCode;
public static final field PERMISSION_DENIED Lkotlinx/rpc/grpc/StatusCode;
public static final field RESOURCE_EXHAUSTED Lkotlinx/rpc/grpc/StatusCode;
public static final field UNAUTHENTICATED Lkotlinx/rpc/grpc/StatusCode;
public static final field UNAVAILABLE Lkotlinx/rpc/grpc/StatusCode;
public static final field UNIMPLEMENTED Lkotlinx/rpc/grpc/StatusCode;
public static final field UNKNOWN Lkotlinx/rpc/grpc/StatusCode;
public static fun getEntries ()Lkotlin/enums/EnumEntries;
public final fun getValue ()I
public final fun getValueAscii ()[B
public static fun valueOf (Ljava/lang/String;)Lkotlinx/rpc/grpc/Status$Code;
public static fun values ()[Lkotlinx/rpc/grpc/Status$Code;
}

public abstract interface class kotlinx/rpc/grpc/StatusRuntimeException {
public abstract fun getStatus ()Lkotlinx/rpc/grpc/Status;
public static fun valueOf (Ljava/lang/String;)Lkotlinx/rpc/grpc/StatusCode;
public static fun values ()[Lkotlinx/rpc/grpc/StatusCode;
}

public final class kotlinx/rpc/grpc/StatusRuntimeException_jvmKt {
public static final fun StatusRuntimeException (Lkotlinx/rpc/grpc/Status;)Lkotlinx/rpc/grpc/StatusRuntimeException;
public static final fun toJvm (Lkotlinx/rpc/grpc/StatusRuntimeException;)Lio/grpc/StatusRuntimeException;
public static final fun toKotlin (Lio/grpc/StatusRuntimeException;)Lkotlinx/rpc/grpc/StatusRuntimeException;
public final class kotlinx/rpc/grpc/Status_jvmKt {
public static final fun Status (Lkotlinx/rpc/grpc/StatusCode;Ljava/lang/String;Ljava/lang/Throwable;)Lio/grpc/Status;
public static synthetic fun Status$default (Lkotlinx/rpc/grpc/StatusCode;Ljava/lang/String;Ljava/lang/Throwable;ILjava/lang/Object;)Lio/grpc/Status;
public static final fun getCode (Lio/grpc/Status;)Lkotlinx/rpc/grpc/StatusCode;
}

public abstract interface class kotlinx/rpc/grpc/descriptor/GrpcClientDelegate {
Expand Down
117 changes: 70 additions & 47 deletions grpc/grpc-core/api/grpc-core.klib.api
Original file line number Diff line number Diff line change
@@ -1,11 +1,41 @@
// Klib ABI Dump
// Targets: [iosArm64, iosSimulatorArm64, iosX64, js, linuxArm64, linuxX64, macosArm64, macosX64, mingwX64, tvosArm64, tvosSimulatorArm64, tvosX64, wasmJs, watchosArm32, watchosArm64, watchosDeviceArm64, watchosSimulatorArm64, watchosX64]
// Targets: [macosArm64]
// Rendering settings:
// - Signature version: 2
// - Show manifest properties: true
// - Show declarations: true

// Library unique name: <org.jetbrains.kotlinx:grpc-core>
final enum class kotlinx.rpc.grpc/StatusCode : kotlin/Enum<kotlinx.rpc.grpc/StatusCode> { // kotlinx.rpc.grpc/StatusCode|null[0]
enum entry ABORTED // kotlinx.rpc.grpc/StatusCode.ABORTED|null[0]
enum entry ALREADY_EXISTS // kotlinx.rpc.grpc/StatusCode.ALREADY_EXISTS|null[0]
enum entry CANCELLED // kotlinx.rpc.grpc/StatusCode.CANCELLED|null[0]
enum entry DATA_LOSS // kotlinx.rpc.grpc/StatusCode.DATA_LOSS|null[0]
enum entry DEADLINE_EXCEEDED // kotlinx.rpc.grpc/StatusCode.DEADLINE_EXCEEDED|null[0]
enum entry FAILED_PRECONDITION // kotlinx.rpc.grpc/StatusCode.FAILED_PRECONDITION|null[0]
enum entry INTERNAL // kotlinx.rpc.grpc/StatusCode.INTERNAL|null[0]
enum entry INVALID_ARGUMENT // kotlinx.rpc.grpc/StatusCode.INVALID_ARGUMENT|null[0]
enum entry NOT_FOUND // kotlinx.rpc.grpc/StatusCode.NOT_FOUND|null[0]
enum entry OK // kotlinx.rpc.grpc/StatusCode.OK|null[0]
enum entry OUT_OF_RANGE // kotlinx.rpc.grpc/StatusCode.OUT_OF_RANGE|null[0]
enum entry PERMISSION_DENIED // kotlinx.rpc.grpc/StatusCode.PERMISSION_DENIED|null[0]
enum entry RESOURCE_EXHAUSTED // kotlinx.rpc.grpc/StatusCode.RESOURCE_EXHAUSTED|null[0]
enum entry UNAUTHENTICATED // kotlinx.rpc.grpc/StatusCode.UNAUTHENTICATED|null[0]
enum entry UNAVAILABLE // kotlinx.rpc.grpc/StatusCode.UNAVAILABLE|null[0]
enum entry UNIMPLEMENTED // kotlinx.rpc.grpc/StatusCode.UNIMPLEMENTED|null[0]
enum entry UNKNOWN // kotlinx.rpc.grpc/StatusCode.UNKNOWN|null[0]

final val entries // kotlinx.rpc.grpc/StatusCode.entries|#static{}entries[0]
final fun <get-entries>(): kotlin.enums/EnumEntries<kotlinx.rpc.grpc/StatusCode> // kotlinx.rpc.grpc/StatusCode.entries.<get-entries>|<get-entries>#static(){}[0]
final val value // kotlinx.rpc.grpc/StatusCode.value|{}value[0]
final fun <get-value>(): kotlin/Int // kotlinx.rpc.grpc/StatusCode.value.<get-value>|<get-value>(){}[0]
final val valueAscii // kotlinx.rpc.grpc/StatusCode.valueAscii|{}valueAscii[0]
final fun <get-valueAscii>(): kotlin/ByteArray // kotlinx.rpc.grpc/StatusCode.valueAscii.<get-valueAscii>|<get-valueAscii>(){}[0]

final fun valueOf(kotlin/String): kotlinx.rpc.grpc/StatusCode // kotlinx.rpc.grpc/StatusCode.valueOf|valueOf#static(kotlin.String){}[0]
final fun values(): kotlin/Array<kotlinx.rpc.grpc/StatusCode> // kotlinx.rpc.grpc/StatusCode.values|values#static(){}[0]
}

abstract interface <#A: kotlin/Any> kotlinx.rpc.grpc.descriptor/GrpcDelegate { // kotlinx.rpc.grpc.descriptor/GrpcDelegate|null[0]
abstract fun clientProvider(kotlinx.rpc.grpc/ManagedChannel): kotlinx.rpc.grpc.descriptor/GrpcClientDelegate // kotlinx.rpc.grpc.descriptor/GrpcDelegate.clientProvider|clientProvider(kotlinx.rpc.grpc.ManagedChannel){}[0]
abstract fun definitionFor(#A): kotlinx.rpc.grpc/ServerServiceDefinition // kotlinx.rpc.grpc.descriptor/GrpcDelegate.definitionFor|definitionFor(1:0){}[0]
Expand Down Expand Up @@ -48,52 +78,10 @@ abstract interface kotlinx.rpc.grpc/Server { // kotlinx.rpc.grpc/Server|null[0]
abstract suspend fun awaitTermination(kotlin.time/Duration = ...): kotlinx.rpc.grpc/Server // kotlinx.rpc.grpc/Server.awaitTermination|awaitTermination(kotlin.time.Duration){}[0]
}

abstract interface kotlinx.rpc.grpc/Status { // kotlinx.rpc.grpc/Status|null[0]
abstract val cause // kotlinx.rpc.grpc/Status.cause|{}cause[0]
abstract fun <get-cause>(): kotlin/Throwable? // kotlinx.rpc.grpc/Status.cause.<get-cause>|<get-cause>(){}[0]
abstract val code // kotlinx.rpc.grpc/Status.code|{}code[0]
abstract fun <get-code>(): kotlinx.rpc.grpc/Status.Code // kotlinx.rpc.grpc/Status.code.<get-code>|<get-code>(){}[0]
abstract val description // kotlinx.rpc.grpc/Status.description|{}description[0]
abstract fun <get-description>(): kotlin/String? // kotlinx.rpc.grpc/Status.description.<get-description>|<get-description>(){}[0]

final enum class Code : kotlin/Enum<kotlinx.rpc.grpc/Status.Code> { // kotlinx.rpc.grpc/Status.Code|null[0]
enum entry ABORTED // kotlinx.rpc.grpc/Status.Code.ABORTED|null[0]
enum entry ALREADY_EXISTS // kotlinx.rpc.grpc/Status.Code.ALREADY_EXISTS|null[0]
enum entry CANCELLED // kotlinx.rpc.grpc/Status.Code.CANCELLED|null[0]
enum entry DATA_LOSS // kotlinx.rpc.grpc/Status.Code.DATA_LOSS|null[0]
enum entry DEADLINE_EXCEEDED // kotlinx.rpc.grpc/Status.Code.DEADLINE_EXCEEDED|null[0]
enum entry FAILED_PRECONDITION // kotlinx.rpc.grpc/Status.Code.FAILED_PRECONDITION|null[0]
enum entry INTERNAL // kotlinx.rpc.grpc/Status.Code.INTERNAL|null[0]
enum entry INVALID_ARGUMENT // kotlinx.rpc.grpc/Status.Code.INVALID_ARGUMENT|null[0]
enum entry NOT_FOUND // kotlinx.rpc.grpc/Status.Code.NOT_FOUND|null[0]
enum entry OK // kotlinx.rpc.grpc/Status.Code.OK|null[0]
enum entry OUT_OF_RANGE // kotlinx.rpc.grpc/Status.Code.OUT_OF_RANGE|null[0]
enum entry PERMISSION_DENIED // kotlinx.rpc.grpc/Status.Code.PERMISSION_DENIED|null[0]
enum entry RESOURCE_EXHAUSTED // kotlinx.rpc.grpc/Status.Code.RESOURCE_EXHAUSTED|null[0]
enum entry UNAUTHENTICATED // kotlinx.rpc.grpc/Status.Code.UNAUTHENTICATED|null[0]
enum entry UNAVAILABLE // kotlinx.rpc.grpc/Status.Code.UNAVAILABLE|null[0]
enum entry UNIMPLEMENTED // kotlinx.rpc.grpc/Status.Code.UNIMPLEMENTED|null[0]
enum entry UNKNOWN // kotlinx.rpc.grpc/Status.Code.UNKNOWN|null[0]

final val entries // kotlinx.rpc.grpc/Status.Code.entries|#static{}entries[0]
final fun <get-entries>(): kotlin.enums/EnumEntries<kotlinx.rpc.grpc/Status.Code> // kotlinx.rpc.grpc/Status.Code.entries.<get-entries>|<get-entries>#static(){}[0]
final val value // kotlinx.rpc.grpc/Status.Code.value|{}value[0]
final fun <get-value>(): kotlin/Int // kotlinx.rpc.grpc/Status.Code.value.<get-value>|<get-value>(){}[0]
final val valueAscii // kotlinx.rpc.grpc/Status.Code.valueAscii|{}valueAscii[0]
final fun <get-valueAscii>(): kotlin/ByteArray // kotlinx.rpc.grpc/Status.Code.valueAscii.<get-valueAscii>|<get-valueAscii>(){}[0]

final fun valueOf(kotlin/String): kotlinx.rpc.grpc/Status.Code // kotlinx.rpc.grpc/Status.Code.valueOf|valueOf#static(kotlin.String){}[0]
final fun values(): kotlin/Array<kotlinx.rpc.grpc/Status.Code> // kotlinx.rpc.grpc/Status.Code.values|values#static(){}[0]
}
}

abstract interface kotlinx.rpc.grpc/StatusRuntimeException { // kotlinx.rpc.grpc/StatusRuntimeException|null[0]
abstract val status // kotlinx.rpc.grpc/StatusRuntimeException.status|{}status[0]
abstract fun <get-status>(): kotlinx.rpc.grpc/Status // kotlinx.rpc.grpc/StatusRuntimeException.status.<get-status>|<get-status>(){}[0]
}

abstract class <#A: kotlinx.rpc.grpc/ManagedChannelBuilder<#A>> kotlinx.rpc.grpc/ManagedChannelBuilder { // kotlinx.rpc.grpc/ManagedChannelBuilder|null[0]
constructor <init>() // kotlinx.rpc.grpc/ManagedChannelBuilder.<init>|<init>(){}[0]

final fun usePlaintext(): #A // kotlinx.rpc.grpc/ManagedChannelBuilder.usePlaintext|usePlaintext(){}[0]
}

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

abstract class kotlinx.rpc.grpc/ManagedChannelPlatform { // kotlinx.rpc.grpc/ManagedChannelPlatform|null[0]
abstract class kotlinx.rpc.grpc/ManagedChannelPlatform : kotlinx.rpc.grpc.internal/GrpcChannel { // kotlinx.rpc.grpc/ManagedChannelPlatform|null[0]
constructor <init>() // kotlinx.rpc.grpc/ManagedChannelPlatform.<init>|<init>(){}[0]
}

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

final class kotlinx.rpc.grpc/GrpcTrailers { // kotlinx.rpc.grpc/GrpcTrailers|null[0]
constructor <init>() // kotlinx.rpc.grpc/GrpcTrailers.<init>|<init>(){}[0]

final fun merge(kotlinx.rpc.grpc/GrpcTrailers) // kotlinx.rpc.grpc/GrpcTrailers.merge|merge(kotlinx.rpc.grpc.GrpcTrailers){}[0]
}

final class kotlinx.rpc.grpc/ServerServiceDefinition { // kotlinx.rpc.grpc/ServerServiceDefinition|null[0]
constructor <init>() // kotlinx.rpc.grpc/ServerServiceDefinition.<init>|<init>(){}[0]

final fun getMethods(): kotlin.collections/Collection<kotlinx.rpc.grpc.internal/ServerMethodDefinition<*, *>> // kotlinx.rpc.grpc/ServerServiceDefinition.getMethods|getMethods(){}[0]
final fun getServiceDescriptor(): kotlinx.rpc.grpc.internal/ServiceDescriptor // kotlinx.rpc.grpc/ServerServiceDefinition.getServiceDescriptor|getServiceDescriptor(){}[0]
}

final class kotlinx.rpc.grpc/Status { // kotlinx.rpc.grpc/Status|null[0]
constructor <init>() // kotlinx.rpc.grpc/Status.<init>|<init>(){}[0]

final fun getCause(): kotlin/Throwable? // kotlinx.rpc.grpc/Status.getCause|getCause(){}[0]
final fun getDescription(): kotlin/String? // kotlinx.rpc.grpc/Status.getDescription|getDescription(){}[0]
}

final class kotlinx.rpc.grpc/StatusException : kotlin/Exception { // kotlinx.rpc.grpc/StatusException|null[0]
constructor <init>(kotlinx.rpc.grpc/Status) // kotlinx.rpc.grpc/StatusException.<init>|<init>(kotlinx.rpc.grpc.Status){}[0]
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]

final fun getStatus(): kotlinx.rpc.grpc/Status // kotlinx.rpc.grpc/StatusException.getStatus|getStatus(){}[0]
final fun getTrailers(): kotlinx.rpc.grpc/GrpcTrailers? // kotlinx.rpc.grpc/StatusException.getTrailers|getTrailers(){}[0]
}

final class kotlinx.rpc.grpc/StatusRuntimeException : kotlin/RuntimeException { // kotlinx.rpc.grpc/StatusRuntimeException|null[0]
constructor <init>(kotlinx.rpc.grpc/Status) // kotlinx.rpc.grpc/StatusRuntimeException.<init>|<init>(kotlinx.rpc.grpc.Status){}[0]
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]

final fun getStatus(): kotlinx.rpc.grpc/Status // kotlinx.rpc.grpc/StatusRuntimeException.getStatus|getStatus(){}[0]
final fun getTrailers(): kotlinx.rpc.grpc/GrpcTrailers? // kotlinx.rpc.grpc/StatusRuntimeException.getTrailers|getTrailers(){}[0]
}

final val kotlinx.rpc.grpc/code // kotlinx.rpc.grpc/code|@kotlinx.rpc.grpc.Status{}code[0]
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]

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]
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]
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]
final fun kotlinx.rpc.grpc/StatusRuntimeException(kotlinx.rpc.grpc/Status): kotlinx.rpc.grpc/StatusRuntimeException // kotlinx.rpc.grpc/StatusRuntimeException|StatusRuntimeException(kotlinx.rpc.grpc.Status){}[0]
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]
1 change: 1 addition & 0 deletions grpc/grpc-core/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ kotlin {
commonTest {
dependencies {
implementation(libs.kotlin.test)
implementation(libs.coroutines.test)
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
/*
* Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
*/

package kotlinx.rpc.grpc

@Suppress("RedundantConstructorKeyword")
public expect class GrpcTrailers constructor() {
public fun merge(trailers: GrpcTrailers)
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@

package kotlinx.rpc.grpc

import kotlinx.rpc.grpc.internal.GrpcChannel
import kotlin.time.Duration

/**
* Same as [ManagedChannel], but is platform-exposed.
*/
public expect abstract class ManagedChannelPlatform
public expect abstract class ManagedChannelPlatform : GrpcChannel

/**
* A virtual connection to a conceptual endpoint, to perform RPCs.
Expand Down Expand Up @@ -66,7 +67,9 @@ public interface ManagedChannel {
/**
* Builder class for [ManagedChannel].
*/
public expect abstract class ManagedChannelBuilder<T : ManagedChannelBuilder<T>>
public expect abstract class ManagedChannelBuilder<T : ManagedChannelBuilder<T>> {
public fun usePlaintext(): T
}

internal expect fun ManagedChannelBuilder(hostname: String, port: Int): ManagedChannelBuilder<*>
internal expect fun ManagedChannelBuilder(target: String): ManagedChannelBuilder<*>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,20 @@

package kotlinx.rpc.grpc

import kotlinx.rpc.grpc.internal.ServerMethodDefinition
import kotlinx.rpc.grpc.internal.ServiceDescriptor
import kotlinx.rpc.internal.utils.InternalRpcApi

/**
* Definition of a service to be exposed via a Server.
*/
public expect class ServerServiceDefinition
public expect class ServerServiceDefinition {
public fun getServiceDescriptor(): ServiceDescriptor
public fun getMethods(): Collection<ServerMethodDefinition<*, *>>
}

@InternalRpcApi
public expect fun serverServiceDefinition(
serviceDescriptor: ServiceDescriptor,
methods: Collection<ServerMethodDefinition<*, *>>
): ServerServiceDefinition
Loading
Loading