ohymosj
クラス OhSenderPort

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

public abstract class OhSenderPort
extends OhPort

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

このクラスは、送信系端子を作成するための抽象クラスです。 送信系端子は送信機能を持った端子です。

この抽象クラス OhSenderPort から、 自分で持っているデータを送信する OhSendPort と 他の端子から得たデータを中継する OhRelayPort が派生します。

いずれにしても、受信側からすれば、データを送信してくれる機能を持っているので、 その共通部分のインターフェースを OhSenderPort で定義しています。

OhSenderPort には複数の送信先端子(データを受信する端子)を接続することができます。

OhSenderPort; Abstract class for creating sender ports.

By inheritance from this OhSenderPort class, the classes OhSendPort and OhRelayPort are created.

バージョン:
$Revision: 1.57 $ $Date: 2004/03/08 17:03:02 $
作成者:
satoh

フィールドの概要
protected  OhLinkedList _bufferList
           作業用の線形リストです。
protected  java.lang.String _commentString
           データ文字列です。
protected  int _numberOfReceivers
           _receiverArray の要素数です。
protected  java.lang.Object[] _receiverArray
           送信先の受信端子を記憶するための Object 型配列です。
 
クラス ohymosj.OhObject から継承したフィールド
_className, _objectName, _objectNumber, _owner, NEWLINE
 
コンストラクタの概要
OhSenderPort()
           デフォルトコンストラクタは OhSenderPort.init(String, int) を実行しません。
OhSenderPort(java.lang.String aPortName, int aPortNum)
           基底クラス OhPort のデフォルトコンストラクタを用い、 OhSenderPort.init(String, int) を用いて、 メンバ変数を以下の通り初期化します。
 
メソッドの概要
 boolean areYouReady()
           計算作業前の確認を行ないます。
abstract  boolean canYouGetData(OhTimePoint aTFrom, OhTimePoint aTTo)
           取得可能データパックの確認を行ないます。
 boolean canYouSwitch()
           端子の接続作業の終了処理およびデータ送受信開始のための準備作業を行ないます。
abstract  java.lang.String dataType()
           データの型を返します。
 java.lang.String getCommentString()
           _commentString を返します。
abstract  boolean getDataPack(java.lang.Object[] aFormer, OhTimePoint _dataTime, java.lang.Object[] aLater, char aMode)
           時刻指定によりデータパックを取得(送信) します。
abstract  void getDataPackArray(OhArrayList[] aDpArray, int[] aNumOfDp)
           データパックの配列リストを取得(送信)します。
abstract  java.util.Vector getDctVec()
           この送信端子が供給するデータのデータ補間型ベクトルを返します。
 OhTimePoint getNecessaryTimeFrom()
           データ必要時刻を返します。
 OhTimePoint getNecessaryTimeTo()
           データ必要時刻を返します。
 boolean init(java.lang.String aPortName, int aPortNum)
           オブジェクト名、オブジェクト番号を初期化します。
 void printConnection(java.io.PrintWriter aPw, java.lang.String aHead)
           接続情報を出力します。
abstract  void reduceDataPackStock()
           不要データパックを消去します。
 boolean registerReceiver(java.lang.Object aReceiver)
           送信先(受信側)端子を登録します。
 void setCommentString(java.lang.String aCmt)
           _commentString を設定します。
abstract  void setDataPackArray()
           デ−タパックの配列リストを設定します。
 
クラス ohymosj.OhPort から継承したメソッド
calReq, canYouGetData, cPrint, create, getDataPack, getDataPack, getNewestDataTime, getNumberOfDataPacks, getOldestDataTime, setSender
 
クラス 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
 

フィールドの詳細

_bufferList

protected OhLinkedList _bufferList
作業用の線形リストです。

The list for work.


_receiverArray

protected java.lang.Object[] _receiverArray
送信先の受信端子を記憶するための Object 型配列です。

Array for memorizing the ports of sending place.


_numberOfReceivers

protected int _numberOfReceivers
_receiverArray の要素数です。

The number of elements of "_receiverArray".


_commentString

protected java.lang.String _commentString
データ文字列です。

Comment about data.

コンストラクタの詳細

