OpenRTM
1.0.0
Main Page
Namespaces
Classes
Files
File List
File Members
tmp
buildd
ros-hydro-openrtm-aist-1.1.0-13quantal-20150213-1351
src
lib
rtm
NamingManager.h
Go to the documentation of this file.
1
// -*- C++ -*-
19
#ifndef RTC_NAMINGMANAGER_H
20
#define RTC_NAMINGMANAGER_H
21
22
#include <
rtm/RTC.h
>
23
24
#include <
coil/Task.h
>
25
#include <
coil/Mutex.h
>
26
#include <
coil/Guard.h
>
27
#include <
rtm/CorbaNaming.h
>
28
#include <
rtm/RTObject.h
>
29
#include <
rtm/SystemLogger.h
>
30
#include <
rtm/ManagerServant.h
>
31
32
namespace
RTC
33
{
34
class
Manager;
63
class
NamingBase
64
{
65
typedef
coil::Mutex
Mutex
;
66
typedef
coil::Guard<Mutex>
Guard
;
67
public
:
79
NamingBase
() {};
80
92
virtual
~NamingBase
(
void
) {};
93
112
virtual
void
bindObject
(
const
char
* name,
const
RTObject_impl
* rtobj) = 0;
113
132
virtual
void
bindObject
(
const
char
* name,
133
const
RTM::ManagerServant
* mgr) = 0;
134
152
virtual
void
unbindObject
(
const
char
* name) = 0;
153
169
virtual
bool
isAlive
() = 0;
170
};
171
172
196
class
NamingOnCorba
197
:
public
virtual
NamingBase
198
{
199
public
:
226
NamingOnCorba
(CORBA::ORB_ptr orb,
const
char
* names);
227
239
virtual
~NamingOnCorba
(
void
){};
240
264
virtual
void
bindObject
(
const
char
* name,
const
RTObject_impl
* rtobj);
282
virtual
void
bindObject
(
const
char
* name,
const
RTM::ManagerServant
* mgr);
283
303
virtual
void
unbindObject
(
const
char
* name);
304
320
virtual
bool
isAlive
();
321
322
private
:
323
Logger
rtclog;
324
CorbaNaming
m_cosnaming;
325
std::string m_endpoint;
326
bool
m_replaceEndpoint;
327
std::map<std::string, RTObject_impl*> m_names;
328
};
329
353
class
NamingManager
354
{
355
typedef
coil::Mutex
Mutex
;
356
typedef
coil::Guard<Mutex>
Guard
;
357
public
:
377
NamingManager
(
Manager
* manager);
378
390
virtual
~NamingManager
(
void
);
391
415
void
registerNameServer
(
const
char
* method,
const
char
* name_server);
416
439
void
bindObject
(
const
char
* name,
const
RTObject_impl
* rtobj);
440
464
void
bindObject
(
const
char
* name,
const
RTM::ManagerServant
* mgr);
465
482
void
update
();
483
503
void
unbindObject
(
const
char
* name);
504
520
void
unbindAll
();
521
541
std::vector<RTObject_impl*>
getObjects
();
542
543
protected
:
569
NamingBase
*
createNamingObj
(
const
char
* method,
const
char
* name_server);
570
590
void
bindCompsTo
(
NamingBase
* ns);
591
613
void
registerCompName
(
const
char
* name,
const
RTObject_impl
* rtobj);
614
637
void
registerMgrName
(
const
char
* name,
const
RTM::ManagerServant
* mgr);
638
658
void
unregisterCompName
(
const
char
* name);
659
680
void
unregisterMgrName
(
const
char
* name);
681
701
class
Names
;
702
void
retryConnection
(
Names
* ns);
703
704
protected
:
705
// Name Servers' method/name and object
713
class
Names
714
{
715
public
:
716
Names
(
const
char
* meth,
const
char
* name,
NamingBase
* naming)
717
: method(meth),
nsname
(name), ns(naming)
718
{
719
}
720
721
~Names
()
722
{
723
delete
ns
;
724
}
725
726
std::string
method
;
727
std::string
nsname
;
728
NamingBase
*
ns
;
729
};
737
std::vector<Names*>
m_names
;
745
Mutex
m_namesMutex
;
746
747
// Components' name and object
755
struct
Comps
756
{
757
Comps
(
const
char
* n,
const
RTObject_impl
* obj)
758
: name(n), rtobj(obj)
759
{}
760
std::string
name
;
761
const
RTObject_impl
*
rtobj
;
762
};
770
struct
Mgr
771
{
772
Mgr
(
const
char
* n,
const
RTM::ManagerServant
* obj)
773
: name(n), mgr(obj)
774
{}
775
std::string
name
;
776
const
RTM::ManagerServant
*
mgr
;
777
};
785
std::vector<Comps*>
m_compNames
;
793
Mutex
m_compNamesMutex
;
801
std::vector<Mgr*>
m_mgrNames
;
809
Mutex
m_mgrNamesMutex
;
810
818
Manager
*
m_manager
;
819
827
Logger
rtclog
;
828
};
// class NamingManager
829
};
// namespace RTC
830
831
#endif // RTC_NAMINGMANAGER_H
Generated on Fri Feb 13 2015 13:58:09 for OpenRTM by
1.8.1.2