パッケージ org.piax.gtrans.tsd

クラス TSD<T>

java.lang.Object
org.piax.gtrans.tsd.TSD<T>
直系の既知のサブクラス:
BroadcastTSD, MulticastTSD

public abstract class TSD<T>
extends Object
Transport Service Discovery (TSD) のためのテンプレートクラス。

TSDは、mDNS のプロトコルに従って、近傍のピアとサービス情報の交換を行う仕組みを提供する。 サービス情報として、ピアのアドレス情報、つまり peerId, endpoint の組を交換することが主な用途であるが、 これ以外にも一般のオブジェクトを扱うことができる。

このようにTSDは汎用性を持った近傍との情報交換のクラスであるが、交換したいサービス毎にインスタンスを生成 することは非効率であるため、サービスを交換したいアプリが共通のTSDを使うようにしている。 サービスを交換するアプリの識別にはObjectIdを用いる。交換されるサービス情報にはこのObjectIdが付与 されて、同じObjectIdを持つリモートアプリに通知される。

TSDを使ってピア情報を交換する代表的なアプリに、gtransのDiscoverableがある。Bluetooth以外の TCP/IP通信はTSDを使って、Discoverable にしている。

TSDの実装には、UDPのマルチキャストを使う MulticastTSDとブロードキャストを使うBroadcastTSDの2つがある。

  • フィールド詳細

    • timer

      protected static final Timer timer
      schedule timer for TSD
  • コンストラクタの詳細

    • TSD

      public TSD()
  • メソッドの詳細

    • fin

      public abstract void fin()
    • setDiscoveryListener

      public void setDiscoveryListener​(PeerId peerId, ObjectId receiver, TSDListener listener)
    • getDiscoveryListener

      public TSDListener getDiscoveryListener​(PeerId peerId, ObjectId receiver)
    • advertise

      protected abstract void advertise​(org.piax.gtrans.tsd.ServiceInfo<T> info) throws IOException
      ServiceInfoを広告する。 このメソッドは下位層で実装する。
      パラメータ:
      info - the information to advertise.
      例外:
      IOException - an I/O error.
    • registerService

      public void registerService​(PeerId peerId, ObjectId receiver, T info)
    • unregisterService

      public void unregisterService​(PeerId peerId, ObjectId receiver, T info)
    • unregisterAllServices

      public void unregisterAllServices​(PeerId peerId, ObjectId receiver)
    • advertiseAll

      protected void advertiseAll​(PeerId peerId, ObjectId receiver)
      peerId, receiverの区分で登録されているすべてのlocalServiceを広告する。
      パラメータ:
      peerId - the peer id.
      receiver - the object id of the receiver.
    • scheduleDiscovery

      public void scheduleDiscovery​(PeerId peerId, ObjectId receiver, long delay, long period)
      peerId, receiverの区分で、discoveryTasksのタイマー登録をする。
      パラメータ:
      peerId - the peer id.
      receiver - the object id of the receiver.
      delay - the delay to start execution.
      period - the period to execute.
    • cancelDiscovery

      public void cancelDiscovery​(PeerId peerId, ObjectId receiver)
      peerId, receiverの区分でセットしたタイマーをキャンセルする。
      パラメータ:
      peerId - the peer id.
      receiver - the object id of the receiver.
    • found

      protected void found​(org.piax.gtrans.tsd.ServiceInfo<T> serv)
      ServiceInfoが発見されたことを通知する。 このメソッドは下位層から呼ばれる。
      パラメータ:
      serv - the service info.
    • checkDiscarding

      protected void checkDiscarding​(PeerId peerId, ObjectId receiver)
      削除タイミングをTSDListenerに通知する。
      パラメータ:
      peerId - the peer id.
      receiver - receiver object id.