パッケージ org.piax.gtrans

クラス Peer

java.lang.Object
org.piax.gtrans.Peer
すべての実装されたインタフェース:
Closeable, AutoCloseable

public class Peer
extends Object
implements Closeable
通信ノードとしてのピアを表現するクラス。以下の機能を有する。
  • BaseTransportおよびBaseChannelTransportを生成する。
  • このピア内で生成されたすべてのTransportを管理し、このPeerの終了時に生きているTransportを 自動的に終了させる。
  • LLNetに対するMSkipGraphのように、OverlayのbaseとなるOverlayを管理する。
  • RPCInvokerを含むRPCの対象オブジェクトを管理する。
  • フィールド詳細

  • コンストラクタの詳細

  • メソッドの詳細

    • getInstance

      public static Peer getInstance​(PeerId peerId)
      Peerオブジェクトを取得する。

      初めてPeerオブジェクトがこのメソッド呼び出しにより取得される場合、または、すでに取得された Peerオブジェクトがfinメソッドの呼び出しにより、終了している場合は、新しくPeerオブジェクトが生成される。

      パラメータ:
      peerId - peerId
      戻り値:
      Peerオブジェクト
    • fin

      public void fin()
      このPeerオブジェクトを終了させる。 すべての未終了のTransportはこの時点で自動的に終了する。
    • getPeerId

      public PeerId getPeerId()
    • getStatusRepo

      public StatusRepo getStatusRepo() throws IOException
      例外:
      IOException
    • getIdResolver

      public IdResolver getIdResolver()
    • getBaseTransportMgr

      public BaseTransportMgr getBaseTransportMgr()
    • addBaseTransportGenerator

      public void addBaseTransportGenerator​(BaseTransportGenerator generator)
      BaseTransportの生成コードをPeerに登録する。

      このメソッドは、新しくPeerLocatorとそのドライバであるRawTransportが追加された時に、 Peerに対して、BaseTransportの生成方法を教える際に用いる。

      パラメータ:
      generator - BaseTransportの生成コード
    • addFirstBaseTransportGenerator

      public void addFirstBaseTransportGenerator​(BaseTransportGenerator generator)
    • newBaseTransport

      public <E extends Endpoint> Transport<E> newBaseTransport​(E locator) throws IOException, IdConflictException
      指定されたPeerLocatorをEndpointとして持つBaseTransportを生成する。

      BaseTransportの生成はデフォルトの設定で行われる。また、 生成後のBaseTransportのTransportIdにはデフォルトの値がセットされる。 BaseTransportの生成手段がない場合はnullが返される。

      型パラメータ:
      E - the type of peer locator.
      パラメータ:
      locator - PeerLocator
      戻り値:
      指定されたPeerLocatorをEndpointとして持つBaseTransport
      例外:
      IOException - BaseTransportの生成中にI/Oエラーが発生した場合
      IdConflictException - 指定したtransIdが他とコンフリクトを起こした場合
    • newBaseTransport

      public <E extends Endpoint> Transport<E> newBaseTransport​(String desc, E locator) throws IOException, IdConflictException
      指定されたPeerLocatorをEndpointとして持つBaseTransportを生成する。

      descはBaseTransportを生成する際に補助情報として用いられるが、これは、 BaseTransportを生成するロジック内で解釈される文字列情報であり、PeerLocator毎に規定される。 descにnullがセットされた場合はデフォルト値として解釈される。 生成後のBaseTransportのTransportIdにはデフォルトの値がセットされる。 BaseTransportの生成手段がない場合はnullが返される。

      型パラメータ:
      E - the type of peer locator.
      パラメータ:
      desc - BaseTransportを生成する際に与える補助情報
      locator - PeerLocator
      戻り値:
      指定されたPeerLocatorをEndpointとして持つBaseTransport
      例外:
      IOException - BaseTransportの生成中にI/Oエラーが発生した場合
      IdConflictException - 指定したtransIdが他とコンフリクトを起こした場合
    • newBaseTransport

      public <E extends Endpoint> Transport<E> newBaseTransport​(String desc, TransportId transId, E locator) throws IOException, IdConflictException
      指定されたPeerLocatorをEndpointとして持つBaseTransportを生成する。

      descはBaseTransportを生成する際に補助情報として用いられるが、これは、 BaseTransportを生成するロジック内で解釈される文字列情報であり、PeerLocator毎に規定される。 指定されたtransIdが、生成後のBaseTransportのTransportIdとしてセットされる。 descおよびtransIdにnullがセットされた場合はデフォルト値として解釈される。 BaseTransportの生成手段がない場合はnullが返される。

      型パラメータ:
      E - the type of peer locator.
      パラメータ:
      desc - BaseTransportを生成する際に与える補助情報
      transId - 生成後のBaseTransportにつけるTransportId
      locator - PeerLocator
      戻り値:
      指定されたPeerLocatorをEndpointとして持つBaseTransport
      例外:
      IOException - BaseTransportの生成中にI/Oエラーが発生した場合
      IdConflictException - 指定したtransIdが他とコンフリクトを起こした場合
    • newBaseChannelTransport

      public <E extends Endpoint> ChannelTransport<E> newBaseChannelTransport​(E locator) throws IOException, IdConflictException
      指定されたPeerLocatorをEndpointとして持つBaseChannelTransportを生成する。

      BaseChannelTransportの生成はデフォルトの設定で行われる。また、 生成後のBaseChannelTransportのTransportIdにはデフォルトの値がセットされる。 BaseChannelTransportの生成手段がない場合はnullが返される。

      型パラメータ:
      E - the type of peer locator.
      パラメータ:
      locator - PeerLocator
      戻り値:
      指定されたPeerLocatorをEndpointとして持つBaseTransport
      例外:
      IOException - BaseChannelTransportの生成中にI/Oエラーが発生した場合
      IdConflictException - 指定したtransIdが他とコンフリクトを起こした場合
    • newBaseChannelTransport

      public <E extends Endpoint> ChannelTransport<E> newBaseChannelTransport​(String desc, E locator) throws IOException, IdConflictException
      指定されたPeerLocatorをEndpointとして持つBaseChannelTransportを生成する。

      descはBaseChannelTransportを生成する際に補助情報として用いられるが、これは、 BaseChannelTransportを生成するロジック内で解釈される文字列情報であり、PeerLocator毎に規定される。 descにnullがセットされた場合はデフォルト値として解釈される。 生成後のBaseChannelTransportのTransportIdにはデフォルトの値がセットされる。 BaseChannelTransportの生成手段がない場合はnullが返される。

      型パラメータ:
      E - the type of peer locator.
      パラメータ:
      desc - base channel transport description.
      locator - the locator.
      戻り値:
      the peer locator.
      例外:
      IOException - BaseChannelTransportの生成中にI/Oエラーが発生した場合
      IdConflictException - 指定したtransIdが他とコンフリクトを起こした場合
    • newBaseChannelTransport

      public <E extends Endpoint> ChannelTransport<E> newBaseChannelTransport​(String desc, TransportId transId, E locator) throws IOException, IdConflictException
      指定されたPeerLocatorをEndpointとして持つBaseChannelTransportを生成する。

      descはBaseChannelTransportを生成する際に補助情報として用いられるが、これは、 BaseChannelTransportを生成するロジック内で解釈される文字列情報であり、PeerLocator毎に規定される。 指定されたtransIdが、生成後のBaseChannelTransportのTransportIdとしてセットされる。 descおよびtransIdにnullがセットされた場合はデフォルト値として解釈される。 BaseChannelTransportの生成手段がない場合はnullが返される。

      型パラメータ:
      E - the type of peer locator.
      パラメータ:
      desc - BaseChannelTransportを生成する際に与える補助情報
      transId - 生成後のBaseChannelTransportにつけるTransportId
      locator - PeerLocator
      戻り値:
      指定されたPeerLocatorをEndpointとして持つBaseChannelTransport
      例外:
      IOException - BaseChannelTransportの生成中にI/Oエラーが発生した場合
      IdConflictException - 指定したtransIdが他とコンフリクトを起こした場合
    • registerTransport

      public void registerTransport​(TransportIdPath transIdPath, Transport<?> trans) throws IdConflictException
      例外:
      IdConflictException
    • unregisterTransport

      public boolean unregisterTransport​(TransportIdPath transIdPath, Transport<?> trans)
    • getAllTransports

      public List<Transport<?>> getAllTransports()
      登録されたすべてのTransportのListを返す。
      戻り値:
      登録されたすべてのTransportのList
    • getTransport

      public Transport<?> getTransport​(TransportIdPath transIdPath)
      指定されたTransportIdPathを持つTransportを返す。存在しない場合はnullが返される。
      パラメータ:
      transIdPath - TransportIdPath
      戻り値:
      TransportIdPathを持つTransport。存在しない場合はnull
    • getMatchedTransport

      public List<Transport<?>> getMatchedTransport​(TransportId... suffix)
      指定されたTransportId(複数可)をsuffixとして持つTransportのListを返す。
      パラメータ:
      suffix - suffixとして指定されたTransportId(複数可)
      戻り値:
      指定されたTransportId(複数可)をsuffixとして持つTransportのList
    • getMatchedTransport

      public List<Transport<?>> getMatchedTransport​(TransportIdPath suffix)
      指定されたTransportIdPathをsuffixとして持つTransportのListを返す。
      パラメータ:
      suffix - suffixとして指定されたTransportIdPath
      戻り値:
      指定されたTransportIdPathをsuffixとして持つTransportのList
    • genTransportTree

      public List<Peer.TransportTreeNode> genTransportTree()
    • printTransportTree

      public String printTransportTree()
    • registerBaseOverlay

      public void registerBaseOverlay​(TransportIdPath transIdPath)
    • unregisterBaseOverlay

      public boolean unregisterBaseOverlay​(TransportIdPath transIdPath)
    • getBaseOverlays

      public Set<TransportIdPath> getBaseOverlays()
    • registerRPCObject

      public void registerRPCObject​(ObjectId objId, Object obj) throws IdConflictException
      例外:
      IdConflictException
    • unregisterRPCObject

      public boolean unregisterRPCObject​(ObjectId objId, Object obj)
    • getRPCObject

      public Object getRPCObject​(ObjectId objId)
    • execute

      public void execute​(Runnable receiveTask) throws RejectedExecutionException
      例外:
      RejectedExecutionException
    • concatPeerId2ThreadName

      public void concatPeerId2ThreadName()
    • toString

      public String toString()
      オーバーライド:
      toString クラス内 Object
    • close

      public void close() throws IOException
      定義:
      close インタフェース内 AutoCloseable
      定義:
      close インタフェース内 Closeable
      例外:
      IOException