[openrtm-users 00311] 動的なサービスポートの追加について

Takashi Kojima tkjim48 @ gmail.com
2007年 12月 10日 (月) 14:14:56 JST


中央大学の小島です。
お世話になっております。

動的なサービスポートの追加および削除を行おうと思ったのですが、
警告がでながらもコンパイルは通りますが、実行しポートにアクセス
するようなことを行うと、RTCLink上で赤くなってしまいます。

その時には
omniORB: ERROR -- the aplication attemped to invoke an operation on a
nil reference

特に必要がない部分については省略しますが、
ポートの追加はだいたい以下のように行いました。

---service.idl---
interface RQ
{
  void request();
}

interface RP
{
  void reply();
}
---serviceSVC_impl.h--
RPSVC_impl
{
  public :
    short flag(0);
}

---service.h---

long dynamicPortCounter
std::vector<RTC::CorbaPort *> m_ServicePort;
std::vector< RQSVC_impl > m_ request;
std::vector< RTC::CorbaConsumer<RP>  > m_reply;

---service.cpp---

void service::onInitialize(...){
  addport();
}

void service::onExecute(...)
{
  for(unsigned long i(0);i<m_request.size();i++)
  {
    if(m_reply[i]->flag == 1)  m_request[i].request();
  }
}

void service::addport()
{
 std::string portName("IDServicePort");
 std::string requestName("requestID");
 std::string provideName("providerID");

 portName += otos(dynamicPortCounter);
 requestName += otos(dynamicPortCounter);
 provideName += otos(dynamicPortCounter);

 //provider port
 RQSVC_impl tmpRequest;
 m_request.push_back(tmpRequest);

 //consumer port
 RTC::CorbaConsumer<RP> tmpReply;
 m_request.push_back(tmpReply);

 //regist port
 m_ServicePort.push_back(new RTC::CorbaPort(portName.c_str()));
 m_ServicePort.back()->registerProvider(provideName.c_str()
,provideName.c_str() ,m_request.back());
 m_ServicePort.back()->registerConsumer(requestName.c_str)
,requestName.c_str() ,m_reply.back());
}

警告内容は添付させていただきます。
service.cpp 192は、m_request.push_back(tmpReply)に該当します。

エラー内容から推測すると、接続しないでアクティブ化してしまったために、
コンシューマーの実体が存在していないというエラーなのでしょうか?

もし、仮にそうであれば、回避する方法もありますでしょうか?

ご教授お願いいたします。

<----------------------------------------------------->
   中央大学大学院 理工学研究科
   電気電子情報通信工学専攻
   博士課程前期1年 國井研究室

   小島 隆史 [Takashi Kojima]

   ADRESS: 	〒112-8551 東京都文京区春日1-13-27
   TEL : 	 03-3817-1866(研究室)
   FAX : 	 03-3817-1847(学科準備室)
   E-Mail: 	takashi @ hmsl.elect.chuo-u.ac.jp
<----------------------------------------------------->
-------------- next part --------------
文字コード指定の無い添付文書を保管しました...
名前: warn.txt
URL:  <http://www.openrtm.org/pipermail/openrtm-users/attachments/20071210/050b5463/attachment-0001.txt>


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