eSEAT2のクラス定義と定義されている関数群
Simple Wiki Based Contents Management System
Home Projects Memo Misc Topics Software
ソフトウェア関連 >> eSEAT2 >> eSEAT2のクラス定義と定義されている関数群

eSEAT2のクラス定義と定義されている関数群

eSEAT2では、SEATMLのscript要素を使うといろいろなことができるようになっています。このscript要素には、Pythonスクリプトを記述することができ、eSEATのGUI要素へのアクセスもクラス関数を使うことで、色や文字列の変更をすることができます。
以下では、eSEATのファイル構成、eSEATコンポーネントのクラス定義と個別に定義した関数について説明します。

ファイル構成

eSEATは、以下のファイルから構成されています。
eSEAT.py
eSEATコンポーネント関連(OpenRTM-aist関連クラスおよび関数)
eSEAT_Core.py
eSEATの状態遷移、コマンド実行、GUI関連クラスおよび関数
SeatmlParser.py
 SEATMLパーザ関連クラスおよび関数
SocketAdaptor.py
Raw Socket通信のためのアダプタ定義など
WebAdaptor.py
Comet準拠のHTTP通信のためのアダプタ定義など
utils.py
その他の関数群
これからわかるように、現在は、eSEATはOpenRTM-aistに依存する部分を分離した形でクス定義などを整理しています。そのためOpenRTM-aist以外のミドルウェアへの移植は、アダプタを独自に実装することで実現できると思います。

eSEAT.py

このファイルには、eSEATのRTコンポーネントの本体のクラスおよび関数が記載されています。また、eSEAT_Core.py を execfile関数を使ってロードしています。

eSEATDataListenerクラス

このクラスは、eSEATの入力データポートに関連付けられます。eSEATが他のRTCからデータを受け取った時、このクラスの__call(info, cdrdata)というメンバ関数ががコールバック関数として呼び出されます。現在の実装では、入力ポートがあるRTCの onDataメンバ関数が呼び出されます。
  • class eSEATDataListener(OpenRTM_aist.COnnectorDataListenerT)
    • __init__(name, type, object)
      コンストラクタ
    • __call__(info, cdrdata)
      コールバック関数

RtcLoggerクラス

このクラスは、eSEAT内でLoggingを行うためのクラスです。OpenRTM-aistのLoggerのラッパーとなっています。
  • class RtcLogger()
    • __init__(name)
      コンストラクタ
    • info(msg)
      msgをRTC_INFOとして出力
    • error(msg)
      msgをRTC_ERRORとして出力
    • warn(msg)
      msgをRTC_WARNとして出力

eSEATクラス

このクラスは、eSEATのRTコンポーネントの本体です。RTCのDataFlowCompoenentBaseクラス、eSEAT_GuiクラスおよびeSEAT_Coreクラスを親として持ちます。
  • class eSEAT(OpenRTM_aist.DataFlowComponentBase, eSEAT_Gui, eSEAT_Core)
    • __init(manager)
      コンストラクタ
    • onInitialize()
      RTCの初期化時(生成時)に呼ばれるコールバック関数
    • onActivated(ec_id)
      データポートの入力イベント処理フラグをオンにする。
    • onDeaRTCの有効化時に呼ばれるコールバック関数ctivated(ec_id)
      RTCの無効化時に呼ばれるコールバック関数。データポートの入力イベント処理フラグをオフにする。
    • onFinalize()
      RTCのシャットダウン時に呼ばれるコールバック関数。SocketAdaptor、WebAdaptorの終了処理も行う。
    • onShutdowon(ec_id)
      RTCの終了時に呼ばれるコールバック関数。
    • onExecute(ec_id)
      RTCの実行コンテキスト実行時に呼ばれるコールバック関数。<onexec>で定義されたコマンドを実行する。実行は、<state>タグ内で定義された<onexec>を実行し、次に<general>タグ内で定義された<onexec>を実行する。なお、eSEATでは、データ入力に関する処理は、イベントハンドラで処理するのでそれに留意すること。
    • onData(name, data)
      データポート等ででデータを受信時に呼ばれるコールバック関数
    • activate()
      自身を活性状態(アクティブ)にする
    • deactivate()
      自身を非活性状態(インアクティブ)にする
    • createInPort(name, type=TimedString)
      入力データポートの作成
    • createOutPort(name, type=TimedString)
      出力データポートの作成
    • createDataPort(name, dtypem inout)
      入出力データポートの作成。内部では、createOutPort, createInPort を呼び出している。
    • createAdaptor(compname, tag)
      eSEATのデータ入出力ポートを作成。内部では、createDataPort, eSEAT_Code.createAdaptorを呼び出している。
    • disconnectAll()
      データポートに接続中のコネクションをすべて削除する。
    • getDataType(s)
      sのデータ型を確認して、データポート作成用に変換する
    • createServicePort(name, if_name, type_name, klass, srv_type)
      サービスポートを生成する
    • createProviderPort(name, if_name, type_name, klass)
      プロバイダサービスポートを生成する
    • createConsumerPort(name,if_name, type_name, klass)
      コンシューマサービスポートを生成する
    • getServicePtr(inst_name)
      nameのコンシューマサービスポートの参照オブジェクトを取得する
    • callServiceAsync(name, func)
      nameのコンシューマサービスに対してfunc関数の非同期呼び出しを行う。このfunc関数は、関数ファンクタでなければならない。OpenRTM-aistのSimpleServiceを参照してください。
    • callService(name, m_name, *val)
      nameのコンシューマサービスポートに対して、m_nameの関数呼び出しを行う。この関数は、プロバイダの処理が終わるまで待ちに入る。

eSEATManagerクラス

このクラスは、eSEATのマネージャとなるクラスです。実際のeSEATのRTCは、このクラスのインスタンスであるマネージャ(seatmgr)によって起動されます。
  • class eSEATManager()
    • __init__(seatml_filename=None)
      コンストラクタ
    • parseArgs()
      コマンド引数のパージング
    • moduleInit(manager)
      RTコンポーネントの初期化
    • start()
      RTコンポーネントの動作開始

その他の関数

instantiateDataType(dtype)
dtypeで与えられたデータ型の初期値を返す。

eSEAT_Core.py

このファイルには、eSEATの本体のクラスおよび関数が記載されています。また、SeatmlParser.py を execfile関数を使ってロードしています。

SeatLoggerクラス

このクラスは、eSEAT内でエラー出力等を行うためのクラスです。
  • class SeatLogger()
    • __init__(name)
      コンストラクタ
    • setFlag(msg)
      info関数での情報出力を制御するためのフラグの設定
    • info(msg)
      msgを標準出力に出力
    • error(msg)
      msgに”ERROR:”を付加し、標準エラー出力に出力
    • warn(msg)
      msgに”WARN:”を付加し、標準エラー出力に出力

eSEAT_Coreクラス

このクラスは、eSEATの本体です。状態遷移、コマンド実行等の関数が定義されています。アダプタとして、SocketAdaptorとWebAdapterを提供します。
  • class eSEAT_Core()
    • __init(manager)
      コンストラクタ
    • createSocketPort(name, host, port)
      TCP Socketの入出力ポートを作成
    • createWebAdaptor(name, port, index, white_list="")
      Webアダプタの入出力ポートを作成。portで設定されたポート番号でHTTPサービスを行う。indexには、デフォルトのドキュメント
    • createAdaptor(compname, tag)
      eSEATのデータ入出力ポートを作成。内部では、craeteSocketPort、createWebAdaptorを呼び出している。
    • send(name,data, code='utf-8')
      データポート、WebAdaptor等へデータを送信する
    • onData(name, data)
      データポート、WebAdaptorでデータを受信時に呼ばれるコールバック関数
    • processResult(name, s)
      onDataメンバ関数から呼ばれるコマンド処理のメイン処理関数
    • processExec(name, s)
      onExecutionなどの周期処理関数から呼ばれるコマンド処理関数
    • processJuliusResult(host, s)
      音声認識Juliusのコマンドモードの結果を処理する関数。processResult関数内から呼ばれる。
    • processOnDataIn(name, data)
      データポートからの入力データの処理関数。processResult関数内から呼ばれる。
    • lookupWithDefault(state, name, s)
      入力データに対応したコマンドを登録テーブルから呼び出す。
    • lookupCommand(state, name, s)
      入力データに対応したコマンドを登録テーブルから呼び出す。
    • getStates()
      現在の内部状態を取得する
    • setStartState(name)
      eSEAT開始時の内部状態を設定する。
    • countStates()
      eSEATの内部状態の数を返す。
    • inStates(name)
      nameという内部状態が既に存在するかどうかを判定
    • appendState(name)
      eSEATの内部状態の追加
    • initStartState(name)
      eSEATの開始時の内部状態を初期化する
    • create_state(name)
      nameという内部状態を作成する
    • stateTransfer(newstate)
      eSEATの内部状態を遷移させる。
    • applyMessage(cmd)
      message要素に対応したコマンドを実行する。データポートへ文字列を出力する
    • applyTransition(cmd)
      statetransition要素に対応したコマンドを実行する。内部でstateTrasfer関数を呼び出している。
    • applyLog(cmd)
      log要素に対応したコマンドを実行する。(非オフィシャル)
    • applyShell(cmd)
      shell要素に対応したコマンドを実行する。内部では、Subprocess.Popen関数でshellを起動し、コマンドを実行している。
    • applyScript(cmd, indata=None)
      script要素に対応したコマンドを実行する。
    • activateCommand(cmd, data=None)
      cmdで設定されたコマンド実行を実行する。内部では、applyXXXを呼び出している。
    • activateCommandEx(cmd, data)
      activateCommandの拡張版の実装。(ほぼ、activateCommandと同等)
    • loadSEATML(file)
      SEATMLファイルをロードする
    • registerCommands(key, cmds)
      keyに対応したコマンドcmdsを登録する
    • appendCommands(key, cmds)
      keyに対応したコマンドcmdsを追加登録する
    • registerCommandArray(tag, cmds)
      tagに対応したコマンドcmdsを登録。内部でregisterCommands, appendCommandsを呼んでいる
    • callComet(tag, cmds)
      WebAdaptorからのコールバック関数。現在は、何もしていない。
    • getSubprocessList()
      shell要素で実行されたコマンドの実行中のサブプロセスのリストを得る
    • killSubprocess(pid=None)
      shell要素で実行されたコマンドの実行中のサブプロセスを終了させる
    • finalizeSEAT()
      eSEATの終了処理。SocketPort, WebAdaptorがあれば、通信経路を閉じる

eSEAT_Guiクラス

このクラスは、eSEATのTkを用いたGUI関連の機能を提供するクラスです。
  • class eSEAT_Gui()
    • __init(manager)
      コンストラクタ
    • hasGUI()
      ロードしたSEATMLファイルでGUIアイテムが含まれているかどうかを判定する
    • mkcallback(name)
      Buttonに対応したコールバック関数の登録を行う
    • mkinputcallback(name)
      input(一行入力用Guiアイテム)にコールバック関数の登録を行う
    • newFrame(name)
      nameという内部状態に対するフレームを作成する。
    • setTitle(name)
      GUIパネルのタイトル名を設定する。
    • addButton(name, txt, fg, bg, cspan)
      SEATMLを解析時によばれ、nameという内部状態にbuttonを追加する。(実際には、buttonは作成されない)
    • addEntry(name, txt, w, cspan, val='')
      SEATMLを解析時によばれ、nameという内部状態にentry(一行入力)を追加する。(実際には、entryは作成されない)
    • addText(name, txt, w, h, cspan, rspan, val='')
      SEATMLを解析時によばれ、nameという内部状態にtext(複数行入力)を追加する。(実際には、textは作成されない)
    • addLabel(name, txt, fg, bg, cspan)
      SEATMLを解析時によばれ、nameという内部状態にlabelを追加する。(実際には、labelは作成されない)
    • addBreak(name)
      SEATMLを解析時によばれ、nameという内部状態に改行を追加する。(実際には、改行というGUIアイテムはない)
    • addSpace(name, n)
      SEATMLを解析時によばれ、nameという内部状態にn個の空白を追加する。(実際には、空白というGUIアイテムはない)
    • createButtonItem(framem sname, name, fg="#000000#, bg="#cccccc", cspan=1)
      buttonのGUIアイテムを作成する
    • createEntryItem(fname, sname, name, eid, w, cspan=1, val='')
      entry(一行入力)のGUIアイテムを作成する
    • bind_commands_to_entry(enty, name, eid)
      entryに対して<RETURN>押下時のイベント処理の関連付けを行う
    • getEntry(eid)
      eidのentry内の文字列を取得する
    • setEntry(eid, txt="")
      eidで指定したentryの内容をtxtに置き換える
    • createTextItem(fname, sname, name, eid, w, h, cspan=1, rspan=1, txt="")
      Text(複数行入力)のGUIアイテムを作成する
    • getText(eid)
      eidで指定されたTextの内容を取得する
    • unsetSelText(eid)
      eidで指定されたTextの内容をすべてクリアする
    • getSelText(eid)
      eidで指定されたTextで選択状態にある行の位置を取得する。
    • nextSelText(eid)
      eidで指定されたTextの選択状態を次の行に移動させる
    • prevSelText(eid)
      eidで指定されたTextの選択状態を前の行に移動させる
    • getSelTextLine(eid)
      eidで指定されたTextで選択状態にある行の内容を取得する。
    • setSelText(eid, n=1)
      eidで指定されたTextでnで指定された行を選択状態にする。
    • getNthLine(eid, n=1)
      eidで指定されたTextで開始行からnで指定された行の内容を取得する。
    • getLastLine(eid, n=1)
      eidで指定されたTextで最下行からnで指定された行の内容を取得する。
    • getCurrentIndex(eid)
      eidで指定されたTextで選択状態にある行の位置を取得する。
    • setCurrentIndex(eid, n=1)
      eidで指定されたTextでn行目を選択状態に設定する。
    • appendText(eid, txt="")
      eidで指定されたTextにtxtの文字列を追加する。
    • insertText(eid, pos, txt="")
      eidで指定されたTextでposで指定された位置にtxtを挿入する
    • clearText(eid)
      eidで指定されたTextの内容をすべて消去する
    • setButtonConfig(eid, **cfg)
      eidで指定されたButtonの設定を行う
    • setLabelConfig(eid, **cfg)
      eidで指定されたLabelの設定を行う
    • createLabelItem(fname, sname, name, fg="#ffffff#, bg="#444444", cspan=1)
      snameの状態のLabelを作成する
    • packItems(name)
      nameの内部状態のGUIの配置を生成する
    • showFrame(name)
      nameの内部状態に対応するフレームを表示する
    • hideFrame(name)
      nameの内部状態に対応するフレームを隠す
    • createGuiPanel(name)
      nameの内部状態に対応するGUIパネルを生成する
    • stateChanged(event=None, *args)
      内部状態遷移時のGUIパネルを変更する
    • startGuiLoop()
      Tkのイベントループを開始する

その他の関数

getGlobals()
モジュールの大域変数を格納した配列を返す。内部的には、globals()を呼び出している。
setGlobals(name, val)
nameという大域変数にvalを割り当てる。

SeatmlParser.py

SEATMLファイルのパーザーのクラスと関連関数を定義したファイルです。

SEATML_Parserクラス

このクラスは、SEATMLのファイルを読込、解釈しRTCのデータポートの作成、コマンドテーブルの作成等を行います。
  • class SEATML_Parser()
    • __init__(parent, xsd='seatml.xsd', logger=None)
      コンストラクタ
    • setXsd(xsd_filename, _dir=None)
      XDSファイルの設定。SEATROOT環境変数が定義してあればそのディレクトリを検索する
    • setParentLogger()
      親クラスのロガーを設定する
    • logInfo(message)
      RTC_INFOレベルでmessageを表示
    • logError(message)
      RTC_ERRORレベルでmessageを表示
    • createAdaptor(tag)
      送受信アダプタ(データポート、Socketポート、WebAdaptor)を生成する
    • parseCommands(element)
      コマンド(message, script, shell,statetransitionタグ)のパージング
    • getScripts(element)
      elementタグのTEXT要素をpythonスクリプトとして取得する
    • procScript(element, fname)
      elementタグのTEXT要素をpythonスクリプトとして実行する
    • getAttribute(element, name, def_val=None)
      elementタグのnameという属性を取得する。もし、その属性がなかった場合には、def_valを初期値として返す
    • getText(element)
      elementタグのTEXT要素を取得する
    • parseGui(name,element)
      GUI関連タグのパージングを行う
    • loadRuleFile(name, fname, state_name)
      fnameで指定されたseatmlファイルを読込、state_nameで指定された<state>タグ内の<rule>を読込、nameという内部状態のruleとする。state_nameが指定されない場合には、読み込んだseatmlの最初に定義された<state>タグの要素を対象とする。
    • parseRule(element)
      <rule>タグのパージング
    • parseExec(element)
      <onexec>タグのパージング
    • load(file_name)
      file_nameで指定されたSEATMLファイルを読込パージングを行う

その他の関数

decompString(strs)
<key>タグで指定された条件となる文字列の分解
decompStringSub(str)
decompStringから呼ばれる補助関数
convertDataType(dtype, data, code='utf-8')
文字列のコード変換、整数化、浮動小数点化など
formantInstanceName(name)
'aa/bb/cc.xx' のような文字列から 'cc'を抽出する
countSp(str)
行頭の空白文字をカウント
skipSps(txt)
最初の行の行頭の空白文字をカウントし、その数だけ各行の行頭から文字を削除したテキストを生成する

SocketAdaptor.py

Raw TCP Socket通信用のアダプタ(SocketAdaptor)の定義ファイル

SocketAdaptorクラス

このクラスは、TCP Socketの送受信通信を行うためのクラスです。最初に開発したSEATとの互換性のために実装されています。
  • Class SocketAdaptor(threading.Thred)
    • __init__(owner, name, host, port)
      コンストラクタ
    • run()
      送受信スレッドの実行
    • terminate()
      送受信スレッドの終了
    • send(name, message)
      データの送信

WebAdaptor.py

HTTPの通信用のアダプタクラスおよび関連関数を定義したファイル

SocketPortクラス

このクラスは、汎用のRaw TCP Socket 通信用のクラスです。
  • Class SocketPort(threading.Thred)
    • __init__(owner, name, host, port)
      コンストラクタ。デフォルトではクライアントモードで生成される
    • setHost(hostname)
      self.hostへhostnameをセットする
    • setPort(port_no)
      self.portへport_noをセットする
    • setClientMode()
      クライアントモードへ変更する
    • setServerMode()
      サーバーモードへ変更する
    • setServer(srv)
      self.server_adaptorへsrvをセットする
    • getParser()
      self.reader.parser を返す
    • bind()
      低レベルsocketを生成し、self.host, self.port でsocketに名前をつける(サーバーモード)
    • connect(acync=True)
      低レベルsocketを生成し、self.host, self.portのTCPソケットへ接続し、acyncが真の時にはreadスレッドを開始する(クライアントモード)
    • wait_for_read(timeout=0.1)
      selectシステムコールをつかってself.socketが読込可能状態まで待つ
    • receive_data(bufsize=4096, timeout=1.0)
      self.socketが読込可能状態であれば、4096バイトを最大としデータの読み込みを行う。データがtimeoutまで来なかった場合には、Noneを返す
    • start()
      self.mainloopを真にセットし、スレッドを開始する
    • run()
      送受信スレッドの実行。クライアントモードの場合には、message_receiver関数、サーバーモードの場合には、accept_service_loop関数を呼び出す
    • remove_service(adaptor)
      self.serviceからadaptorを除去する
    • accept_service_loop()
      このクラスでは何もしない。子クラスで実装すること。
    • message_receiver()
      receive_data関数でデータを受信し、受信データがあれば、self.reader.parse(data)を呼び出す
    • close_service()
      self.serviceに格納されたサービスにtermiate関数を呼び出し、すべて終了させる。
    • close()
      登録されているサービス(self.service)を終了しsocketを閉じる
    • terminate()
      送受信スレッドの終了
    • send(message,name=None)
      データ(message)の送信

WebSocketServerクラス

eSEATのWebAdaptorのクラス
  • Class WebSocketServer(SocketPort)
    • __init__(reader, name, host, port, index=None)
      コンストラクタ。サーバーモードで生成する。
    • accept_service(flag=True)
      外部接続の要求に対してSocketServiceのインスタンスを生成し、スレッドを実行する
    • accept_service_loop(lno=5, timeout=1.0)
      スレッド実行時のメインループ。lnoの数だけlistenで待ち受け、外部から接続要求がきたらaccept_serviceを呼び出す。
    • getServer()
      自分自身を返す。この関数は、serviceからコールされる。
    • addKey(key)
      self.service_keysにkeyを追加する
    • isInKey(key)
      self.service_keysにkeyが存在するかどうかを確認する
    • appendWhiteList(addr)
      self.host_listにaddrを使いする
    • removeWhiteList(addr)
      self.host_listからaddrを削除する
    • isInWhiteList(addr)
      self.host_listからaddrが存在するかどうかを確認する
    • run()
      スレッド実行のメイン関数、accept_service_loop関数を呼び出す
    • remove_service(adaptor)
      self.serviceからadaptorを削除する
    • getCometManager()
      self.cometManagerを返す
    • pushMessage(msg)
      現在の時刻とmsgを既に登録されてるcomet接続に対して一斉送信する
    • send(name, msg, encoding=None)
      pushMessage関数を呼び出す。(eSEATからコールされる)

SocketServiceクラス

WebSocketAdaptorのサービスを定義したクラス。WebSocketAdaptorのaccept_service関数内でインスタンスが生成される
  • Class SocketService(SocketPort)
    • __init__(server, reader, name, sock, addr)
      コンストラクタ。インスタンス生成時に、server.serviceに自信を追加する
    • run()
      スレッド実行のメイン関数。message_recever関数を呼び出す。
    • getServer()
      self.server_adaptorを返す

CommReaderクラス

SocketSeriveなどのsocketから受信されたデータを処理するReaderの基底クラスです。
  • Class CommReader()
    • __init__(owner=None, parser=None)
      コンストラクタ
    • parse(data)
      message_receiver関数から呼び出され、受信データを処理するための関数、内部では、appendBuffer, checkBufferを呼び出している
    • setOwner(owner)
      self.owenrにownerをセットする
    • getServer()
      self.owenr.getServer関数を呼び出し、その結果を返す
    • getIndexName()
      self.getServer().indexfileを返す
    • setBuffer(buff)
      self.buffer にbuffをセットし、self.current=0にする
    • appendBuffer(buff)
      sel.bufferにbuffを追加し、self.bufsizeを更新する
    • skipBuffer(n=4, flag=1)
      self.currentにnを加算し、flagが真であれば、self.bufferの先頭からnバイト削除し、self.current=0とする
    • clearBuffer(n=0)
      nが正の場合には、self.bufferの先頭からnバイト削除し、self.current=0とする。それ以外の場合には、self.buffer を空にする
    • checkBuffer()
      self.parser.checkMessageを呼び出し受信データを処理する
    • send(flag=False)
      self.owner.send(self.response)を呼び出し、結果を返す。flagが真の時には、送信後self.owner.close関数を呼び出す。
    • sendResponse(res, flag=True)
      self.responseにresを代入し、結果を返す
    • close()
      self.owner.close関数を呼び出す。
    • setResponse(msg)
      self.responseにmsgを追加する
    • clearResponse()
      self.responseをクリアする
    • read(nBytes, delFlag=1)
      self.bufferから self.currentからnBytesのデータを抽出する。delFlag=1のときには、抽出した分のデータをself.bufferから削除する
    • getParser()
      self.parserを返す。

CometReaderクラス

  • Class CometReader(CommReader)
    • __init__(rtc=None,dirname=None)
      コンストラクタ
    • getRtc()
      self.rtcを返す
    • doProcess(header, data)
      WebSocketAdaptorの中心となるデータ処理部
    • cometRequest(data, force=1)
      POSTリクエスト '/comet_request' に対応する処理
    • cometTrigger(data)
      POSTリクエスト '/comet_event' に対応する処理
    • registerHandler(data, force=False)
      cometRequest関数から呼ばれるリクエストの登録処理
    • callHandler(data)
      cometTrigger関数から呼ばれるリクエストの削除処理

CommParserクラス

Readerの中の格納されたバッファを処理するクラス(基底クラス)
  • Class CommParser()
    • __init__(buffer, rdr=None)
      コンストラクタ
    • setBuffer(buffer)
      self.bufferにbufferをセット
    • clearBuffer()
      self.bufferを空にする
    • appendBuffer(buffer)
      self.bufferの末尾にbufferを追加
    • skipBufer()
      現在のところ何もしない
    • checkMessage(buffer, offset=0, reader=None)
      現在のところ何もしない

HttpCommandクラス

HTTPのプロトコル解析を行うクラス
  • Class HttpCommand(CommParser)
    • __init__(dirname=".", buffer="", rdr=None)
      コンストラクタ
    • setRootDir(dirname)
      HTMLドキュメントのルートディレクトリをdirnameに設定する
    • checkMessage(buffer, offset=0, reader=None)
      self.parseHttpHeader関数でHTTPのリクエストが正常に受信できれば、reader.doProcess関数でデータ処理を行う
    • parseHttpHeader(buffer, offset=0)
      受信データを解析し、HTTPのヘッダー部分とデータ部分を抽出する
    • parseHeader(header)
      parseHttpHeader関数から呼ばれ、HTTPヘッダー部を配列に変換する
    • response200(ctype, contents)
      レスポンス200の送信
    • response404()
      レスポンス404の送信
    • response400()
      レスポンス400の送信

CometManagerクラス

Cometのリクエストを管理するクラス。
  • Class CometManager()
    • __init__(server)
      コンストラクタ
    • register(reader, id)
      Cometリクエストの登録(現在未使用)
    • registerHandler(reader, id, data, force=False)
      Cometリクエストの登録
    • closeHandler(id)
      登録されているCometリクエストを終了させる
    • callHandler(id, data)
      登録されているCometリクエストにdataを送信する(response関数またはresponse_all関数をコールする)
    • resoponse(id, json_data, ctype="application/json")
      idに対応するCometリクエストにjson_dataを送信する
    • resoponse_all(json_data, ctype="application/json")
      登録されているすべてのCometリクエストにjson_dataを送信する

その他の関数

get_file_contents(fname, dirname=".")
get_content_type(fname)
parseData(data)
convertVars(data)
jsonDump(data)
create_httpd(port_no=80, top="html")

utils.py

コマンドラインの引数のオプション解析等に関連したクラス、関数群を定義したファイル

MyParserクラス

コマンドラインの引数のオプション解析をおこなうクラス
  • Class MyParser(optpaese, OptionParser)
    • _add_help_option()
    • _add_version_option()
    • format_epilog(formatter)
    • exit(status=0, msg=None)
    • print_usage(file=None)
    • print_help(fine=None)
    • print_version(fine=None)

その他の関数

askopenfilename(title="")
askopenfilenames(title="")
addmanagerports(parser)
genmanagerargs(opt)
minmax(a, mx, mn)
array_flatten(ar)