[openrtm-commit:00710] r670 - in trunk: . jp.go.aist.rtm.RTC jp.go.aist.rtm.RTC/idl jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC

openrtm @ openrtm.org openrtm @ openrtm.org
2012年 2月 14日 (火) 10:53:32 JST


Author: fsi-katami
Date: 2012-02-14 10:53:31 +0900 (Tue, 14 Feb 2012)
New Revision: 670

Added:
   trunk/jp.go.aist.rtm.RTC/idl/Logger.idl
   trunk/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/LoggerConsumer.java
Modified:
   trunk/
   trunk/jp.go.aist.rtm.RTC/
   trunk/jp.go.aist.rtm.RTC/build.xml
Log:
Implemented  LoggerConsumer.


Property changes on: trunk
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/RELENG_1_0_0:60-401
/branches/work/ConfigurationCallback:631-635
/branches/work/DesignChangeOfEC:648-660
/branches/work/ForComponentActionListener:521-522
/branches/work/ForComponentObserverConsumer:534-543
/branches/work/ForConfigurationListener:524-526
/branches/work/ForFileNameservice:623-628
/branches/work/ForLogFormat:518-519
/branches/work/ForPortConnectListener:528-532
/branches/work/ForSDOServiceAdminClass:505-507
/branches/work/SourceSharing:591-603
/branches/work/ToGetProperties:545-548
/branches/work/ToIFR_ID:509-514
   + /branches/RELENG_1_0_0:60-401
/branches/work/ConfigurationCallback:631-635
/branches/work/DesignChangeOfEC:648-660
/branches/work/ForComponentActionListener:521-522
/branches/work/ForComponentObserverConsumer:534-543
/branches/work/ForConfigurationListener:524-526
/branches/work/ForFileNameservice:623-628
/branches/work/ForLogFormat:518-519
/branches/work/ForPortConnectListener:528-532
/branches/work/ForSDOServiceAdminClass:505-507
/branches/work/LoggerService:666-669
/branches/work/SourceSharing:591-603
/branches/work/ToGetProperties:545-548
/branches/work/ToIFR_ID:509-514


Property changes on: trunk/jp.go.aist.rtm.RTC
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/RELENG_1_0/jp.go.aist.rtm.RTC:408-498
/branches/RELENG_1_0_0/jp.go.aist.rtm.RTC:60-401
/branches/work/ConfigurationCallback/jp.go.aist.rtm.RTC:631-635
/branches/work/DesignChangeOfEC/jp.go.aist.rtm.RTC:648-660
/branches/work/ForComponentActionListener/jp.go.aist.rtm.RTC:521-522
/branches/work/ForComponentObserverConsumer/jp.go.aist.rtm.RTC:534-543
/branches/work/ForConfigurationListener/jp.go.aist.rtm.RTC:524-526
/branches/work/ForFileNameservice/jp.go.aist.rtm.RTC:623-628
/branches/work/ForLogFormat/jp.go.aist.rtm.RTC:518-519
/branches/work/ForPortConnectListener/jp.go.aist.rtm.RTC:528-532
/branches/work/ForSDOServiceAdminClass/jp.go.aist.rtm.RTC:505-507
/branches/work/SourceSharing/jp.go.aist.rtm.RTC:591-603
/branches/work/ToGetProperties/jp.go.aist.rtm.RTC:545-548
/branches/work/ToIFR_ID/jp.go.aist.rtm.RTC:509-514
   + /branches/RELENG_1_0/jp.go.aist.rtm.RTC:408-498
/branches/RELENG_1_0_0/jp.go.aist.rtm.RTC:60-401
/branches/work/ConfigurationCallback/jp.go.aist.rtm.RTC:631-635
/branches/work/DesignChangeOfEC/jp.go.aist.rtm.RTC:648-660
/branches/work/ForComponentActionListener/jp.go.aist.rtm.RTC:521-522
/branches/work/ForComponentObserverConsumer/jp.go.aist.rtm.RTC:534-543
/branches/work/ForConfigurationListener/jp.go.aist.rtm.RTC:524-526
/branches/work/ForFileNameservice/jp.go.aist.rtm.RTC:623-628
/branches/work/ForLogFormat/jp.go.aist.rtm.RTC:518-519
/branches/work/ForPortConnectListener/jp.go.aist.rtm.RTC:528-532
/branches/work/ForSDOServiceAdminClass/jp.go.aist.rtm.RTC:505-507
/branches/work/LoggerService/jp.go.aist.rtm.RTC:666-669
/branches/work/SourceSharing/jp.go.aist.rtm.RTC:591-603
/branches/work/ToGetProperties/jp.go.aist.rtm.RTC:545-548
/branches/work/ToIFR_ID/jp.go.aist.rtm.RTC:509-514

Modified: trunk/jp.go.aist.rtm.RTC/build.xml
===================================================================
--- trunk/jp.go.aist.rtm.RTC/build.xml	2012-02-13 08:41:57 UTC (rev 669)
+++ trunk/jp.go.aist.rtm.RTC/build.xml	2012-02-14 01:53:31 UTC (rev 670)
@@ -117,6 +117,8 @@
 
 	<property name="idl.ComponentObserver" value="${idl.path}/ComponentObserver.idl" />
 
+	<property name="idl.Logger" value="${idl.path}/Logger.idl" />
+
 	<property name="idl.test.CorbaConsumer" value="${idl.path.tests}/CorbaConsumer/Hello.idl" />
 
 	<property name="idl.test.CorbaPort" value="${idl.path.tests}/CorbaPort/MyService.idl" />
@@ -474,6 +476,12 @@
 
 		</exec>
 
+		<exec executable="${java.home}\..\bin\idlj">
+
+			<arg line="-v -fall -td ${source} -i ${idl.path} -emitAll ${idl.Logger}"/>
+
+		</exec>
+
 	</target>
 
 
Copied: trunk/jp.go.aist.rtm.RTC/idl/Logger.idl (from rev 669, branches/work/LoggerService/jp.go.aist.rtm.RTC/idl/Logger.idl)
===================================================================
--- trunk/jp.go.aist.rtm.RTC/idl/Logger.idl	                        (rev 0)
+++ trunk/jp.go.aist.rtm.RTC/idl/Logger.idl	2012-02-14 01:53:31 UTC (rev 670)
@@ -0,0 +1,388 @@
+// -*- IDL -*-
+/*!
+ * @file Logger.idl
+ * @brief Component logger SDO service
+ * @date $Date$
+ * @author Noriaki Ando <n-ando at aist.go.jp>
+ *
+ * Copyright (C) 2011
+ *     Noriaki Ando
+ *     Intelligent Systems Research Institute,
+ *     National Institute of
+ *         Advanced Industrial Science and Technology (AIST), Japan
+ *     All rights reserved.
+ *
+ * $Id$
+ *
+ */
+
+#include <BasicDataType.idl>
+#include <SDOPackage.idl>
+/*!
+ * @if jp
+ * @brief コンポーネントログ収集サービスインターフェース
+ *
+ * コンポーネントのログ情報を外部から取得するためのインターフェース。コ
+ * ンポーネントに対して、本SDOサービスオブジェクトをアタッチすることで、
+ * コンポーネントが出力するログを外部から取得することができる。
+ * 
+ * @since 1.1
+ *
+ * @else
+ * @brief Component logging service interface
+ *
+ * This interface defines logging service of an RT-Component from
+ * outside. Attaching this service interface to an RT-Component, you
+ * can get logging information from the RT-Component.
+ *
+ * @since 1.1
+ * @endif
+ *
+ */
+module OpenRTM
+{
+  /*!
+   * @if jp
+   *
+   * @brief ログレベル
+   * 
+   * ログレベル。ログレベルは9段階あり、それぞれ以下の意味を持つ。
+   * 
+   *  - SILENT  : ロギング機能をオフにするための疑似レベル
+   *  - ERROR   : エラーが発生したことを意味するログレベル
+   *  - WARN    : エラーではないが注意すべき警告を意味するログレベル
+   *  - INFO    : 付加的な情報を提供するためのログレベル
+   *  - NORMAL  : 通常の情報を提供するためのログレベル
+   *  - DEBUG   : デバッグ情報を提供する際のログレベル
+   *  - TRACE   : トレースレベルの情報を提供する際のログレベル
+   *  - VERBOSE : トレース情報以上に詳細な情報を提供する際のログレベル
+   *  - PARANOID: リアルタイム周期処理実行時等の情報を提供するログレベル
+   * 
+   * @else
+   *
+   * @brief Log level
+   * 
+   * This enumeration defines log levels. The log level consists of
+   * nine levels, and each level means the following meaning.
+   * 
+   *  - SILENT  : Pseudo log level to stop logging function.
+   *  - ERROR   : This log level means that an error event is occurring.
+   *  - WARN    : This log level means that a warning event is occurring.
+   *  - INFO    : This log level used to notify information.
+   *  - NORMAL  : This log level means that an event is normal thing.
+   *  - DEBUG   : This log level used to notify debugging information.
+   *  - TRACE   : This log level used to notify trace information.
+   *  - VERBOSE : This log level used to notify more detailed information.
+   *  - PARANOID: This is used only to notify information in real-time loop.
+   *
+   * @endif
+   */
+  enum LogLevel
+  {
+    SILENT,
+    ERROR,
+    WARN,
+    INFO,
+    NORMAL,
+    DEBUG,
+    TRACE,
+    VERBOSE,
+    PARANOID
+  };
+
+  /*!
+   * @if jp
+   * @brief ログレコード構造体
+   *
+   * ログメッセージを含むログ情報を保持する構造体
+   *
+   * @else
+   * @brief Log record structure
+   *
+   * This struct defines logging information including log message.
+   *
+   * @endif
+   *
+   */
+  struct LogRecord
+  {
+    /*!
+     * @if jp
+     * @brief 時刻
+     * タイムスタンプ
+     * @else
+     * @brief Time
+     * Time stump.
+     * @endif
+     */
+    RTC::Time   time;
+
+    /*!
+     * @if jp
+     * @brief ロガー名
+     * ログを書きこんだロガーオブジェクト名
+     * @else
+     * @brief logger name
+     * The logger name which writes this record.
+     * @endif
+     */
+    string loggername;
+
+    /*!
+     * @if jp
+     * @brief ログレベル
+     * このレコードのログレベル
+     * @else
+     * @brief Log level
+     * The log level of this record
+     * @endif
+     */
+    LogLevel  level;
+
+    /*!
+     * @if jp
+     * @brief メッセージ
+     * ログメッセージ
+     * @else
+     * @brief Message
+     * Log message.
+     * @endif
+     */
+    string message;
+  };
+
+
+  /*!
+   * @if jp
+   *
+   * @interface Logger インターフェース
+   *
+   * 個別のRTCのログ情報を取得するためのサービスインターフェース。SDO
+   * Service として対象となるRTC/SDOに対してアタッチされ、RTC/SDOのログ
+   * 情報を外部から取得する。実際の処理シーケンスは以下の通りである。
+   *
+   * -# SDO::get_configuration() により Configuration オブジェクトを取得
+   * -# Configuration::add_service_profile() によりTool側の
+   *     Logger を ServiceProfile により RTC に与える。
+   *     ServiceProfile のメンバーは以下のように設定すること
+   *   - id: UUID など一意なIDを設定する。削除時にも必要になるので、Tool
+   *     側ではIDを保持しておかなければならない。
+   *   - interface_type: 当該サービスのIFRのIDを文字列として指定。RTC側で
+   *     はこの文字列により当該サービスオブジェクトを受け入れるか決定す
+   *     るため指定は必須となる。
+   *   - properties: RTC側のサービスの受け入れ側に通知するプロパティを設
+   *     定する。このサービスでは、下記のログレベル関連のプロパティを
+   *     指定する。
+   *    - service: SDOService オブジェクトの参照を指定する。
+   * -# RTC側でロガーへの書き込みが有った場合には publish() オペレーション
+   *     が LogRecord 構造体としてログメッセージやタイムスタンプをサー
+   *     ビス側に通知する。サービスを保持する側では、LogRecord内の情報
+   *     をファイルに書き込む、表示する等の方法で利用することができる。
+   * -# RTC側が終了するときには、close() オペレーションが呼び出されるの
+   *    で、サービス提供側は適切な終了処理を行う必要がある。close()が呼
+   *    ばれた場合は、remove_service_profile() により明示的にサービスを
+   *    削除する必要はない。またRTC側ではclose() を呼んだ後は、当該サー
+   *    ビスに関する情報やリソースを適切に開放しなければならない。
+   * -# ツール等のサービス提供側が終了する場合などは、
+   *    remove_service_profile() オペレーションを呼び出し、当該RTC上の
+   *    リソースを適切に開放する必要がある。RTC側は、
+   *    remove_service_profile() が呼び出された際には、当該ロギングに関
+   *    するリソースを適切に開放する必要がある。
+   *
+   * 上記のプロセスを下記シーケンス図に示す。
+   *
+   * <pre>
+   * 
+   *   [RTC]    [Configuration]           [Logger]      [Tool]
+   *     |            |                       |            |
+   *     |            | get_configuration()   |            |
+   *     |<------------------------------------------------|
+   *     |            |                       |            |
+   *     |            | add_service_profile(prof)          |
+   *     |            |<-----------------------------------|
+   *     |            |                       |            |
+   *     |            | publish(logrecord)    |            |
+   *     |----------------------------------->|            |
+   *     |            | publish(logrecord)    |            |
+   *     |----------------------------------->|            |
+   *     |            |       :               |            |
+   *     |            |       :               |            |
+   *     |            | 1) RTCが先に終了するとき           |
+   *     |            |       :               |            |
+   *     |            | [close()]             |            |
+   *     |----------------------------------->|            |
+   *     |            |       :               |            |
+   *     |            | 2) ツールがロギングを終了するとき  |
+   *     |            |       :               |            |
+   *     |            | remove_service_profile(id)         |
+   *     |            |<-----------------------------------|
+   *     |            |                       |            |
+   *     |            |                       x            x
+   *
+   * </pre>
+   *
+   * なお、ServiceProfile::properties に指定するプロパティとしては、
+   *
+   * - logger.log_level: (ERROR, WARN, INFO, NORMAL, DEBUG, TRACE, VERBOSE,
+   *                     PARANOID)
+   * - logger.filter: logger name or "ALL"
+   *
+   * がある、
+   *
+   * - logger.log_level: ERROR, WARN, INFO, NORMAL, DEBUG, TRACE,
+   *   VERBOSE またはPARANOID のうち一つを指定する。無指定の場合は
+   *   NORMAL と同等となる。指定されたレベルと同等あるいはそれより重要
+   *   な情報がロギングされる。すなわち、それぞれのログレベルを指定した
+   *   際に出力されるログは以下の関係になる。
+   *   - ERROR   : (ERROR)
+   *   - WARN    : (ERROR, WARN)
+   *   - INFO    : (ERROR, WARN, INFO)
+   *   - NORMAL  : (ERROR, WARN, INFO, NORMAL)
+   *   - DEBUG   : (ERROR, WARN, INFO, NORMAL, DEBUG)
+   *   - TRACE   : (ERROR, WARN, INFO, NORMAL, DEBUG, TRACE)
+   *   - VERBOSE : (ERROR, WARN, INFO, NORMAL, DEBUG, TRACE, VERBOSE)
+   *   - PARANOID: (ERROR, WARN, INFO, NORMAL, DEBUG, TRACE, VERBOSE, PARA)
+   * - logger.filter: RTC内部は、RTC本体、データポート、サービスポート
+   *   等それぞれのオブジェクトにロガーオブジェクトが存在する。このプロ
+   *   パティはロギングする対象のロガーオブジェクトをカンマ区切りで指定
+   *   する。または、ALLを指定することでRTC配下のすべてのロギングオブジェ
+   *   クトからのメッセージを受信する。無指定の場合はALLと同等になる。
+   *
+   * @else
+   * @class
+   *
+   * @interface Logger interface
+   *
+   * This interface defines logging service for each RT-Component.
+   * This service would be attached to a target RTC/SDO, and provides
+   * functionality to collect log information from remote
+   * applications.  Actual process sequences are the following.
+   *
+   * -# Get configuration object by SDO::get_configuration() 
+   * -# Attach Logger object with ServiceProfile by
+   *    Configuration::add_service_profile(). ServiceProfile should be
+   *    set as follows.
+   *   - id: An unique ID like UUID. This ID is used when this service
+   *         is removed. Tools or applications should keep the ID for
+   *         this.
+   *   - interface_type: Specify this service's IFR ID in string. This
+   *         string is used to search available service in the RTC,
+   *         and if it matches with available SDO services, this
+   *         service is accepted.
+   *   - properties: This member specifies properties to notify
+   *         information to the target RTC.  The following properties
+   *         for log level and others would be specified in this
+   *         properties.
+   *
+   *   - service: A SDOService object reference is specified.
+   * -# When logging occurs in the RTC side, the "publish()" operation
+   *    notifies a log message, time stump and so on to the service
+   *    provider as a LogRecord structure. The service provider can
+   *    use notified information for example writing to files and
+   *    showing them on the display.
+   * -# When RTC is terminated, the "close()" operation is called, and
+   *    the service provider has to terminate the logging service
+   *    properly.  In this case, tools and applications that have
+   *    service provider do not need to call remove_service_profile()
+   *    and remove the service explicitly. After calling close()
+   *    operation, the RTC has to release the service profile and
+   *    resources.
+   * -# When tools and applications terminate services, they have to
+   *    call remove_service_profile() operation, and have to release
+   *    resources in the target RTC. When remove_service_profile() is
+   *    called, the RTC have to release service profile and resources
+   *    for this service.
+   *
+   * The following diagram shows above mentioned sequence.
+   *
+   * <pre>
+   * 
+   *   [RTC]    [Configuration]           [Logger]      [Tool]
+   *     |            |                       |            |
+   *     |            | get_configuration()   |            |
+   *     |<------------------------------------------------|
+   *     |            |                       |            |
+   *     |            | add_service_profile(prof)          |
+   *     |            |<-----------------------------------|
+   *     |            |                       |            |
+   *     |            | publish(logrecord)    |            |
+   *     |----------------------------------->|            |
+   *     |            | publish(logrecord)    |            |
+   *     |----------------------------------->|            |
+   *     |            |       :               |            |
+   *     |            |       :               |            |
+   *     |            | 1) When RTC is terminated          |
+   *     |            |       :               |            |
+   *     |            | [close()]             |            |
+   *     |----------------------------------->|            |
+   *     |            |       :               |            |
+   *     |            | 2) When tool terminates logging    |
+   *     |            |       :               |            |
+   *     |            | remove_service_profile(id)         |
+   *     |            |<-----------------------------------|
+   *     |            |                       |            |
+   *     |            |                       x            x
+   *
+   * </pre>
+   *
+   * So far, the following properties for ServiceProfile::properties
+   * are available.
+   *
+   * - logger.log_level: (ERROR, WARN, INFO, NORMAL, DEBUG, TRACE, VERBOSE,
+   *                     PARANOID)
+   * - logger.filter: logger name or "ALL"
+   *
+   *
+   * - logger.log_level: One of ERROR, WARN, INFO, NORMAL, DEBUG,
+   *     TRACE, VERBOSE or PARANOID can be specified.  If no
+   *     properties are specified, it will be NORMAL.  Log messages
+   *     equals and/or more important specified log level would be
+   *     published.  The following list shows the relation between
+   *     specified level and published level.
+   *   - ERROR   : (ERROR)
+   *   - WARN    : (ERROR, WARN)
+   *   - INFO    : (ERROR, WARN, INFO)
+   *   - NORMAL  : (ERROR, WARN, INFO, NORMAL)
+   *   - DEBUG   : (ERROR, WARN, INFO, NORMAL, DEBUG)
+   *   - TRACE   : (ERROR, WARN, INFO, NORMAL, DEBUG, TRACE)
+   *   - VERBOSE : (ERROR, WARN, INFO, NORMAL, DEBUG, TRACE, VERBOSE)
+   *   - PARANOID: (ERROR, WARN, INFO, NORMAL, DEBUG, TRACE, VERBOSE, PARA)
+   * - logger.filter: Some logger objects exist in some object of an
+   *     RTC such as RTC body, data port, service port and so on.
+   *     Some logger objects exist in some object of an RTC such as
+   *     RTC body, data port, service port and so on.  This properties
+   *     specify target logger names separated with commas.  If ALL is
+   *     specified, all the logger's messages under the target RTC's
+   *     logger would be published.  If no property is specified, all
+   *     the messages will be published.
+   *
+   * @endif
+   *
+   */
+  interface Logger
+    : SDOPackage::SDOService
+  {
+    /*!
+     * @if jp
+     * @brief ログメッセージ配信
+     * ログメッセージを配信する
+     * @else
+     * @brief Publish log message
+     * This operation publishes log message.
+     * @endif
+     */
+    oneway void publish(in LogRecord record);
+
+    /*!
+     * @if jp
+     * @brief サービスの終了
+     * ロギングサービスの終了を通知する
+     * @else
+     * @brief Terminate service
+     * This operation notifies logging service.
+     * @endif
+     */
+    void close();
+  };
+};
+

Copied: trunk/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/LoggerConsumer.java (from rev 669, branches/work/LoggerService/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/LoggerConsumer.java)
===================================================================
--- trunk/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/LoggerConsumer.java	                        (rev 0)
+++ trunk/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/LoggerConsumer.java	2012-02-14 01:53:31 UTC (rev 670)
@@ -0,0 +1,118 @@
+package jp.go.aist.rtm.RTC;
+
+import OpenRTM.Logger;
+import OpenRTM.LoggerHelper;
+
+import _SDOPackage.NVListHolder;
+
+import jp.go.aist.rtm.RTC.port.CorbaConsumer;
+import jp.go.aist.rtm.RTC.util.CallbackFunction;
+import jp.go.aist.rtm.RTC.util.NVUtil;
+import jp.go.aist.rtm.RTC.util.Properties;
+  /**
+   * 
+   * 
+   * 
+   */
+public class LoggerConsumer implements SdoServiceConsumerBase, CallbackFunction, ObjectCreator<SdoServiceConsumerBase>, ObjectDestructor{
+    /**
+     * {@.ja ctor of LoggerConsumer}
+     * {@.en ctor of LoggerConsumer}
+     */
+    public LoggerConsumer(){
+        m_rtobj = null;
+    }
+
+
+    /**
+     * {@.ja 初期化}
+     * {@.en Initialization}
+     */
+    public boolean init(RTObject_impl rtobj,
+                      final _SDOPackage.ServiceProfile profile){
+
+        if (!m_observer.setObject(LoggerHelper.narrow(profile.service))) {
+          // narrowing failed
+          return false;
+        }
+
+        m_rtobj = rtobj;
+        m_profile = profile;
+        //
+        NVListHolder nvholder = 
+                new NVListHolder(profile.properties);
+        Properties prop = new Properties();
+        NVUtil.copyToProperties(prop, nvholder);
+        return true;
+    }
+
+    /**
+     * {@.ja 再初期化}
+     * {@.en Re-initialization}
+     */
+    public boolean reinit(final _SDOPackage.ServiceProfile profile){
+        if (!m_observer._ptr()._is_equivalent(profile.service)) {
+            CorbaConsumer<Logger> tmp = new CorbaConsumer<Logger>();
+            if (!tmp.setObject(profile.service)) {
+                return false;
+            }
+            m_observer.releaseObject();
+            m_observer.setObject(profile.service);
+        }
+        m_profile= profile;
+        //
+        NVListHolder nvholder = 
+                new NVListHolder(profile.properties);
+        Properties prop = new Properties();
+        NVUtil.copyToProperties(prop, nvholder);
+        return true;
+    }
+
+    /**
+     * {@.ja ServiceProfile を取得する}
+     * {@.en getting ServiceProfile}
+     */
+    public final _SDOPackage.ServiceProfile getProfile() {
+        return m_profile;
+    }
+    
+    /**
+     * {@.ja 終了処理}
+     * {@.en Finalization}
+     */
+    public void finalize(){
+    }
+    //============================================================
+    // Heartbeat related functions
+    /**
+     * {@.ja }
+     * {@.en }
+     */
+    public void doOperate(){
+    }
+
+    /**
+     * <p> creator_ </p>
+     * 
+     * @return Object Created instances
+     *
+     */
+    public SdoServiceConsumerBase creator_() {
+        return new ComponentObserverConsumer();
+    }
+    /**
+     * <p> destructor_ </p>
+     * 
+     * @param obj    The target instances for destruction
+     *
+     */
+    public void destructor_(Object obj) {
+        obj = null;
+    }
+    private RTObject_impl m_rtobj;
+    private _SDOPackage.ServiceProfile m_profile;
+    private CorbaConsumer<OpenRTM.Logger> m_observer =
+            new CorbaConsumer<OpenRTM.Logger>(OpenRTM.Logger.class);
+
+};
+



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