ohymosj
クラス OhRelayPort

java.lang.Object
  拡張ohymosj.OhObject
      拡張ohymosj.OhPort
          拡張ohymosj.OhSenderPort
              拡張ohymosj.OhRelayPort
直系の既知のサブクラス:
OhRelayDouble, OhRelayFloat, OhRelayInt, OhRelayLong

public abstract class OhRelayPort
extends OhSenderPort

基本型中継端子モデルを表すクラスです。

抽象クラスです。

クラス OhRelayPort では、

を記憶し、 を定義しました。 送信元端子とは、この中継端子にデータを送ってくる側の端子です。 送信先端子とは、この中継端子から送られるデータを受けとる側の端子です。 OhRelayPort に接続できる送信元端子は1つだけです。 OhRelayPort には複数の送信先端子を接続できます。

The OhRelayPort class is a model of relay ports.

The OhRelayPort has a instance variable "_sender". "_sender" is used to store the sender which sends data packs to the current port.

Member functions for

are defined.

Only one port can be connected to the port for receiving data packs. More than one ports can be connected to the ports which sending data packs.

バージョン:
$Revision: 1.45 $ $Date: 2004/02/22 10:28:21 $
作成者:
satoh

フィールドの概要
protected  OhSenderPort _sender
           OhSenderPort 型にキャストされた送信元端子です。
 
クラス ohymosj.OhSenderPort から継承したフィールド
_bufferList, _commentString, _numberOfReceivers, _receiverArray
 
クラス ohymosj.OhObject から継承したフィールド
_className, _objectName, _objectNumber, _owner, NEWLINE
 
コンストラクタの概要
OhRelayPort()
           デフォルトコンストラクタは OhRelayPort.init(String, int) を実行しません。
OhRelayPort(java.lang.String aPortName, int aPortNum)
           基底クラス OhSenderPort のデフォルトコンストラクタを用い、 OhRelayPort.init(String, int) を用いて、 メンバ変数を以下の通り初期化します。
 
メソッドの概要
 boolean areYouReady()
           計算作業前の確認を行ないます。
 void calReq()
           中継端子への計算要求は送信元端子に転送します。
 boolean canYouGetData(OhTimePoint aTFrom, OhTimePoint aTTo)
           データ収録時刻の確認を行ないます。
abstract  java.lang.String dataType()
           中継するデータパックのデータ値の型を表す文字列を返します。
 boolean getDataPack(java.lang.Object[] aFormer, OhTimePoint _dataTime, java.lang.Object[] aLater)
           時刻指定によりデータパックを取得(受信)します。
 boolean getDataPack(java.lang.Object[] aFormer, OhTimePoint _dataTime, java.lang.Object[] aLater, char aMode)
           時刻指定によりデータパックを取得(受信)します。
 void getDataPackArray(OhArrayList[] aDpArray, int[] aNumOfDp)
           データパック配列リストを取得(受信)します。
 java.util.Vector getDctVec()
           _sender のデータ補間型ベクトルを取得します。
 OhTimePoint getNewestDataTime()
           最新のデータの記録時刻を返します。
 int getNumberOfDataPacks()
           データパックの個数(_numberOfDataPacks)を返します。
 OhTimePoint getOldestDataTime()
           最古のデータの記録時刻を返します。
 boolean init(java.lang.String aPortName, int aPortNum)
           オブジェクト名、オブジェクト番号を初期化します。
 void printConnection(java.io.PrintWriter aPw)
           接続情報を出力します。
 void printConnection(java.io.PrintWriter aPw, java.lang.String aHead)
           接続情報を出力します。
 void reduceDataPackStock()
           不要データパックを消去します。
 void setDataPackArray()
           デ−タパックの配列リストを設定します。
 boolean setSender(java.lang.Object aSender)
           送信元端子を設定します。
 
クラス ohymosj.OhSenderPort から継承したメソッド
canYouSwitch, getCommentString, getNecessaryTimeFrom, getNecessaryTimeTo, registerReceiver, setCommentString
 