OhSenderPort

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

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


    OhSenderPort

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

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

    dataType

    public abstract java.lang.String dataType()
    データの型を返します。

    基底クラス OhPort の抽象メソッドです。 このクラス OhSenderPort でも抽象メソッドとしておきます。

    Returns the datapack type string of this port. Because this is an abstract method, it should be implemented in derived classes.

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

    getDctVec

    public abstract java.util.Vector getDctVec()
    この送信端子が供給するデータのデータ補間型ベクトルを返します。

    Abstract method. It should return the data connection vector.

    戻り値:
    a Vector value

    setDataPackArray

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

    基底クラス OhPort の抽象メソッドです。 このクラス OhSenderPort でも抽象メソッドとしておきます。

    実際には、 _dataPackArray の要素数を _numberOfDataPacks に設定するだけです。

    Abstract method. Makes data pack array.

    定義:
    クラス OhPort 内の setDataPackArray

    canYouGetData

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

    基底クラス OhPort の抽象メソッドです。 このクラス OhSenderPort でも抽象メソッドとしておきます。

    canYouGetData(OhTimePoint aTFrom, OhTimePoint aTTo) は, aTFrom 以前から、 aTTo 以降までのデータパックをこの端子から取得可能ならば、 true を返し、不可能なら false を返すように各派生クラスで定義します.

     ARGUMENT:
       ・aTFrom    aTFrom 以前からのデータパックが取得可能であることを確認する.
       ・aTTo      aTTo 以降までのデータパックが取得可能であることを確認する.
     RETURN:
       ・YES       aTFrom 以前から aTTo 以降までのデータパックを取得可能な場合.
                   t におけるデータが取得可能な場合.
       ・NO        aTFrom 以前から aTTo 以降までのデータパックを取得不可能な場合.
     

    Abstract method. Checks the data time recorded.

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

    getDataPackArray

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

    基底クラス OhPort の抽象メソッドです。 このクラス OhSenderPort でも抽象メソッドとしておきます。

    派生クラスにおいて、データパック配列を取得するメソッドを定義します。 aDpArray にはデータパック配列を格納し、aNumOfDp には、aDpArray の要素数を格納します。

    Abstract method. Sends the datapack array.

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

    getDataPack

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

    基底クラス OhPort の抽象メソッドです。 このクラス OhSenderPort でも抽象メソッドとしておきます。

    派生クラスにおいて、時刻を指定してデータパックを取得する関数を定義します。

    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 を返します。

    Abstract method. Sends the datapacks.

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

    reduceDataPackStock

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

    基底クラス OhPort の抽象メソッドです。 このクラス OhSenderPort でも抽象メソッドとしておきます。

    この端子で取得可能なデータパックのうち、 getNecessaryTimeFrom() よりデータ記録時刻が早いデータパックを消去するよう、 派生クラスで定義します。

    Abstract method. Deletion of an unnecessary datapacks.

    定義:
    クラス OhPort 内の reduceDataPackStock

    init

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

    Initialization.

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

    registerReceiver

    public boolean registerReceiver(java.lang.Object aReceiver)
                             throws OhError
    送信先(受信側)端子を登録します。

    基底クラス OhPort のメソッドをオーバーライドしています。

    このメソッドは、端子間の接続の際に呼び出されます。

    OhLinkedList.add(Object) により _bufferList に 引数である aReceiver を登録し、 true を返します。

    ただし、次の場合はエラーメッセージを表示して false を返します。

    1. _bufferList が null の場合。
    2. _receive_port_array が作成済みの場合。
    3. この端子と aReceiver とで、_dataPackType が異なる場合。
    また、aReceiver が _bufferList に登録済みの場合は、二重登録せず true を返します。

    Register a receiver. This function is an abstract method in the base class OhPort. Implemented in this class OhSenerPort.

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

    canYouSwitch

    public boolean canYouSwitch()
                         throws OhError
    端子の接続作業の終了処理およびデータ送受信開始のための準備作業を行ないます。

    基底クラス OhPort の抽象メソッドを実装しています。

    _bufferList に登録されている送信先受信端子を _receiverArray に配列化し、 _receiverArray の要素数を _numberOfReceivers に設定します。

    _receiverArray が作成済みの場合は、エラーメッセージを表示して false を返します。

    接続作業の終了後、_owner の計算開始前に必ず用いて下さい。 ただし、このメソッドの実行後は接続関係を変更できません。

    _receiverArray が正常に作成された場合は true を返します。

    Makes "_receiverArray" from the port of the sending place registered into "_bufferList". And, the number of elements of "_receiverArray" is set as "_numberOfReceivers".

    オーバーライド:
    クラス OhPort 内の canYouSwitch
    戻り値:
    a boolean value
    例外:
    OhError - if an error occurs

    areYouReady

    public boolean areYouReady()

    計算作業前の確認を行ないます。

    基底クラス OhPort の抽象メソッドを実装しています。

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

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

    Check that it is in the state where data packs can be transmitted. If _numberOfReceivers >= 0, _receiverArray is setting ending, and you can send data packs to a send port.

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

    setCommentString

    public void setCommentString(java.lang.String aCmt)
    _commentString を設定します。

    Copy the string "cmt" to "_commentString" which is a instance variable of this class.

    パラメータ:
    aCmt - a String value

    getCommentString

    public java.lang.String getCommentString()
    _commentString を返します。

    Returns "_commentString".

    戻り値:
    a String value

    getNecessaryTimeFrom

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

    基底クラス OhPort の抽象メソッドを実装しています。

    このメソッドでは、 _owner の OhElement.getNecessaryTimeFrom()、 送信先端子の OhPort.getNecessaryTimeFrom() のうち、 最小のものを返します。 この時、_owner が null なら OhTimePoint.OhTimePointMin を返します。

    The minimum thing is returned among OhElement.getNecessaryTimeFrom() of the "_owner" and OhPort.getNecessaryTimeFrom() of the port of a sending place. If "_owner" is "null", Returns OhTimePoint.OhTimePointMin.

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

    getNecessaryTimeTo

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

    基底クラス OhPort の抽象メソッドを実装しています。

    このメソッドでは、 _owner の OhElement.getNecessaryTimeTo()、 送信先端子の OhPort.getNecessaryTimeTo() のうち、 最大のものを返します。 この時、_owner が null なら OhTimePoint.OhTimePointMax を返します。

    The maxmum thing is returned among OhElement.getNecessaryTimeTo() of the "_owner" and OhPort.getNecessaryTimeTo() of the port of a sending place. If "_owner" is "null", Returns OhTimePoint.OhTimePointMax.

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

    printConnection

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

    この端子の接続関係に関する情報を第一引数であるストリーム aPw に出力します。

     [in] aPw -- 出力先のストリーム。
     [in] head - 出力時のヘッダ。デフォルト値は4カラム。
     

    The information about the connection relation of this port is outputted to "aPw".

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