본문 바로가기

Android/gRPC

Android gRPC Client 구현(2) - Connection

728x90

gRPC ManagedChannel Builder 를 이용하여 gRPC stub 을 구성한다.

각 서버 상황에 맞게 Authorization Key, RequestId 를 Header 로 설정한다.

 

//async stub - stream response 를 처리하는 stub
val stub: XXXServiceGrpc.XXXServiceStub = if (!apikey.isNullOrEmpty()) {
        val header = Metadata()
        val key = Metadata.Key.of("authorization", Metadata.ASCII_STRING_MARSHALLER)
        header.put(key, "$apikey")
        MetadataUtils.attachHeaders(XXXServiceGrpc.newStub(channel), header)
    } else {
        XXXServiceGrpc.newStub(channel)
    }

//blocking stub - unary response 를 처리하는 stub
val ttsStub: XXXServiceGrpc.XXXServiceBlockingStub = if (!apikey.isNullOrEmpty()) {
    val header = Metadata()
    val key = Metadata.Key.of("authorization", Metadata.ASCII_STRING_MARSHALLER)
    header.put(key, "$apikey")
    MetadataUtils.attachHeaders(XXXServiceGrpc.newBlockingStub(channel), header)
} else {
    XXXerviceGrpc.newBlockingStub(channel)
}

 

- stub 의 종류

1. newStub : async call 로 호출되는 비동기 stub. stream response 처리 시 사용 된다.

2. blockingStub : sync call 로 호출되는  stub. unary response 처리 시 사용된다.

728x90

'Android > gRPC' 카테고리의 다른 글

[M1/M2] Android gRPC 적용 가이드  (0) 2024.04.26
Android gRPC Client 구현(1) - gradle 환경 설정  (0) 2021.10.01