コード例 #1
0
  @Override
  protected void channelRead0(ChannelHandlerContext ctx, Routed routed) throws Exception {
    if (localJobManagerAddressFuture.isCompleted()) {
      if (localJobManagerAddress == null) {
        localJobManagerAddress = Await.result(localJobManagerAddressFuture, timeout);
      }

      Option<Tuple2<ActorGateway, Integer>> jobManager = retriever.getJobManagerGatewayAndWebPort();

      if (jobManager.isDefined()) {
        Tuple2<ActorGateway, Integer> gatewayPort = jobManager.get();
        String redirectAddress =
            HandlerRedirectUtils.getRedirectAddress(localJobManagerAddress, gatewayPort);

        if (redirectAddress != null) {
          HttpResponse redirect =
              HandlerRedirectUtils.getRedirectResponse(redirectAddress, routed.path());
          KeepAliveWrite.flush(ctx, routed.request(), redirect);
        } else {
          respondAsLeader(ctx, routed, gatewayPort._1());
        }
      } else {
        KeepAliveWrite.flush(ctx, routed.request(), HandlerRedirectUtils.getUnavailableResponse());
      }
    } else {
      KeepAliveWrite.flush(ctx, routed.request(), HandlerRedirectUtils.getUnavailableResponse());
    }
  }