[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 メーリングリストの案内