ストリームデータ処理基盤 uCosminexus Stream Data Platform - Application Framework アプリケーション開発ガイド

[目次][索引][前へ][次へ]

9.3.3 インプロセス連携送受信制御APの内容

ここでは,「9.3.1 インプロセス連携カスタムアダプターのサンプルプログラムの実行手順」の手順4.でコンパイルしたインプロセス連携送受信制御AP(Inprocess_Main.java)の内容について説明します。このプログラムは,タプルを送受信するアプリケーションを制御する,メインプログラムです。

ソースコードを次に示します。なお,「//【1】」「//〜【1】」などのコメントは,以降の説明の番号と対応しています(これらのコメントは,実際のサンプルプログラムには記載されていません。また,一部コメントの説明は実際のサンプルプログラムと異なります)。

サンプルプログラムの内容

 
package samples;
 
import jp.co.Hitachi.soft.sdp.api.SDPConnector;
import jp.co.Hitachi.soft.sdp.api.inprocess.StreamInprocessUP;
import jp.co.Hitachi.soft.sdp.common.exception.SDPClientException;
 
public class Inprocess_Main implements StreamInprocessUP {
 
  // 受信用スレッドオブジェクト
  Inprocess_Receiver receiver = null;
  
  // 送信用スレッドオブジェクト
  Inprocess_Sender sender = null;
  
  // SDPサーバとのコネクター
  SDPConnector connector = null;
  
  //【1】
  public void execute(SDPConnector sc) {
  //〜【1】
  
    this.connector = sc;
  
    //【2】
    // ポーリング用受信スレッドを開始します
    this.receiver = new Inprocess_Receiver(sc);
    receiver.start();
    
    // 送信スレッドを開始します
    this.sender = new Inprocess_Sender(sc);
    sender.start();
    //〜【2】
  }
  
  //【1】
  public void stop() {
  //〜【1】
  
    try {
      //【3】
      // 送信スレッドを停止します
      if(sender != null) {
        sender.terminate();
        sender.join();
      }
      // 受信スレッドを停止します
      if(receiver != null){
        receiver.terminate();
        receiver.join();
      }
    } catch (InterruptedException e) {
      System.err.println("Main    : " + e.getMessage());
    }
  
    try {
      // コネクターを閉じます
      connector.close();
    } catch (SDPClientException sce) {
      System.err.println("Main    : " + sce.getMessage());
    }
    //〜【3】
  }
}
 

ソースコードの内容について説明します。

  1. このアプリケーションのInprocess_Mainクラスは,StreamInprocessUPインタフェースを実装したクラスです。このため,StreamInprocessUPインタフェースで定義されているexecuteメソッドとstopメソッドを実装します。
  2. アプリケーション開始時に実行されるexecuteメソッドで,データ受信スレッドとデータ送信スレッドを開始します。
  3. アプリケーション停止時に実行されるstopメソッドでは,2.で開始したデータ受信スレッドとデータ送信スレッドを停止します。その後,SDPConnector型オブジェクトのcloseメソッドを呼び出して,SDPConnectorを閉じます。