@@ -9,8 +9,8 @@ import io.github.wechaty.grpc.puppet.Contact.ContactPayloadRequest
9
9
import io .github .wechaty .grpc .puppet .{Base , Contact }
10
10
import io .github .wechaty .grpc .puppet .Event .EventRequest
11
11
import io .grpc .stub .ClientCalls .asyncUnaryCall
12
- import io .grpc .stub .StreamObserver
13
- import io .grpc .{ClientCall , ManagedChannel , ManagedChannelBuilder }
12
+ import io .grpc .stub .{ ClientCalls , StreamObserver }
13
+ import io .grpc .{ClientCall , ManagedChannel , ManagedChannelBuilder , MethodDescriptor }
14
14
import wechaty .hostie .PuppetHostie
15
15
import wechaty .puppet .schemas .Contact .ContactPayload
16
16
@@ -139,14 +139,14 @@ trait GrpcSupport {
139
139
}
140
140
}
141
141
142
- type ClientCall [ReqT ,RespT ]= (ReqT ,StreamObserver [RespT ])=> Unit
143
142
type ClientCallback [RespT ,T ]= RespT => T
144
- protected def asyncCall [ReqT ,RespT ](call : ClientCall [ReqT , RespT ], req : ReqT ): Unit = {
143
+ protected def asyncCall [ReqT ,RespT ](call : MethodDescriptor [ReqT , RespT ], req : ReqT ): Unit = {
145
144
asyncCallback(call,req)(resp=> resp)
146
145
}
147
- protected def asyncCallback [ReqT ,RespT ,T ](call : ClientCall [ReqT , RespT ], req : ReqT )(callback: ClientCallback [RespT ,T ]): Future [T ]= {
146
+ def asyncCallback [ReqT , RespT ,T ](callMethod : MethodDescriptor [ReqT , RespT ], req : ReqT )(callback: ClientCallback [RespT ,T ]): Future [T ]= {
147
+ val call = channel.newCall(callMethod,asyncGrpcClient.getCallOptions)
148
148
val promise = Promise [T ]
149
- call( req,new StreamObserver [RespT ] {
149
+ ClientCalls .asyncUnaryCall(call, req,new StreamObserver [RespT ] {
150
150
override def onNext (value : RespT ): Unit = {
151
151
val result = callback(value)
152
152
promise.success(result)
0 commit comments