Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
9 changed files
with
164 additions
and
36 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
43 changes: 43 additions & 0 deletions
43
dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/GrpcPbGreeterImpl.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
package org.apache.dubbo.sample.tri; | ||
|
||
import io.grpc.stub.StreamObserver; | ||
|
||
public class GrpcPbGreeterImpl extends PbGreeterGrpc.PbGreeterImplBase { | ||
private final PbGreeter delegate; | ||
|
||
public GrpcPbGreeterImpl(PbGreeter delegate) { | ||
this.delegate = delegate; | ||
} | ||
|
||
@Override | ||
public void greet(GreeterRequest request, StreamObserver<GreeterReply> responseObserver) { | ||
try { | ||
final GreeterReply response = delegate.Greet(request); | ||
responseObserver.onNext(response); | ||
responseObserver.onCompleted(); | ||
} catch (Throwable t) { | ||
responseObserver.onError(t); | ||
} | ||
} | ||
|
||
@Override | ||
public void greetException(GreeterRequest request, StreamObserver<GreeterReply> responseObserver) { | ||
try { | ||
final GreeterReply response = delegate.GreetException(request); | ||
responseObserver.onNext(response); | ||
responseObserver.onCompleted(); | ||
} catch (Throwable t) { | ||
responseObserver.onError(t); | ||
} | ||
} | ||
|
||
@Override | ||
public StreamObserver<GreeterRequest> greetStream(StreamObserver<GreeterReply> responseObserver) { | ||
return new GrpcStreamObserverAdapter<>(delegate.GreetStream(new StreamObserverAdapter<>(responseObserver))); | ||
} | ||
|
||
@Override | ||
public void greetServerStream(GreeterRequest request, StreamObserver<GreeterReply> responseObserver) { | ||
delegate.GreetServerStream(request, new StreamObserverAdapter<>(responseObserver)); | ||
} | ||
} |
40 changes: 40 additions & 0 deletions
40
dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/GrpcProvider.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
package org.apache.dubbo.sample.tri; | ||
|
||
import io.grpc.Server; | ||
import io.grpc.ServerBuilder; | ||
|
||
import java.io.IOException; | ||
import java.util.concurrent.TimeUnit; | ||
|
||
public class GrpcProvider { | ||
public static void main(String[] args) throws IOException, InterruptedException { | ||
final Server server = ServerBuilder.forPort(50051) | ||
.addService(new GrpcPbGreeterImpl(new PbGreeterImpl())) | ||
.build(); | ||
server.start(); | ||
Runtime.getRuntime().addShutdownHook(new Thread() { | ||
@Override | ||
public void run() { | ||
// Start graceful shutdown | ||
server.shutdown(); | ||
try { | ||
// Wait for RPCs to complete processing | ||
if (!server.awaitTermination(30, TimeUnit.SECONDS)) { | ||
// That was plenty of time. Let's cancel the remaining RPCs | ||
server.shutdownNow(); | ||
// shutdownNow isn't instantaneous, so give a bit of time to clean resources up | ||
// gracefully. Normally this will be well under a second. | ||
server.awaitTermination(5, TimeUnit.SECONDS); | ||
} | ||
} catch (InterruptedException ex) { | ||
server.shutdownNow(); | ||
} | ||
} | ||
}); | ||
// This would normally be tied to the service's dependencies. For example, if HostnameGreeter | ||
// used a Channel to contact a required service, then when 'channel.getState() == | ||
// TRANSIENT_FAILURE' we'd want to set NOT_SERVING. But HostnameGreeter has no dependencies, so | ||
// hard-coding SERVING is appropriate. | ||
server.awaitTermination(); | ||
} | ||
} |
27 changes: 27 additions & 0 deletions
27
...o-samples-triple/src/test/java/org/apache/dubbo/sample/tri/GrpcStreamObserverAdapter.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
package org.apache.dubbo.sample.tri; | ||
|
||
|
||
import io.grpc.stub.StreamObserver; | ||
|
||
public class GrpcStreamObserverAdapter<T> implements StreamObserver<T> { | ||
private final org.apache.dubbo.common.stream.StreamObserver<T> delegate; | ||
|
||
public GrpcStreamObserverAdapter(org.apache.dubbo.common.stream.StreamObserver<T> delegate) { | ||
this.delegate = delegate; | ||
} | ||
|
||
@Override | ||
public void onNext(T data) { | ||
delegate.onNext(data); | ||
} | ||
|
||
@Override | ||
public void onError(Throwable throwable) { | ||
delegate.onError(throwable); | ||
} | ||
|
||
@Override | ||
public void onCompleted() { | ||
delegate.onCompleted(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
26 changes: 26 additions & 0 deletions
26
dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/StreamObserverAdapter.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
package org.apache.dubbo.sample.tri; | ||
|
||
import org.apache.dubbo.common.stream.StreamObserver; | ||
|
||
public class StreamObserverAdapter<T> implements StreamObserver<T> { | ||
private final io.grpc.stub.StreamObserver<T> delegate; | ||
|
||
public StreamObserverAdapter(io.grpc.stub.StreamObserver<T> delegate) { | ||
this.delegate = delegate; | ||
} | ||
|
||
@Override | ||
public void onNext(T data) { | ||
delegate.onNext(data); | ||
} | ||
|
||
@Override | ||
public void onError(Throwable throwable) { | ||
delegate.onError(throwable); | ||
} | ||
|
||
@Override | ||
public void onCompleted() { | ||
delegate.onCompleted(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters