ohymosj
クラス OhReceivePort

java.lang.Object
  拡張ohymosj.OhObject
      拡張ohymosj.OhPort
          拡張ohymosj.OhReceivePort
直系の既知のサブクラス:
OhOutputPort, OhReceiveDouble, OhReceiveFloat, OhReceiveInt, OhReceiveLong

public abstract class OhReceivePort
extends OhPort

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

抽象クラスです。

受信端子には送信元端子を1つだけつなぐことができます。

クラス OhReceivePort では、

を記憶し、 を定義しました。

Class for models of receive ports. Derived from the class OhPort. This class OhReceivePort has a instance variable for storing a sender which sends datapacks to the current receive port.

Methods for

are defined.

NOTE: Only one send port can be connected to an object of class OhReceivePort.

バージョン:
$Revision: 1.45 $ $Date: 2004/02/11 22:52:00 $
作成者:
satoh

フィールドの概要
protected  OhSenderPort _sender
           OhSenderPort 型にキャストされた送信元端子です。
 
クラス ohymosj.OhObject から継承したフィールド
_className, _objectName, _objectNumber, _owner, NEWLINE
 
コンストラクタの概要
OhReceivePort()
           デフォルトコンストラクタは OhReceivePort.init(String, int) を実行しません。
OhReceivePort(java.lang.String aPortName, int aPortNum)
           基底クラス OhPort のデフォルトコンストラクタを用い、 OhReceivePort.init(String, int) を用いて、 メンバ変数を以下の通り初期化します。
 
メソッドの概要
 boolean areYouReady()
           計算作業前の確認を行ないます。
 void calReq()
           受信端子への計算要求は送信端子に転送します。
 boolean canYouGetData(OhTimePoint aTFromTo)
           取得可能データパックの確認を行ないます。
 boolean canYouGetData(OhTimePoint aTFrom, OhTimePoint aTTo)
           データ収録時刻の確認を行ないます。
 boolean canYouSwitch()
           接続作業後の処理を行ないます。
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)
           データパックの配列リストを取得(受信)します。
 OhTimePoint getNecessaryTimeFrom()
           データ必要時刻を返します。
 OhTimePoint getNecessaryTimeTo()
           データ必要時刻を返します。
 OhTimePoint getNewestDataTime()
           最新のデータの記録時刻を返します。
 int getNumberOfDataPacks()
           データパックの個数(_numberOfDataPacks)を返します。
 OhTimePoint getOldestDataTime()
           最古のデータの記録時刻を返します。
 boolean init(java.lang.String aPortName, int aPortNum)
           オブジェクト名、オブジェクト番号を初期化します。
 void printConnection(java.io.PrintWriter aPw, java.lang.String aHead)
           接続情報を出力します。
 void reduceDataPackStock()
           不要データパックを消去します。
 void setDataPackArray()
           デ−タパックの配列リストを設定します。
 boolean setSender(java.lang.Object aSender)
           送信元端子を設定します。
 
クラス ohymosj.OhPort から継承したメソッド
cPrint, create, getDataPack, getDataPack, registerReceiver
 
クラス 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 型にキャストされた送信元端子です。

A sender which sends datapacks to the current object.

コンストラクタの詳細

