Skip to content
Snippets Groups Projects
Commit 4799ad78 authored by Joseph Mirabel's avatar Joseph Mirabel
Browse files

Update C++ client + example.

parent fedcba97
No related branches found
No related tags found
No related merge requests found
...@@ -20,7 +20,9 @@ SET(LIBRARY_NAME ${PROJECT_NAME}) ...@@ -20,7 +20,9 @@ SET(LIBRARY_NAME ${PROJECT_NAME})
ADD_EXECUTABLE (basic-scene basic-scene.cc) ADD_EXECUTABLE (basic-scene basic-scene.cc)
TARGET_LINK_LIBRARIES(basic-scene ${LIBRARY_NAME}) TARGET_LINK_LIBRARIES(basic-scene ${LIBRARY_NAME})
PKG_CONFIG_USE_DEPENDENCY(basic-scene gepetto-viewer) PKG_CONFIG_USE_DEPENDENCY(basic-scene gepetto-viewer)
PKG_CONFIG_USE_DEPENDENCY(basic-scene omniORB4)
ADD_EXECUTABLE (display-urdf display-urdf.cc) ADD_EXECUTABLE (display-urdf display-urdf.cc)
TARGET_LINK_LIBRARIES(display-urdf ${LIBRARY_NAME}) TARGET_LINK_LIBRARIES(display-urdf ${LIBRARY_NAME})
PKG_CONFIG_USE_DEPENDENCY(display-urdf gepetto-viewer) PKG_CONFIG_USE_DEPENDENCY(display-urdf gepetto-viewer)
PKG_CONFIG_USE_DEPENDENCY(display-urdf omniORB4)
...@@ -10,8 +10,8 @@ ...@@ -10,8 +10,8 @@
int main(int, const char **) int main(int, const char **)
{ {
graphics::corbaServer::Client client (0, NULL); gepetto::viewer::corba::Client client (0, NULL);
client.connect (); client.connect ("corbaloc:iiop:localhost:12321");
float white[4] = {1.,1.,1.,1.}; float white[4] = {1.,1.,1.,1.};
client.gui()->createWindow("window1"); client.gui()->createWindow("window1");
......
...@@ -10,22 +10,17 @@ ...@@ -10,22 +10,17 @@
int main(int argc, const char ** argv) int main(int argc, const char ** argv)
{ {
using namespace graphics;
using namespace corbaServer;
if (argc != 2) { if (argc != 2) {
std::cout << "Usage " << argv[0] << " <urdf-filename>" std::cout << "Usage " << argv[0] << " <urdf-filename>"
<< std::endl; << std::endl;
return 1; return 1;
} }
Client client (0, NULL); gepetto::viewer::corba::Client client (0, NULL);
client.connect (); client.connect ();
client.gui()->createWindow("urdf-display"); client.gui()->createWindow("urdf-display");
// The second argument is deprecated and ignored. File link starting with client.gui()->addURDF("urdf-display/urdf", argv[1]);
// "package://" are resolved using ROS_PACKAGE_PATH environment variable.
client.gui()->addURDF("urdf-display/urdf", argv[1], "");
client.gui()->refresh(); client.gui()->refresh();
......
...@@ -26,13 +26,16 @@ namespace corba { ...@@ -26,13 +26,16 @@ namespace corba {
~Client (); ~Client ();
void connect (const char* iiop = "corbaloc:rir:/NameService"); void connect (const std::string& iiop = "corbaloc:iiop:");
gepetto::corbaserver::GraphicalInterface_var& gui () { gepetto::corbaserver::GraphicalInterface_var& gui () {
return gui_; return gui_;
} }
private: private:
bool createFromDirectLink(const std::string& iiop);
bool createFromNameService(const std::string& iiop);
corbaserver::GraphicalInterface_var gui_; corbaserver::GraphicalInterface_var gui_;
CORBA::ORB_var orb_; CORBA::ORB_var orb_;
......
...@@ -23,7 +23,6 @@ SET(IDL_SOURCES ...@@ -23,7 +23,6 @@ SET(IDL_SOURCES
) )
OMNIIDL_INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/idl) OMNIIDL_INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/idl)
INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}/src)
FOREACH(IDL ${IDL_SOURCES}) FOREACH(IDL ${IDL_SOURCES})
# C++ # C++
...@@ -116,6 +115,7 @@ ENDIF(NOT CLIENT_ONLY) ...@@ -116,6 +115,7 @@ ENDIF(NOT CLIENT_ONLY)
# }}} # }}}
ADD_LIBRARY(${LIBRARY_NAME} SHARED ${${PROJECT_NAME}_SOURCES}) ADD_LIBRARY(${LIBRARY_NAME} SHARED ${${PROJECT_NAME}_SOURCES})
TARGET_INCLUDE_DIRECTORIES(${LIBRARY_NAME} PUBLIC ${CMAKE_BINARY_DIR}/src)
ADD_DEPENDENCIES (${LIBRARY_NAME} generate_idl_cpp) ADD_DEPENDENCIES (${LIBRARY_NAME} generate_idl_cpp)
ADD_DEPENDENCIES (${LIBRARY_NAME} generate_idl_python) ADD_DEPENDENCIES (${LIBRARY_NAME} generate_idl_python)
IF(NOT CLIENT_ONLY) IF(NOT CLIENT_ONLY)
......
...@@ -33,14 +33,25 @@ namespace gepetto { ...@@ -33,14 +33,25 @@ namespace gepetto {
{ {
} }
void Client::connect (const char* iiop) bool Client::createFromDirectLink (const std::string& iiop)
{ {
// Get a reference to the Naming Service std::string url = iiop + "/gepetto-gui";
CORBA::Object_var rootContextObj = orb_->string_to_object(iiop);
CORBA::Object_var obj = orb_->string_to_object(url.c_str());
gui_ = gepetto::corbaserver::GraphicalInterface::_narrow(obj.in());
return !CORBA::is_nil(gui_);
}
bool Client::createFromNameService (const std::string& iiop)
{
std::string url = iiop + "/NameService";
CORBA::Object_var obj = orb_->string_to_object(url.c_str());
if (CORBA::is_nil(obj)) return false;
CosNaming::NamingContext_var nc = CosNaming::NamingContext_var nc =
CosNaming::NamingContext::_narrow(rootContextObj.in()); CosNaming::NamingContext::_narrow(obj.in());
if (CORBA::is_nil(nc)) return false;
// Bind robotObj with name Robot to the hppContext:
CosNaming::Name name; CosNaming::Name name;
name.length(2); name.length(2);
name[0].id = (const char *) "gepetto"; name[0].id = (const char *) "gepetto";
...@@ -51,6 +62,16 @@ namespace gepetto { ...@@ -51,6 +62,16 @@ namespace gepetto {
CORBA::Object_var managerObj = nc->resolve(name); CORBA::Object_var managerObj = nc->resolve(name);
// Narrow the previous object to obtain the correct type // Narrow the previous object to obtain the correct type
gui_ = gepetto::corbaserver::GraphicalInterface::_narrow(managerObj.in()); gui_ = gepetto::corbaserver::GraphicalInterface::_narrow(managerObj.in());
return CORBA::is_nil(gui_);
}
void Client::connect (const std::string& iiop)
{
bool ok = createFromDirectLink(iiop);
if (!ok) ok = createFromNameService(iiop);
if (!ok) throw std::runtime_error ("Could not connect to gepetto-viewer "
"GUI at " + iiop);
} }
/// \brief Shutdown CORBA server /// \brief Shutdown CORBA server
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment