[openrtm-commit:00726] r674 - in trunk/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC: . executionContext

openrtm @ openrtm.org openrtm @ openrtm.org
2012年 2月 16日 (木) 10:10:54 JST


Author: fsi-katami
Date: 2012-02-16 10:10:53 +0900 (Thu, 16 Feb 2012)
New Revision: 674

Modified:
   trunk/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/RTObject_impl.java
   trunk/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/executionContext/ExecutionContextBase.java
   trunk/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/executionContext/ExtTrigExecutionContext.java
   trunk/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/executionContext/PeriodicExecutionContext.java
Log:
The method to create EC has been changed. Now zero or more EC can be attached to RTC. Configuration options for EC have been changed changed. refs #2350  

Modified: trunk/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/RTObject_impl.java
===================================================================
--- trunk/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/RTObject_impl.java	2012-02-15 02:01:50 UTC (rev 673)
+++ trunk/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/RTObject_impl.java	2012-02-16 01:10:53 UTC (rev 674)
@@ -1,5 +1,8 @@
 package jp.go.aist.rtm.RTC;
 
+import java.util.Arrays;
+import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.Vector;
 import java.util.Set;
 import java.lang.reflect.Method;
@@ -24,6 +27,7 @@
 import jp.go.aist.rtm.RTC.util.ORBUtil;
 import jp.go.aist.rtm.RTC.util.POAUtil;
 import jp.go.aist.rtm.RTC.util.Properties;
+import jp.go.aist.rtm.RTC.util.StringUtil;
 import jp.go.aist.rtm.RTC.util.ValueHolder;
 import jp.go.aist.rtm.RTC.util.equalFunctor;
 import jp.go.aist.rtm.RTC.util.operatorFunc;
@@ -6148,8 +6152,253 @@
       m_actionListeners.ecaction_[ExecutionContextActionListenerType.EC_DETACHED].notify(ec_id);
     }
     
+    protected ReturnCode_t getInheritedECOptions(Properties default_opts){
+        final String inherited_opts[] =
+          {
+            "sync_transition",
+            "sync_activation",
+            "sync_deactivation",
+            "sync_reset",
+            "transition_timeout",
+            "activation_timeout",
+            "deactivation_timeout",
+            "reset_timeout",
+            ""
+          };
+        Properties node = m_properties.findNode("exec_cxt");
+        if (node == null) {
+            rtcout.println(Logbuf.WARN, "No exec_cxt option found.");
+            return ReturnCode_t.RTC_ERROR;
+        }
+        rtcout.println(Logbuf.DEBUG, "Copying inherited EC options.");
+        for (int ic=0; inherited_opts[ic].length()<1; ++ic) {
+            if (node.findNode(inherited_opts[ic]) != null) {
+                rtcout.println(Logbuf.PARANOID, "Option "
+                                            + inherited_opts[ic]
+                                            + " exists.");
+                default_opts.setProperty(inherited_opts[ic], 
+                                        node.getProperty(inherited_opts[ic]));
+            }
+        }
+        return ReturnCode_t.RTC_OK;
+    }
+    /**
+     * {@.ja getting individual EC options from RTC's configuration file}
+     * {@.en getting individual EC options from RTC's configuration file}
+     */
+    protected ReturnCode_t
+    getPrivateContextOptions(ArrayList<Properties> ec_args) {
+        rtcout.println(Logbuf.TRACE, "getPrivateContextOptions()");
+        // Component specific multiple EC option available
+        if (m_properties.findNode("execution_contexts") == null) {
+            rtcout.println(Logbuf.DEBUG, "No component specific EC specified.");
+            return ReturnCode_t.RTC_ERROR;
+        }
+        String args = m_properties.getProperty("execution_contexts");
+        ArrayList<String> ecs_tmp 
+                = new ArrayList(Arrays.asList(args.split(",")));
+        if (ecs_tmp.isEmpty()) {
+            return ReturnCode_t.RTC_ERROR; 
+        }
+        rtcout.println(Logbuf.DEBUG, 
+                                "Component specific e EC option available,"
+                                + args);
 
+        Properties default_opts = new Properties();
+        getInheritedECOptions(default_opts);
+        for (int ic=0; ic < ecs_tmp.size(); ++ic) {
+            if (StringUtil.normalize(ecs_tmp.get(ic)).equals("none")) {
+                rtcout.println(Logbuf.INFO, 
+                                "EC none. EC will not be bound to the RTC.");
+                ec_args.clear();
+                return ReturnCode_t.RTC_OK;
+            }
+            ArrayList<String> type_and_name 
+                = new ArrayList(Arrays.asList(ecs_tmp.get(ic).split("(")));
+            if (type_and_name.size() > 2) {
+                rtcout.println(Logbuf.DEBUG, 
+                                "Invalid EC type specified: "
+                                + ecs_tmp.get(ic));
+                continue;
+            }
+            Properties prop = default_opts;
+            // create EC's properties
+            prop.setProperty("type",type_and_name.get(0));
+            rtcout.println(Logbuf.DEBUG, 
+                                "p_type: " 
+                                + prop.getProperty("type"));
+            Properties p_type 
+                = m_properties.findNode("ec." + prop.getProperty("type"));
+            if (p_type != null) {
+                rtcout.println(Logbuf.DEBUG, "p_type props:");
+                String str = new String();
+                str = p_type._dump(str,p_type,0);
+                prop.merge(p_type);
+            }
+            else { 
+                rtcout.println(Logbuf.DEBUG, "p_type none");
+            }
+    
+            // EC name specified
+            rtcout.println(Logbuf.DEBUG, "size: "
+                                        + type_and_name.size()
+                                        + "name: "
+                                        + type_and_name.get(1));
+            if (type_and_name.size() == 2 &&
+                type_and_name.get(1).charAt(type_and_name.get(1).length() - 1) == ')') {
+                type_and_name.set(1, type_and_name.get(1).substring(type_and_name.get(1).length() - 1));
+                prop.setProperty("name", type_and_name.get(1));
+                Properties p_name 
+                    = m_properties.findNode("ec." + prop.getProperty("name"));
+                if (p_name != null) {
+                    rtcout.println(Logbuf.DEBUG, "p_name props:");
+                    String str = new String();
+                    str = p_name._dump(str,p_name,0);
+                    prop.merge(p_name);
+                }
+                else { 
+                    rtcout.println(Logbuf.DEBUG, "p_name none");
+                }
+            }
+            ec_args.add(prop);
+            rtcout.println(Logbuf.DEBUG, "New EC properties stored:");
+            String str = new String();
+            str = prop._dump(str,prop,0);
+        }
+        return ReturnCode_t.RTC_OK;
+    }
+
     /**
+     * {@.ja getting global EC options from rtc.conf}
+     * {@.en getting global EC options from rtc.conf}
+     */
+    protected ReturnCode_t
+    getGlobalContextOptions(Properties global_ec_props){
+        // exec_cxt option is obsolete
+        rtcout.println(Logbuf.TRACE, "getGlobalContextOptions()");
+
+        Properties prop = m_properties.findNode("exec_cxt.periodic");
+        if (prop == null) {
+            rtcout.println(Logbuf.WARN, "No global EC options found.");
+            return ReturnCode_t.RTC_ERROR;
+        }
+        rtcout.println(Logbuf.DEBUG, "Global EC options are specified.");
+        String str = new String();
+        str = prop._dump(str,prop,0);
+        getInheritedECOptions(global_ec_props);
+        global_ec_props.merge(prop);
+        return ReturnCode_t.RTC_OK;
+    }
+
+    /**
+     * {@.ja getting EC options}
+     * {@.en getting EC options}
+     */
+    protected ReturnCode_t
+    getContextOptions(ArrayList<Properties> ec_args) {
+        rtcout.println(Logbuf.TRACE, "getContextOptions()");
+        Properties global_props = new Properties();
+        ReturnCode_t ret_global  = getGlobalContextOptions(global_props);
+        ReturnCode_t ret_private = getPrivateContextOptions(ec_args);
+
+        // private(X), global(X) -> error
+        // private(O), global(O) -> private
+        // private(X), global(O) -> global
+        // private(O), global(X) -> private
+        if (ret_global != ReturnCode_t.RTC_OK 
+                                && ret_private != ReturnCode_t.RTC_OK) {
+            return ReturnCode_t.RTC_ERROR;
+        }
+        if (ret_global == ReturnCode_t.RTC_OK 
+                                && ret_private != ReturnCode_t.RTC_OK) {
+            ec_args.add(global_props);
+        }
+        return ReturnCode_t.RTC_OK;
+    }
+
+    /**
+     * {@.ja fiding existing EC from the factory}
+     * {@.en fiding existing EC from the factory}
+     */
+    protected ReturnCode_t findExistingEC(Properties ec_arg,
+                                ExecutionContextBase ec){
+        ArrayList<ExecutionContextBase> eclist;
+        eclist = ExecutionContextFactory.instance().createdObjects();
+        for (int ic=0; ic < eclist.size(); ++ic) {
+            if (eclist.get(ic).getProperties().getProperty("type").equals(ec_arg.getProperty("type")) &&
+                eclist.get(ic).getProperties().getProperty("name").equals(ec_arg.getProperty("name"))) {
+                ec = eclist.get(ic);
+                return ReturnCode_t.RTC_OK;
+            }
+        }
+        return ReturnCode_t.RTC_ERROR;
+    }
+    /**
+     * {@.ja creating, initializing and binding context}
+     * {@.en creating, initializing and binding context}
+     */
+    protected ReturnCode_t createContexts(ArrayList<Properties> ec_args){
+         ReturnCode_t ret = ReturnCode_t.RTC_OK;
+         Set<String> avail_ec
+           = ExecutionContextFactory.instance().getIdentifiers();
+
+         for (int ic=0; ic < ec_args.size(); ++ic) {
+             String ec_type = ec_args.get(ic).getProperty("type");
+             String ec_name = ec_args.get(ic).getProperty("name");
+             ExecutionContextBase ec = null;
+             // if EC's name exists, find existing EC in the factory.
+             if (!(ec_name.length()<1) &&
+                 findExistingEC(ec_args.get(ic), ec) == ReturnCode_t.RTC_OK) { 
+                 rtcout.println(Logbuf.DEBUG, "EC: type="
+                                        + ec_type
+                                        + ", name="
+                                        + ec_name
+                                        + " already exists.");
+             }
+             // If EC's name is empty or no existing EC, create new EC.
+             else { // If EC's name is empty or no existing EC, create new EC.
+                 boolean find_flag = false;
+                 Iterator it = avail_ec.iterator();
+                 while (it.hasNext()) {
+                     if(it.next().equals(ec_type)){
+                         find_flag= true; 
+                     }
+                 }
+                 if (!find_flag) {
+                     rtcout.println(Logbuf.WARN, "EC: "
+                                        + ec_type
+                                        + " is not available.");
+                     rtcout.println(Logbuf.DEBUG, "Available ECs: "
+                                        + avail_ec.toString());
+                     continue;
+                 }
+                 ExecutionContextFactory<ExecutionContextBase,String> factory 
+                                        = ExecutionContextFactory.instance();
+                 ec = factory.createObject(ec_type);
+
+             }
+     
+             // EC factory available but creation failed. Resource full?
+             if (ec == null) {
+                 rtcout.println(Logbuf.ERROR, "EC ("
+                                        + ec_type
+                                        + ") creation failed.");
+                 rtcout.println(Logbuf.DEBUG, "Available EC list: "
+                                        + avail_ec.toString());
+                 ret = ReturnCode_t.RTC_ERROR;
+                 continue;
+             }
+             rtcout.println(Logbuf.DEBUG, "EC ("
+                                        + ec_type
+                                        + ") created.");
+     
+             ec.init(ec_args.get(ic));
+             m_eclist.add(ec);
+             ec.bindComponent(this);
+         }
+         return ret;
+    }
+    /**
      * {@.ja マネージャオブジェクト}
      * {@.en Manager object}
      */