OhReceivePort

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

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


    OhReceivePort

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

  • _className : "OhReceivePort"
  • _objectName : aPortName
  • _objectNumber : aPortNum
  • _sender : null
  • パラメータ:
    aPortName - a String value
    aPortNum - an int value
    例外:
    OhError - if an error occurs
    メソッドの詳細

    dataType

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

    基底クラス OhPort の抽象メソッドです。 この OhRelayPort でも抽象メソッドとしておきます。 OhRelayPort の派生クラスで受信データパック型を表す文字列を返すように必ず定義して下さい。 例えば、受信データパック型が "double" 型である派生クラスでは、

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

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

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

    Returns a string which expresses the type of datapacks received by the current object. This is a abstract method. This function must be defined in derived classes.

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

    init

    public boolean init(java.lang.String aPortName,
                        int aPortNum)
                 throws OhError
    オブジェクト名、オブジェクト番号を初期化します。

    Initialization with object name "aPortName" and object number "aPortNum".

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

    setSender

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

    基底クラス OhPort の抽象メソッドです。 送信元端子 _sender を aSender に設定し、true を返します。

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

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

    Set "_sender" to "aSender" and return "true". When one of the following cases occurs

    this function prints an error message and returns "false".

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

    canYouSwitch

    public boolean canYouSwitch()
    接続作業後の処理を行ないます。

    OhReceivePort では接続作業後に行なうべき処理は特にありません。 常に true を返します。

     [RETURN]
      ・true -> 常に true を返す。
     

    Because no corresponding work is needed in the OhReceivePort class, Switch of the OhReceivePort class simply returns "false".

    Note: Switch of the OhSenderPort class is defined differently.

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

    areYouReady

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

    基底クラス OhPort の抽象メソッドを実装しています。
    データパックを受信することができる状態であることを確認します。 つまり、_sender が設定されているかチェックします。 _sender が設定されていれば、_sender からデータパックを受信することができます。

     [RETURN]
      ・true --> _sender が設定済みの場合。
      ・false -> _sender が未設定の場合。
     

    Answers whether the current receive port has been connected to some sender or not.

    定義:
    クラス OhPort 内の areYouReady
    戻り値:
    a boolean value

    setDataPackArray

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

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

    Orders the sender to create a datapack array.

    定義:
    クラス OhPort 内の setDataPackArray

    getOldestDataTime

    public OhTimePoint getOldestDataTime()
    最古のデータの記録時刻を返します。 送信元端子(_sender)に最古のデータの記録時刻を返すよう指示します。

    Returns the data time of the oldest data pack in the data stored in the sender.

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

    getNewestDataTime

    public OhTimePoint getNewestDataTime()
    最新のデータの記録時刻を返します。 送信元端子(_sender)に最新のデータの記録時刻を返すよう指示します。

    Returns the data time of the newest data pack in the data stored in the sender.

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

    getNumberOfDataPacks

    public int getNumberOfDataPacks()
    データパックの個数(_numberOfDataPacks)を返します。 送信元端子(_sender)にデータパックの個数(_numberOfDataPacks)を返すよう指示します。

    Returns the number of datapacks stored in the sender.

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

    canYouGetData

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

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

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

    この受信端子の _owner で計算時の確認作業に用います。

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

    Tells whether the data from "aTFrom" to "aTTo" can be obtained or not.

    Accident: "_sender" is "null" or not OhPort type.

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

    canYouGetData

    public boolean canYouGetData(OhTimePoint aTFromTo)
    取得可能データパックの確認を行ないます。

    Tells whether the data at "aTFromTo" can be obtained or not.

    Accident: "_sender" is "null" or not OhPort type.

    オーバーライド:
    クラス OhPort 内の canYouGetData
    パラメータ:
    aTFromTo - an OhTimePoint value
    戻り値:
    a boolean value

    getDataPackArray

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

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

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

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

    aDpArray 中の受信データパックのデータ記録時刻が連続していることは OhSendPort.dataPackStock(Object) により保証されます。

    必要なデータパックが受信可能か否かは canYouGetData(OhTimePoint, OhTimePoint) を用いて確認できます。

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

    Get a data pack array from the sender. After the execution of this function, "aDpArray" stores the data pack array and "aNumOfDp" stores the dimention of "aDpArray".

    Accident: "_sender" is "null" or not OhPort type.

    定義:
    クラス OhPort 内の getDataPackArray
    パラメータ:
    aDpArray - a Vector 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 を返します。
     [ARGUMENT]
      ・aFormer ---> _dataTime 以前で _dataTime に最も近い収録データパックを第一要素に格納する引数。
      ・_dataTime -> 指定時刻 [sec]
                     この時刻に最も近いデータ記録時刻を持つ収録データパックを受信する。
      ・aLater ----> _dataTime 以降で _dataTime に最も近い収録データパックを第一要素に格納する引数。
      ・aMode -----> データパックの受信条件を指定するフラグ。
    
     [RETURN]
      ・true --> 指定のデータパックを受信できた場合。
      ・false -> _dataPackArray が null の場合。
                 指定のデータパックを受信できない場合。
     

    Get a data pack at specified time "_dataTime". The results are stored in "aFormer" and "aLater".

    When a data pack just at "_dataTime" exists, "aFormer" and "aLater" point to that data pack.

    "aFlag" specifies the search option.

    "b"
    Receive both of "former" and "later".
    "f"
    Receive "aFormer". Even if "aLater" cannot be obtained, the function returns "true".
    "l"
    Receive "aLater". Even if "aFormer" cannot be obtained, the function returns "true".
    other character
    Receive at lease one of "aFormer" and "aLater".

    定義:
    クラス OhPort 内の 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 を返します。

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

    By all means, Get a data pack at specified time "_dataTime". The results are stored in "aFormer" and "aLater".

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

    getNecessaryTimeFrom

    public OhTimePoint getNecessaryTimeFrom()
    データ必要時刻を返します。

    受信源の送信端子に getNecessaryTimeFrom() 以降 getNecessaryTimeTo() 以前のデータパックを 消去しないように指示するために定義しました。

    _owner の OhElement.getNecessaryTimeFrom() を返します。 _owner が null の場合は OhTimePoint.OhTimePointMin を返します。

    Returns the "NecessaryTimeFrom" (this) of the owner of the current receive port. You can redefine it in derived classes.

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

    getNecessaryTimeTo

    public OhTimePoint getNecessaryTimeTo()
    データ必要時刻を返します。

    受信源の送信端子に getNecessaryTimeFrom() 以降 getNecessaryTimeTo() 以前のデータパックを 消去しないように指示するために定義しました。

    _owner の OhElement.getNecessaryTimeTo() を返します。 _owner が null の場合は OhTimePoint.OhTimePointMax を返します。

    Returns the "NecessaryTimeTo" (this) of the owner of the current receive port. You can redefine it in derived classes.

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

    calReq

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

    Relay the calculation request to the sender.

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

    reduceDataPackStock

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

    Remove unnecessary data packs from the memory.

    定義:
    クラス OhPort 内の reduceDataPackStock

    printConnection

    public void printConnection(java.io.PrintWriter aPw,
                                java.lang.String aHead)
    接続情報を出力します。

    Print the information about the connection to "aPw" with the string "aHead".

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