プロジェクト

全般

プロフィール

機能 #4650

CSPポートを実装する

n-ando5年以上前に追加. 5年以上前に更新.

ステータス:
新規
優先度:
通常
担当者:
-
対象バージョン:
-
開始日:
2019/01/08
期日:
進捗率:

0%

予定工数:

説明

CSPのチャネルを疑似的に実現するポートを実装する。

CSPPort.idl (1.66 KB) CSPPort.idl n-ando, 2019/01/08 22:05
CSP実装-20160830.pptx (778 KB) CSP実装-20160830.pptx n-ando, 2019/01/08 22:05
CSP実装-20161107(OpenRTM).pptx (105 KB) CSP実装-20161107(OpenRTM).pptx n-ando, 2019/01/08 22:06

履歴

#1 n-ando5年以上前に更新

#ifndef CSPPORT_IDL
#define CSPPORT_IDL

#pragma prefix "openrtm.aist.go.jp" 
/*!
 * @brief CSP (Communicating Sequential Processes) channel port
 *
 * Communicating Sequential Processes (CSP) is a formal language for
 * describing patterns of interaction in concurrent systems. CSP uses
 * explicit channels for message passing, whereas actor systems
 * transmit messages to named destination actors. These approaches may
 * be considered duals of each other, in the sense that processes
 * receiving through a single channel effectively have an identity
 * corresponding to that channel, while the name-based coupling
 * between actors may be broken by constructing actors that behave as
 * channels.
 * (from https://en.wikipedia.org/wiki/Communicating_sequential_processes)
 *
 * http://arild.github.io/csp-presentation
 * https://qiita.com/ymgyt/items/420eaf2bcf7bee4ae152
 * 

 * This interface definition realizes CSP channel as an RTC port.
 *
 * CSPチャネル
 * - 同期型メッセージパッシング
 *   - 確実に伝達(受信側が受信できるまで待つ)
 * - 通信可能な相手を自動的に選択して通信可能
 *   - 受信可能なプロセスを選択して送信する(全てが受信不可のときは、ひと
 *     つが受信可能になるまで送信を延期)
 * - 通信可能なチャネルを自動的に選択(外部選択)して通信可能
 *   - 受信可能なプロセスが接続されているチャネルを選択して送信する
 *
 */
module CSP
{
  typedef sequence<octet> CdrData;

  interface InPortCsp
  {
    PortStatus put(in CdrData data);
    bool is_writable();
    void notify();
  };

  interface OutPortCsp
  {
    PortStatus get(out CdrData data);
    bool is_readable();
    void notify();
  };
};

#endif // CSPPORT_IDL

#2 n-ando5年以上前に更新

他の形式にエクスポート: Atom PDF