All Downloads are FREE. Search and download functionalities are using the official Maven repository.

main.misk.grpc.reflect.ServerReflectionApi.kt Maven / Gradle / Ivy

There is a newer version: 2024.09.17.200749-4708422
Show newest version
package misk.grpc.reflect

import com.squareup.wire.MessageSink
import com.squareup.wire.MessageSource
import com.squareup.wire.reflector.SchemaReflector
import grpc.reflection.v1alpha.ServerReflectionRequest
import grpc.reflection.v1alpha.ServerReflectionResponse
import grpc.reflection.v1alpha.ServerReflectionServerReflectionInfoBlockingServer
import misk.security.authz.Unauthenticated
import misk.web.actions.WebAction
import jakarta.inject.Inject

// https://raw.githubusercontent.com/grpc/grpc/master/src/proto/grpc/reflection/v1alpha/reflection.proto
class ServerReflectionApi @Inject constructor(
  private val reflector: SchemaReflector,
) : ServerReflectionServerReflectionInfoBlockingServer, WebAction {
  @Unauthenticated
  override fun ServerReflectionInfo(
    requests: MessageSource,
    responses: MessageSink
  ) {
    requests.use {
      responses.use {
        while (true) {
          val serverReflectionRequest = requests.read() ?: break
          responses.write(reflector.process(serverReflectionRequest))
        }
      }
    }
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy