0

总体而言,我希望扩展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 服务器吗?我对多线程编程非常不熟悉,查看了互斥锁,但我仍然必须访问该对象,并且互斥锁对象在静态范围内不可用。

坦率地说,我有点卡住了,任何关于进一步阅读或概念的方向都绝对值得赞赏。

4

0 回答 0