eSEAT/Task.py
eSEATの内部で実行されるタスクと状態を管理するクラス群。
eSEAT内部で実行されるタスクとは、<message>, <shell>, <script>, <log>, <statetransition>で定義された処理である。
Taskクラス
eSEATにおける <message>, <script>, <shell>, <log>, <statetransition>で登録された処理を実行するクラスの基底クラス
- Class ''Task''(object)
-
__init__(rtc)
コンストラクタ
- execute(data)現在は何もせずにTrueを返す
- error(msg, val)self._loggerにエラーメッセージを出力する
- checkCondition()現在を何もせずにTrueを返す
-
__init__(rtc)
TaskMessageクラス
<message>タグで登録された処理を管理するクラス。sendtoで設定されたAdaptorに対してsendメソッドでメッセージ(文字列)を出力する
- Class ''TaskMessage''(Task)
-
__init__(rtc, sndto, data, encode, input_id)
コンストラクタ
- execute(data)self.sendtoで設定されたAdaptorにself.dataに格納されているメッセージを送信する
-
__init__(rtc, sndto, data, encode, input_id)
TaskShellクラス
<shell>タグで登録された処理を管理するクラス。Shellを起動し登録されたコマンドを実行する
- Class ''TaskShell''(Task)
-
__init__(rtc, sendto, data)
コンストラクタ
- execute(data)サブプロセスを起動して、登録されている命令(self.data)を実行する。self.sentoが設定されている場合には、実行結果をAdaptorに出力する
-
__init__(rtc, sendto, data)
TaskScriptクラス
<script>タグで登録された処理を管理するクラス。登録されているPythonスクリプトを実行する
- Class ''TaskScript''(Task)
-
__init__(rtc, sendto, data, fname)
コンストラクタ
- execute(data)self.dataに登録されているPythonスクリプトをexec関数で実行する。self.fnameにファイル名が登録されていれば、self.dataのスクリプト実行前に、utils.exec_script_file関数で実行する。また、self.sendtoが設定されていれば、rtc_result変数に格納されているデータをAdaptorに出力する
-
__init__(rtc, sendto, data, fname)
TaskLogクラス
<log>タグで登録された処理を管理するクラス。登録されたメッセージを出力する
- Class ''TaskLog''(Task)
-
__init__(rtc, data)
コンストラクタ
- execute(data)self.dataに登録されているメッセージをself._loggerにエラーメッセージを出力する
-
__init__(rtc, data)
TaskStatetransitionクラス
eSEATの内部状態を遷移させるクラス
- Class ''TaskStatetransition''(Task)
-
__init__(rtc, func, data)
コンストラクタ
- execute(data)self.dataに登録されている状態にeSEATの内部状態を遷移させる。ただし、self.funcが'push'の時には、現在の状態を状態管理スタックに追加し、'pop'であれば、状態管理スタックの最末尾に登録されている状態に遷移させる
-
__init__(rtc, func, data)
TaskGroupクラス
複数のTaskを管理するクラス。SEATMLの<rule>に対応するクラスで、実行条件が登録されていれば、その条件を満たす場合に登録されているTask列を順に事項する。
- Class ''TaskGroup''(object)
-
__init__()
コンストラクタ
- execute(data=None)self.checkConditions()の値が真であれば、self.taskseqに登録されているTaskを実行(executeメソッドの呼び出し)する
- executeEx(data=None)ほぼexecuteメソッドと同じであるが、TaskMessageを実行するときにencodingをNoneに設定する
- setCondition(cond_str)self.conditionにcond_strを登録する
- checkCondition()self.conditionsが文字列の時、eval関数で評価しその結果を返す。それ以外の場合には、self.conditionを返す
- addTask(task)self.taskseqの最後尾にtaskを追加する
- clearTasks()self.taskseqを空にする
- addPattern(pat)self.patternsの最後尾にre.compile(pat)を追加する
- addKey(key)self.keysの最後尾にkeyを追加する
- match(msg)self.keyとmsgが一致するか self.patternsの各要素がmatch(msg)でマッチすれば真を返す。それ以外は偽を返す
- execute_pre_script()self.pre_scriptに登録されているPythonファイルをutils.exec_sctipt_file関数で実行する
-
__init__()
Stateクラス
eSEATの内部状態を管理するクラス
- Class ''State''(object)
-
__init__(name)
コンストラクタ
- updateKeys()self.keysをself.ruleのキーに更新する。self.ruleは、OrderDictである
- registerRule(key, tasks)self.rule[key]にtasksを登録し、self.keysを更新する。この時keyは、(port, word)というリストである
- registerRuleArray(key, tasks)self.rule[key]の最後尾にtasksを登録し、self.keysを更新する。このメソッドでtaskを登録すると self.rule[key]は配列になる。また、keyは (port, word)というリストである
- removeRule(key)self.rule[key]を削除し、self.keyを更新する
- matchkey(port, word)self.keysから (port,word)に照合するruleを返す。この時wordのみre.match関数のパターンマッチングの結果も使われる。
- searchkey(port, word)matchKeyメソッドとほぼ同じであるが、re.match関数の代わりにre.search関数を使う
- has_rule(port, word)self.keysに (port, word)があるかどうかを調べる。このメソッドは '='オペレータのみで照合をおこなう
-
__init__(name)