クラス ohymosj.OhPort から継承したメソッド
canYouGetData, cPrint, create, getDataPack, getDataPack
 
クラス ohymosj.OhObject から継承したメソッド
getAbsName, getClassName, getObjectName, getObjectNumber, getOwner, getTopOwner, objCompare, objCompare, objCompare, oPrint, setOwner
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

_sender

protected OhSenderPort _sender
OhSenderPort 型にキャストされた送信元端子です。 必要なデータパックは、接続先である _sender から取得します。

The sender which sends data packs to this OhRelayPort casted to type OhSenderPort.

コンストラクタの詳細

OhRelayPort

public OhRelayPort()
デフォルトコンストラクタは OhRelayPort.init(String, int) を実行しません。 その結果、以下の設定となります。

  • _objectName : null
  • _objectNumber : -1
  • その他のメンバ変数に対する処理は引数つきコンストラクタと同じです。 この場合、OhRelayPort.init(String, int) を 用いてメンバ変数を初期化して下さい。


    OhRelayPort

    public OhRelayPort(java.lang.String aPortName,
                       int aPortNum)
                throws OhError
    基底クラス OhSenderPort のデフォルトコンストラクタを用い、 OhRelayPort.init(String, int) を用いて、 メンバ変数を以下の通り初期化します。

  • _className : "OhRelayPort"
  • _objectName : aPortName
  • _objectNumber : aPortNum
  • _owner : null
  • _sender : null
  • _bufferList : メモリに確保する。(接続作業用)
  • _receiverArray : null
  • _numberOfReceivers : -1
  • パラメータ:
    aPortName - a String value
    aPortNum - an int value
    メソッドの詳細

    dataType

    public abstract java.lang.String dataType()
    中継するデータパックのデータ値の型を表す文字列を返します。

    基底クラス OhSenderPort の抽象メソッドです。

    この OhRelayPort でも抽象メソッドとしておきます。 OhRelayPort の派生クラスで中継データパック型を表す文字列を返すように必ず定義して下さい。

    例えば、中継データパック型が "double" 型である派生クラスでは、

      public String dataaType() {
        return "double";
      }
     
    のように定義します。

    接続時には、接続する端子とこの端子のデータパック型が一致することを確認します。

     [RETURN]
      ・String -> 中継データパック型を表す文字列
     

    Returns the string which shows the type of data packs which are treated by this OhRelayPort.

    In derived classes of this class OhRelayPort, this funstion should be defined so that it returnts the datapack type string.

    定義:
    クラス OhSenderPort 内の dataType
    戻り値:
    a String value

    init

    public boolean init(java.lang.String aPortName,
                        int aPortNum)
                 throws OhError
    オブジェクト名、オブジェクト番号を初期化します。 引数つきコンストラクタで使用されます。

    Initialization.

    オーバーライド:
    クラス OhSenderPort 内の init
    パラメータ:
    aPortName - a String value
    aPortNum - an int value
    戻り値:
    a boolean value
    例外:
    OhError

    getDctVec

    public java.util.Vector getDctVec()
    _sender のデータ補間型ベクトルを取得します。

    Returns the data connection type of the "_sender".

    定義:
    クラス OhSenderPort 内の getDctVec
    戻り値:
    a Vector value

    setSender

    public boolean setSender(java.lang.Object aSender)
                      throws OhError
    送信元端子を設定します。

    送信元端子 _sender を aSender に設定し、true を返します。

    下記の場合はエラーメッセージを表示し、false を返します。

    • aSender が null の場合。
    • この端子の送信元端子 _sender が設定済みの場合。
    • この端子と aSender でデータパック型が異なる場合。
     [ARGUMENT]
      ・aSender -> Object 型にキャストされた送信元端子。
    
     [RETURN]
      ・true --> 送信元端子 _sender が正常に設定された場合。
      ・false -> aSender が null の場合。
                 この端子の送信元端子 _sender が設定済みの場合。
                 この端子と aSender でデータパック型が異なる場合。
     [ACCIDENT]
      ・aSender に OhPort 型変数が格納されていない場合。
     

    Sets the sender of this OhRelayPort to aSender (arg).

    [in] aSender - the sender casted to Object.

    Returns "true" if the setting was successfull. For the following cases, it returns "false".

    オーバーライド:
    クラス OhPort 内の setSender
    パラメータ:
    aSender - an Object value
    戻り値:
    a boolean value
    例外:
    OhError - if an error occurs

    areYouReady

    public boolean areYouReady()
    計算作業前の確認を行ないます。

    データパックを中継可能な状態であることを確認します。 _sender が設定されていれば _sender からデータパックを中継できます。 _numberOfReceivers が 0 以上ならば _receiverArray が設定済みで、 送信先端子にデータパックを送信できます。

     [RETURN]
      ・true --> _sender, _receiverArray が設定済みの場合。
      ・false -> _sender, _receiverArray の少なくとも一方が未設定の場合。
     

    Reports whether this OhRelayPort is ready or not. When "_sender" and "_numberOfReceivers" have been defined, it returns true, otherwise it returns false.

    オーバーライド:
    クラス OhSenderPort 内の areYouReady
    戻り値:
    a boolean value

    setDataPackArray

    public void setDataPackArray()
    デ−タパックの配列リストを設定します。

    基底クラス OhSenderPort の抽象メソッドです。 _sender にデータパック配列を設定するよう命令します。

    Orders the sender to create a data pack array.

    定義:
    クラス OhSenderPort 内の setDataPackArray

    getOldestDataTime

    public OhTimePoint getOldestDataTime()
    最古のデータの記録時刻を返します。

    Returns the oldest data time of the data stocked in the sender.

    定義:
    クラス OhPort 内の getOldestDataTime
    戻り値:
    an OhTimePoint value

    getNewestDataTime

    public OhTimePoint getNewestDataTime()
    最新のデータの記録時刻を返します。

    Returns the newest data time of the data stocked in the sender.

    定義:
    クラス OhPort 内の getNewestDataTime
    戻り値:
    an OhTimePoint value

    getNumberOfDataPacks

    public int getNumberOfDataPacks()
    データパックの個数(_numberOfDataPacks)を返します。

    Returns the number of data packs which stored in the sender.

    定義:
    クラス OhPort 内の getNumberOfDataPacks
    戻り値:
    an int value

    canYouGetData

    public boolean canYouGetData(OhTimePoint aTFrom,
                                 OhTimePoint aTTo)
    データ収録時刻の確認を行ないます。 つまり、取得可能データパックの確認を行ないます。

    基底クラス OhSenderPort の抽象メソッドです。

    _sender に問い合わせて aTFrom 以前から aTTo 以降までのデータパックが受信可能か確認します。 受信可能ならば true を返し、受信不可能なら false を返します。

    このメソッドは、送信先端子の canYouGetData(OhTimePoint, OhTimePoint) から呼び出されます。 これにより、送信先端子でデータパックを受信できるか確認できます。

     [ARGUMENT]
      ・aTFrom -> aTFrom 以前からデータパックが受信可能であることを確認する。
      ・aTTo ---> aTTo 以降までデータパックが受信可能であることを確認する。
    
     [RETURN]
      ・true ---> aTFrom 以前から aTTo 以降までのデータパックが中継可能な場合。
      ・false --> aTFrom 以前から aTTo 以降までのデータパックが中継不可能な場合。
    
     [ACCIDENT]
      ・接続前で、_sender が null の場合。
        (このメソッドは計算時に頻繁に用いられる可能性があるので敢えて _sender が null でないことを確認しませんでした。)
      ・_sender に OhPort 型以外の変数が格納されている場合。
     

    Reports whether this OhRelayPort can get the data from aTFrom (arg) to aTTo (arg).

    [in] aTFrom - start time [in] aTTo - end time

    定義:
    クラス OhSenderPort 内の canYouGetData
    パラメータ:
    aTFrom - an OhTimePoint value
    aTTo - an OhTimePoint value
    戻り値:
    a boolean value

    calReq

    public void calReq()
                throws OhCannotGetDataError,
                       OhError
    中継端子への計算要求は送信元端子に転送します。

    The calculation request to a relay port is transmitted to a send port.

    オーバーライド:
    クラス OhPort 内の calReq
    例外:
    OhCannotGetDataError - if an error occurs
    OhError - if an error occurs

    getDataPackArray

    public void getDataPackArray(OhArrayList[] aDpArray,
                                 int[] aNumOfDp)
    データパック配列リストを取得(受信)します。

    基底クラス OhSenderPort の抽象メソッドです。

    送信元端子 _sender からデータパック配列を受信します。

    第一引数 aDpArray の第一要素には Object 型にキャストされた OhDataPack 型変数の配列が格納され、 aNumOfDp の第一要素には aDpArray の要素数が格納されます。

    このメソッドは、送信先端子の getDataPackArray から呼び出されます。 これにより、送信先端子でデータパック配列を受信できます。

     [ARGUMENT]
      ・aDpArray -> 中継データパック配列を第一要素に格納する引数。
      ・aNumOfDp -> aDpArray の要素数を第一要素に格納する引数。
    
     [ACCIDENT]
      ・接続前で _sender が null の場合。
        (このメソッドは計算時に頻繁に用いられる可能性があるので敢えて _sender が null でないことを確認しませんでした。)
      ・_sender に OhPort 型以外の変数が格納されている場合。
     

    Get datapack array aDpArray (arg) and the number of datapacks aNumOfDp (arg) from the sender.

    定義:
    クラス OhSenderPort 内の getDataPackArray
    パラメータ:
    aDpArray - an OhArrayList[] value
    aNumOfDp - an int[] value

    getDataPack

    public boolean getDataPack(java.lang.Object[] aFormer,
                               OhTimePoint _dataTime,
                               java.lang.Object[] aLater,
                               char aMode)
    時刻指定によりデータパックを取得(受信)します。

    基底クラス OhSenderPort の抽象メソッドです。

    時刻を指定して _sender からデータパックを受信します。

    aFormer には、データ記録時刻が _dataTime 以前で _dataTime に最も近い収録データパックを受信、格納します。

    aLater には、データ記録時刻が _dataTime 以降で _dataTime に最も近い収録データパックを受信、格納します。

    aFlag は取得のモードを選択するためのオプションで、下記の通りです。

       ・"b"       aFormer, aLater の両方を必ず受信する。
                   受信できない場合は、両方とも null に設定する。
       ・"f"       aLater を受信できなくても、aFormer のみ受信する。
                   aLater を受信できない場合、null に設定する。
       ・"l"       aFormer を受信できなくても、aLater のみ取得する。
                   aFormer を受信できない場合、null に設定する。
       ・その他    aFormer, aLater のすくなくとも一方を取得する。
                   受信できないものは null に設定する。
     
    aFlag のデフォルト値は、 "b" です。

    また、 引数に aLater を渡さない場合は、 aFlag を f として aFormer のみ受信し、 引数に aFormer を渡さない場合は、 aFlag を l として aLater のみ受信します。

    データ記録時刻が丁度 _dataTime であるデータパックが収録されている場合は、 aFormer, aLater ともそれを格納します。

    条件を満たすデータパックを取得できない場合、aFormer, aLater は null に設定されます。

    データパックを取得できた場合は、true を返します。 このメソッドは送信先端子の getDataPack(Object[], OhTimePoint, Object[], char) から呼び出されます。 これにより送信先端子でデータパックを受信できます。

     [ARGUMENT]
      ・aFormer ---> _dataTime 以前で _dataTime に最も近い収録データパックを第一要素に格納する引数。
      ・_dataTime -> 指定時刻 [sec]
                     この時刻に最も近いデータ記録時刻を持つ収録データパックを受信する。
      ・aLater ----> _dataTime 以降で _dataTime に最も近い収録データパックを第一要素に格納する引数。
      ・aMode -----> データパックの受信条件を指定するフラグ。
    
     [RETURN]
      ・true --> 指定のデータパックを受信できた場合。
      ・false -> _dataPackArray が null の場合。
                 指定のデータパックを受信できない場合。
     

    Get two datapacks aFormer and aLater. aFormer is the newest datapack before time_dataTime. aLater is the oldest datapack after time _dataTime. aMode specifies the option

    When the datapack(s) specified by aMode can be got, it returns "true", otherwise "false".

    [out] aFormer --- pointer to a datapack [in] _dataTime - specified time [out] aLater ---- pointer to a datapack [in] aMode ----- option to get pointers to datapacks

    定義:
    クラス OhSenderPort 内の getDataPack
    パラメータ:
    aFormer - an Object[] value
    _dataTime - an OhTimePoint value
    aLater - an Object[] value
    aMode - a char value
    戻り値:
    a boolean value

    getDataPack

    public boolean getDataPack(java.lang.Object[] aFormer,
                               OhTimePoint _dataTime,
                               java.lang.Object[] aLater)
    時刻指定によりデータパックを取得(受信)します。

    基底クラス OhSenderPort の抽象メソッドです。

    時刻を指定して _sender からデータパックを受信します。

    aFormer には、データ記録時刻が _dataTime 以前で _dataTime に最も近い収録データパックを受信、格納します。

    aLater には、データ記録時刻が _dataTime 以降で _dataTime に最も近い収録データパックを受信、格納します。

    aFormer, aLater の両方を必ず受信します。 受信できない場合は、両方とも null に設定されます。 データ記録時刻が丁度 _dataTime であるデータパックが収録されている場合は、 aFormer, aLater ともそれを格納します。

    データパックを取得できた場合は、true を返します。 このメソッドは送信先端子の getDataPack(Object[], OhTimePoint, Object[], char) から呼び出されます。 これにより送信先端子でデータパックを受信できます。

     [ARGUMENT]
      ・aFormer ---> _dataTime 以前で _dataTime に最も近い収録データパックを第一要素に格納する引数。
      ・_dataTime -> 指定時刻 [sec]
                     この時刻に最も近いデータ記録時刻を持つ収録データパックを受信する。
      ・aLater ----> _dataTime 以降で _dataTime に最も近い収録データパックを第一要素に格納する引数。
    
     [RETURN]
      ・true --> 指定のデータパックを受信できた場合。
      ・false -> _dataPackArray が null の場合。
                 指定のデータパックを受信できない場合。
     

    By all means, Get two datapacks aFormer and aLater.

    パラメータ:
    aFormer - an Object[] value
    _dataTime - an OhTimePoint value
    aLater - an Object[] value
    戻り値:
    a boolean value

    reduceDataPackStock

    public void reduceDataPackStock()
    不要データパックを消去します。

    送信元端子 _sender に不要データパックを消去するよう指示します。

    この中継端子の _owner で計算終了時に用い、不要メモリを解放します。

    このメソッドは送信先端子の getDataPack(Object[], OhTimePoint, Object[], char) から呼び出されます。 これにより送信先端子でデータパックを受信できます。

    Forwards the message "reduceDataPackStock()" to the sender.

    定義:
    クラス OhSenderPort 内の reduceDataPackStock

    printConnection

    public void printConnection(java.io.PrintWriter aPw,
                                java.lang.String aHead)

    接続情報を出力します。

    Prints the information about connection of this Relay_port. This function is used for debugging.

    オーバーライド:
    クラス OhSenderPort 内の printConnection
    パラメータ:
    aPw - a PrintWriter value
    aHead - a String value

    printConnection

    public void printConnection(java.io.PrintWriter aPw)

    接続情報を出力します。

    Prints the information about connection of this Relay_port. This function is used for debugging.

    パラメータ:
    aPw - a PrintWriter value