00001 #!/usr/bin/env python 00002 # -*- coding: euc-jp -*- 00003 00004 ## 00005 # @file PushConnector.py 00006 # @brief Push type connector class 00007 # @date $Date$ 00008 # @author Noriaki Ando <n-ando@aist.go.jp> and Shinji Kurihara 00009 # 00010 # Copyright (C) 2009 00011 # Noriaki Ando 00012 # Task-intelligence Research Group, 00013 # Intelligent Systems Research Institute, 00014 # National Institute of 00015 # Advanced Industrial Science and Technology (AIST), Japan 00016 # All rights reserved. 00017 # 00018 00019 00020 ## 00021 # @if jp 00022 # @class DataPortStatus mixin class 00023 # @brief DataPortStatus mixin クラス 00024 # 00025 # このクラスは、enum定義されたリターンコードを、データポート関連のサ 00026 # ブクラスで共通利用するための mixin クラスである。このリターンコー 00027 # ドを使用するクラスでは、DataPortStatus クラスをpublic 継承し、下に 00028 # define してあるDATAPORTSTATUS_ENUM をクラス内に記述することで利用 00029 # 可能となる。これにより、enum を ReturnCode_t 型として typedef し、 00030 # 以後ReturnCode_t を利用できるようにするとともに、名前空間に enum 00031 # 定義された各識別子を当該クラス名前空間内に導入する。 00032 # 00033 # @else 00034 # @class DataPortStatus mixin class 00035 # @brief DataPortStatus mixin class 00036 # 00037 # This is a mixin class to provide enumed return codes that are 00038 # commonly utilised in data port related sub-classes. To use this 00039 # class, sub-class should inherit this class as a public super 00040 # class, and declare DATAPORTSTATUS_ENUM defined 00041 # below. Consequently, ReturnCode_t type that is typedefed by this 00042 # macro can be used in the sub-class, and enumed identifiers are 00043 # imported to the class's namespace. 00044 # 00045 # @endif 00046 # 00047 class DataPortStatus: 00048 """ 00049 """ 00050 00051 def __init__(self): 00052 pass 00053 00054 ## 00055 # @if jp 00056 # brief DataPortStatus リターンコード 00057 # 00058 # データポート関連のクラスで共通のリターンコード 00059 # 00060 # - PORT_OK: 正常終了 00061 # - PORT_ERROR: 異常終了 00062 # - BUFFER_ERROR: バッファエラー 00063 # - BUFFER_FULL: バッファフル 00064 # - BUFFER_EMPTY: バッファエンプティ 00065 # - BUFFER_TIMEOUT: バッファタイムアウト 00066 # - SEND_FULL: データを送ったが相手側がバッファフル状態 00067 # - SEND_TIMEOUT: データを送ったが相手側がタイムアウトした 00068 # - RECV_EMPTY: データを受信しようとしたがデータが空状態 00069 # - RECV_TIMEOUT: データを受信しようとしたがタイムうとした 00070 # - INVALID_ARGS: 不正な引数 00071 # - PRECONDITION_NOT_MET: 事前条件を満たしていない 00072 # - CONNECTION_LOST: 接続が切断された 00073 # - UNKNOWN_ERROR: 不明なエラー 00074 # 00075 # データポートのデータ経路上のエラー発生個所から呼び出し側へエラー 00076 # 情報を伝えるためにこのエラーコードを使用する。主に、伝送路上のエ 00077 # ラー、伝送先のエラーなどが考えられるが、各部分の界面で発生するエ 00078 # ラーを以下に列挙する。 00079 # 00080 # (1) Push型 00081 # a) InPortConsumer と Publisher/Activity 間で発生するリターンコード 00082 # PORT_OK, PORT_ERROR, SEND_FULL, SEND_TIMEOUT, CONNECTION_LOST, 00083 # UNKNOWN_ERROR 00084 # 00085 # b) Activity と OutPort の Buffer/Connector 間で発生するリターンコード 00086 # PORT_OK, PORT_ERROR, BUFFER_ERROR, BUFFER_FULL, BUFFER_TIMEOUT, 00087 # UNKNOWN_ERROR, 00088 # 00089 # (2) Pull型 00090 # a) Activity と InPort の間で発生するリターンコード 00091 # PORT_OK, PORT_ERROR, RECV_EMPTY, RECV_TIMEOUT, CONNETION_LOST, 00092 # UNKNOWN_ERROR 00093 # 00094 # 各関数が返すリターンコードは関数ごとのリファレンスを参照のこと。 00095 # 00096 # @else 00097 # @brief DataPortStatus return codes 00098 # 00099 # Common return codes for data ports related classes. 00100 # 00101 # - PORT_OK: Normal return 00102 # - PORT_ERROR: Error return 00103 # - BUFFER_ERROR: Buffer error 00104 # - BUFFER_FULL: Buffer full 00105 # - BUFFER_EMPTY: Buffer empty 00106 # - BUFFER_TIMEOUT: Buffer timeout 00107 # - SEND_FULL: Buffer full although OutPort tried to send data 00108 # - SEND_TIMEOUT: Timeout although OutPort tried to send data 00109 # - RECV_EMPTY: Buffer empty although InPort tried to receive 00110 # data 00111 # - RECV_TIMEOUT: Timeout although InPort tried to receive data 00112 # - INVALID_ARGS: Invalid arguments 00113 # - PRECONDITION_NOT_MET: Precondition not met 00114 # - CONNECTION_LOST: Connection has been lost 00115 # - UNKNOWN_ERROR: Unknown error 00116 # 00117 # This error codes might be used to propagate error status from 00118 # the error occurring point to the function caller in the data 00119 # stream path. It would occur in data-transfer path and data 00120 # receiver/sender. The errors that occur in the interface of each 00121 # portion of data port are shown below. 00122 # 00123 # (1) Push Type 00124 # a) The return codes between InPortConsumer and Publisher/Activity 00125 # PORT_OK, PORT_ERROR, SEND_FULL, SEND_TIMEOUT, CONNECTION_LOST, 00126 # UNKNOWN_ERROR 00127 # b) The return codes between Activity and Buffer/Connector of OutPort 00128 # PORT_OK, PORT_ERROR, BUFFER_ERROR, BUFFER_FULL, BUFFER_TIMEOUT, 00129 # UNKNOWN_ERROR, 00130 # 00131 # (2) Pull Type 00132 # a) The return codes between Activity and InPort 00133 # PORT_OK, PORT_ERROR, RECV_EMPTY, RECV_TIMEOUT, CONNETION_LOST, 00134 # UNKNOWN_ERROR 00135 # 00136 # See function references for detailed return codes for each function. 00137 # 00138 # @endif 00139 # 00140 PORT_OK = 0 00141 PORT_ERROR = 1 00142 BUFFER_ERROR = 2 00143 BUFFER_FULL = 3 00144 BUFFER_EMPTY = 4 00145 BUFFER_TIMEOUT = 5 00146 SEND_FULL = 6 00147 SEND_TIMEOUT = 7 00148 RECV_EMPTY = 8 00149 RECV_TIMEOUT = 9 00150 INVALID_ARGS = 10 00151 PRECONDITION_NOT_MET = 11 00152 CONNECTION_LOST = 12 00153 UNKNOWN_ERROR = 13 00154 00155 ## 00156 # @if jp 00157 # 00158 # @brief DataPortStatus リターンコードを文字列に変換 00159 # 00160 # DataPortStatus リターンコードを文字列に変換する 00161 # 00162 # @param status 変換対象 DataPortStatus リターンコード 00163 # 00164 # @return 文字列変換結果 00165 # 00166 # @else 00167 # 00168 # @brief Convert DataPortStatus into the string. 00169 # 00170 # Convert DataPortStatus into the string. 00171 # 00172 # @param status The target DataPortStatus for transformation 00173 # 00174 # @return Trnasformation result of string representation 00175 # 00176 # @endif 00177 # 00178 def toString(status): 00179 str = ["PORT_OK", 00180 "PORT_ERROR", 00181 "BUFFER_ERROR", 00182 "BUFFER_FULL", 00183 "BUFFER_EMPTY", 00184 "BUFFER_TIMEOUT", 00185 "SEND_FULL", 00186 "SEND_TIMEOUT", 00187 "RECV_EMPTY", 00188 "RECV_TIMEOUT", 00189 "INVALID_ARGS", 00190 "PRECONDITION_NOT_MET", 00191 "CONNECTION_LOST", 00192 "UNKNOWN_ERROR"] 00193 return str[status] 00194 00195 toString = staticmethod(toString)