总体而言,我希望扩展robocode以注入仅在服务器调用上进行的服务器。
我可以按照快速入门示例创建 grpc 服务器,并发送/接收请求。但是,服务器是一个静态对象,我一生都无法弄清楚如何从服务器传递实例化对象。
这是我正在尝试做的一些伪代码。
public class Battle {
private boolean paused;
public void pause() {
this.paused = ! this.paused;
}
public Battle() {
BattleServer foo = new BattleServer();
foo.start() // Starts GRPC server in a new thread.
}
public void doTurn() {
if( !this.paused) {
// do turn logic
}
}
}
// Skipped some implementation logic.
static class BattleServer extends BattleServer.GreeterImplBase {
@Override
public void step(StepRequest req, StreamObserver<StepReply> responseObserver) {
StepReply reply = StepReply.newBuilder().setMessage("ok").build();
responseObserver.onNext(reply);
responseObserver.onCompleted();
// I want to call
battle.pause()
}
}
如何pause
从 中调用该方法BattleServer
?我应该在这里遵循一些模式吗?我需要实现自己的 GRPC 服务器吗?我对多线程编程非常不熟悉,查看了互斥锁,但我仍然必须访问该对象,并且互斥锁对象在静态范围内不可用。
坦率地说,我有点卡住了,任何关于进一步阅读或概念的方向都绝对值得赞赏。