Modified: trunk/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/executionContext/ExecutionContextBase.java
===================================================================
--- trunk/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/executionContext/ExecutionContextBase.java	2012-02-15 02:01:50 UTC (rev 673)
+++ trunk/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/executionContext/ExecutionContextBase.java	2012-02-16 01:10:53 UTC (rev 674)
@@ -8,7 +8,9 @@
 import jp.go.aist.rtm.RTC.RTObject_impl;
 import jp.go.aist.rtm.RTC.util.Properties;
 import RTC.ExecutionKind;
+import RTC.LightweightRTObject;
 import RTC.ReturnCode_t;
+import RTC.RTObject;
 
 /**
  * <p>Periodic Sampled Data Processing(周期実行用)ExecutionContextのベースとなる
@@ -154,6 +156,108 @@
       return m_profile.getKindString(kind);
     }
 */
+    /**
+     * {@.ja ExecutionKind を設定する
+     * {@.en Set the ExecutionKind}
+     * <p>
+     * {@.ja この ExecutionContext の ExecutionKind を設定する}
+     * {@.en This operation sets the kind of the execution context.}
+     *
+     * @param kind 
+     *   {@.ja ExecutionKind}
+     *   {@.en ExecutionKind}
+     */
+    public ReturnCode_t setKind(ExecutionKind kind);
+
+    /**
+     * {@.ja Ownerコンポーネントをセットする。}
+     * {@.en Setting owner component of the execution context}
+     * <p>
+     * {@.ja このECのOwnerとなるRTCをセットする。}
+     * {@.en This function sets an RT-Component to be owner of 
+     * the execution context.}
+     *
+     * @param comp 
+     *   {@.ja OwnerとなるRTコンポーネント}
+     *   {@.en an owner RT-Component of this execution context}
+     * @return 
+     *   {@.ja ReturnCode_t 型のリターンコード}
+     *   {@.en The return code of ReturnCode_t type}
+     */
+    public ReturnCode_t setOwner(LightweightRTObject comp);
+
+    /**
+     * {@.ja Ownerコンポーネントの参照を取得する}
+     * {@.en Getting a reference of the owner component}
+     * <p>
+     * {@.ja このECのOwnerであるRTCの参照を取得する。}
+     * {@.en This function returns a reference of the owner RT-Component of
+     * this execution context}
+     *
+     * @return 
+     *   {@.ja OwnerRTコンポーネントの参照}
+     *   {@.en a reference of the owner RT-Component}
+     */
+    public RTObject getOwner();
+
+    /**
+     * {@.ja RTコンポーネントの参加者リストを取得する}
+     * {@.en Getting participant RTC list}
+     * <p>
+     * {@.ja 現在登録されている参加者RTCのリストを取得する。}
+     * {@.en This function returns a list of participant RTC of 
+     * the execution context.}
+     *
+     * @return 
+     *   {@.ja 参加者RTCのリスト}
+     *   {@.en Participants RTC list}
+     *
+     */
+    public RTObject[] getComponentList();
+
+    /**
+     * {@.ja Propertiesをセットする}
+     * {@.en Setting Properties}
+     * <p>
+     * {@.ja ExecutionContextProfile::properties をセットする。}
+     * {@.en This function sets ExecutionContextProfile::properties by
+     * coil::Properties.}
+     *
+     * @param props 
+     *   {@.ja ExecutionContextProfile::properties にセットするプロパティー}
+     *   {@.en Properties to be set to ExecutionContextProfile::properties.}
+     *
+     */
+    public void setProperties(Properties props);
+
+    /**
+     * {@.ja Propertiesを取得する}
+     * {@.en Setting Properties}
+     * <p>
+     * {@.ja ExecutionContextProfile::properties を取得する。}
+     * {@.en This function sets ExecutionContextProfile::properties by
+     * coil::Properties.}
+     *
+     * @return 
+     *   {@.ja Propertiesに変換された ExecutionContextProfile::properties}
+     *   {@.en Properties to be set to ExecutionContextProfile::properties.}
+     *
+     */
+    public Properties getProperties();
+
+    /**
+     * {@.ja Profileを取得する}
+     * {@.en Getting Profile}
+     * <p>
+     * {@.ja ExecutionContextProfile を取得する。}
+     * {@.en This function gets RTC::ExecutionContextProfile.}
+     *
+     * @return 
+     *   {@.ja RTC.ExecutionContextProfile}
+     *   {@.en RTC.ExecutionContextProfile}
+     *
+     */
+    public RTC.ExecutionContextProfile getProfile() ;
     public boolean finalizeExecutionContext();
 //    public abstract boolean finalizeExecutionContext();
 /*

Modified: trunk/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/executionContext/ExtTrigExecutionContext.java
===================================================================
--- trunk/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/executionContext/ExtTrigExecutionContext.java	2012-02-15 02:01:50 UTC (rev 673)
+++ trunk/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/executionContext/ExtTrigExecutionContext.java	2012-02-16 01:10:53 UTC (rev 674)
@@ -1163,5 +1163,123 @@
     public final String getKindString(ExecutionKind kind) {
       return m_profile.getKindString(kind);
     }
+    /**
+     * {@.ja ExecutionKind を設定する}
+     * {@.en Set the ExecutionKind}
+     * <p>
+     * {@.ja この ExecutionContext の ExecutionKind を設定する}
+     * {@.en This operation sets the kind of the execution context.}
+     *
+     * @param kind 
+     *   {@.ja ExecutionKind}
+     *   {@.en kind ExecutionKind}
+     *
+     */
+    public ReturnCode_t setKind(ExecutionKind kind) {
+        return m_profile.setKind(kind);
+    }
 
+    /**
+     * {@.ja Ownerコンポーネントをセットする。}
+     * {@.en Setting owner component of the execution context}
+     * <p>
+     * {@.ja このECのOwnerとなるRTCをセットする。}
+     * {@.en This function sets an RT-Component to be owner of 
+     * the execution context.}
+     *
+     * @param comp 
+     *   {@.ja OwnerとなるRTコンポーネント}
+     *   {@.en an owner RT-Component of this execution context}
+     * @return 
+     *   {@.ja ReturnCode_t 型のリターンコード}
+     *   {@.en The return code of ReturnCode_t type}
+     */
+    public ReturnCode_t setOwner(LightweightRTObject comp){
+        return m_profile.setOwner(comp);
+    }
+
+    /**
+     * {@.ja Ownerコンポーネントの参照を取得する}
+     * {@.en Getting a reference of the owner component}
+     * <p>
+     * {@.ja このECのOwnerであるRTCの参照を取得する。}
+     * {@.en This function returns a reference of the owner RT-Component of
+     * this execution context}
+     *
+     * @return 
+     *   {@.ja OwnerRTコンポーネントの参照}
+     *   {@.en a reference of the owner RT-Component}
+     */
+    public RTC.RTObject getOwner() {
+        return m_profile.getOwner();
+    }
+
+    /**
+     * {@.ja RTコンポーネントの参加者リストを取得する}
+     * {@.en @brief Getting participant RTC list}
+     * <p>
+     * {@.ja 現在登録されている参加者RTCのリストを取得する。}
+     * {@.en This function returns a list of participant RTC of 
+     *  the execution context.}
+     *
+     * @return 
+     *   {@.ja 参加者RTCのリスト}
+     *   {@.en Participants RTC list}
+     *
+     */
+    public RTC.RTObject[] getComponentList(){
+        return m_profile.getComponentList();
+    }
+
+
+    /**
+     * {@.ja Propertiesをセットする}
+     * {@.en Setting Properties}
+     * <p>
+     * {@.ja ExecutionContextProfile::properties をセットする。}
+     * {@.en This function sets ExecutionContextProfile::properties by
+     * Properties.}
+     *
+     * @param props 
+     *   {@.ja ExecutionContextProfile::properties にセットするプロパティー}
+     *   {@.en Properties to be set to ExecutionContextProfile::properties.}
+     *
+     */
+    public void setProperties(Properties props){
+        m_profile.setProperties(props);
+    }
+
+    /**
+     * {@.ja Propertiesを取得する}
+     * {@.en Setting Properties}
+     * <p>
+     * {@.ja ExecutionContextProfile::properties を取得する。}
+     * {@.en This function sets ExecutionContextProfile::properties by
+     * Properties.}
+     *
+     * @return 
+     *   {@.ja Propertiesに変換された ExecutionContextProfile::properties}
+     *   {@.en Properties to be set to ExecutionContextProfile::properties.}
+     *
+     */
+    public Properties getProperties() {
+        return m_profile.getProperties();
+    }
+
+    /**
+     * {@.ja rofileを取得する}
+     * {@.en Getting Profile}
+     * <p>
+     * {@.ja ExecutionContextProfile を取得する。}
+     * {@.en This function gets ExecutionContextProfile.}
+     *
+     * @return 
+     *   {@.ja ExecutionContextProfile}
+     *   {@.en ExecutionContextProfile}
+     *
+     */
+    public RTC.ExecutionContextProfile getProfile(){
+        return m_profile.getProfile();
+    }
+
 }

Modified: trunk/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/executionContext/PeriodicExecutionContext.java
===================================================================
--- trunk/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/executionContext/PeriodicExecutionContext.java	2012-02-15 02:01:50 UTC (rev 673)
+++ trunk/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/executionContext/PeriodicExecutionContext.java	2012-02-16 01:10:53 UTC (rev 674)
@@ -1264,4 +1264,122 @@
     public final String getKindString(ExecutionKind kind) {
       return m_profile.getKindString(kind);
     }
+    /**
+     * {@.ja ExecutionKind を設定する}
+     * {@.en Set the ExecutionKind}
+     * <p>
+     * {@.ja この ExecutionContext の ExecutionKind を設定する}
+     * {@.en This operation sets the kind of the execution context.}
+     *
+     * @param kind 
+     *   {@.ja ExecutionKind}
+     *   {@.en kind ExecutionKind}
+     *
+     */
+    public ReturnCode_t setKind(ExecutionKind kind) {
+        return m_profile.setKind(kind);
+    }
+
+    /**
+     * {@.ja Ownerコンポーネントをセットする。}
+     * {@.en Setting owner component of the execution context}
+     * <p>
+     * {@.ja このECのOwnerとなるRTCをセットする。}
+     * {@.en This function sets an RT-Component to be owner of 
+     * the execution context.}
+     *
+     * @param comp 
+     *   {@.ja OwnerとなるRTコンポーネント}
+     *   {@.en an owner RT-Component of this execution context}
+     * @return 
+     *   {@.ja ReturnCode_t 型のリターンコード}
+     *   {@.en The return code of ReturnCode_t type}
+     */
+    public ReturnCode_t setOwner(LightweightRTObject comp){
+        return m_profile.setOwner(comp);
+    }
+
+    /**
+     * {@.ja Ownerコンポーネントの参照を取得する}
+     * {@.en Getting a reference of the owner component}
+     * <p>
+     * {@.ja このECのOwnerであるRTCの参照を取得する。}
+     * {@.en This function returns a reference of the owner RT-Component of
+     * this execution context}
+     *
+     * @return 
+     *   {@.ja OwnerRTコンポーネントの参照}
+     *   {@.en a reference of the owner RT-Component}
+     */
+    public RTC.RTObject getOwner() {
+        return m_profile.getOwner();
+    }
+
+    /**
+     * {@.ja RTコンポーネントの参加者リストを取得する}
+     * {@.en @brief Getting participant RTC list}
+     * <p>
+     * {@.ja 現在登録されている参加者RTCのリストを取得する。}
+     * {@.en This function returns a list of participant RTC of 
+     *  the execution context.}
+     *
+     * @return 
+     *   {@.ja 参加者RTCのリスト}
+     *   {@.en Participants RTC list}
+     *
+     */
+    public RTC.RTObject[] getComponentList(){
+        return m_profile.getComponentList();
+    }
+
+
+    /**
+     * {@.ja Propertiesをセットする}
+     * {@.en Setting Properties}
+     * <p>
+     * {@.ja ExecutionContextProfile::properties をセットする。}
+     * {@.en This function sets ExecutionContextProfile::properties by
+     * Properties.}
+     *
+     * @param props 
+     *   {@.ja ExecutionContextProfile::properties にセットするプロパティー}
+     *   {@.en Properties to be set to ExecutionContextProfile::properties.}
+     *
+     */
+    public void setProperties(Properties props){
+        m_profile.setProperties(props);
+    }
+
+    /**
+     * {@.ja Propertiesを取得する}
+     * {@.en Setting Properties}
+     * <p>
+     * {@.ja ExecutionContextProfile::properties を取得する。}
+     * {@.en This function sets ExecutionContextProfile::properties by
+     * Properties.}
+     *
+     * @return 
+     *   {@.ja Propertiesに変換された ExecutionContextProfile::properties}
+     *   {@.en Properties to be set to ExecutionContextProfile::properties.}
+     *
+     */
+    public Properties getProperties() {
+        return m_profile.getProperties();
+    }
+
+    /**
+     * {@.ja rofileを取得する}
+     * {@.en Getting Profile}
+     * <p>
+     * {@.ja ExecutionContextProfile を取得する。}
+     * {@.en This function gets ExecutionContextProfile.}
+     *
+     * @return 
+     *   {@.ja ExecutionContextProfile}
+     *   {@.en ExecutionContextProfile}
+     *
+     */
+    public RTC.ExecutionContextProfile getProfile(){
+        return m_profile.getProfile();
+    }
 }



openrtm-commit メーリングリストの案内