35738


NanoHTTPDを使っています。

`public Response serve(IHTTPSession session)`の中で、  
コールバックメソッドを実行して、その結果が帰ってきたら、値を返却したいのですが、どうすれば出来るでしょうか？

[code]

    public Response serve(IHTTPSession session) {
      命令実行(); // 完了後、コールバック関数が呼ばれる
      return;    //←　ここでレスポンスを返却したくないのですが、返却してしまいます。
    }
    
    コールバック関数() {
      // ここでレスポンスを返却したいのですが、返却できません。
    }
    
[/code]

方法をご存じの方お教えください。


CC BY-SA 3.0
2017-06-18T14:18:53.470
35684
2017-06-20T04:38:37.917
2017-06-18T15:24:04.050
3068
23878
question
android java
NanoHTTPD を使って、コールバックの結果を返却したい


現状serve()はreturnでresponseを返すものしか用意されていないので、  
同期制御を行うしかないと思います。

実装イメージとしては以下です。

[code]

    public Response serve(IHTTPSession session) {
      命令実行(); // 非同期にてコールバック関数が呼ばれる
      synchronized (syncToken)
      {
          try {
              syncToken.wait(); //notifyされるまでwaitする
          } catch (InterruptedException e) {
              e.printStackTrace();
          }
      }
      result = hoge.getXXXXX(); //コールバック関数から結果受け取り
      return new Response(result);
    }
    
    コールバック関数() {
    
      ～処理～
    
      hoge.setXXXX(result); //serveへ結果渡し
      synchronized(syncToken){
         syncToken.notify(); //wait解除
      }
    }
    
[/code]

事前にsyncTokenは共有しておく必要があります。


CC BY-SA 3.0
2017-06-20T04:38:37.917
35738
2017-06-20T04:38:37.917
19716
35684
answer