-// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
DataServerManager::DataServerManager(int argc, char *argv[], CORBA::ORB_ptr orb, PortableServer::POA_ptr poa):_orb(CORBA::ORB::_duplicate(orb))
{
- DataScopeServer *dftScope(new DataScopeServer(orb,DFT_SCOPE_NAME_IN_NS));//_remove_ref will be call by DataScopeServer::shutdownIfNotHostedByDSM
+ DataScopeServer *dftScope(new DataScopeServer(orb,SALOME::DataScopeKiller::_nil(),DFT_SCOPE_NAME_IN_NS));//_remove_ref will be call by DataScopeServer::shutdownIfNotHostedByDSM
PortableServer::POAManager_var pman(poa->the_POAManager());
CORBA::PolicyList policies;
policies.length(1);
std::string command(oss.str());
SALOME_ContainerManager::MakeTheCommandToBeLaunchedASync(command);
int status(SALOME_ContainerManager::SystemThreadSafe(command.c_str()));
+ if(status!=0)
+ {
+ std::ostringstream oss2; oss2 << "CreateDataScope : Fail to launch \"" << command << "\" ! Return code was : " << status << " !";
+ throw Exception(oss2.str());
+ }
int count(SALOME_ContainerManager::GetTimeOutToLoaunchServer());
typename T::VarType ret(T::nil());
while (CORBA::is_nil(ret) && count)
void DataServerManager::removeDataScope(const char *scopeName)
{
SALOME::DataScopeServerBase_var scs(getScopePtrGivenName(scopeName));
- scs->shutdownIfNotHostedByDSM();
+ SALOME::DataScopeKiller_ptr killer;
+ if(scs->shutdownIfNotHostedByDSM(killer))
+ killer->shutdown();
+ CORBA::release(killer);
}
void DataServerManager::cleanScopesInNS()
{
std::vector<std::string> scopeNames(listOfScopesCpp());
for(std::vector<std::string>::const_iterator it=scopeNames.begin();it!=scopeNames.end();it++)
- getScopePtrGivenName(*it)->shutdownIfNotHostedByDSM();
+ {
+ SALOME::DataScopeServerBase_var scope(getScopePtrGivenName(*it));
+ SALOME::DataScopeKiller_ptr killer;
+ if(scope->shutdownIfNotHostedByDSM(killer))
+ killer->shutdown();
+ CORBA::release(killer);
+ }
}
std::string DataServerManager::CreateAbsNameInNSFromScopeName(const std::string& scopeName)
SALOME::DataScopeServerBase_var DataServerManager::GetScopePtrGivenName(const std::string& scopeName, const std::vector<std::string>& scopes, SALOME_NamingService& ns)
{
- std::size_t sz(scopes.size());
if(std::find(scopes.begin(),scopes.end(),scopeName)==scopes.end())
{
std::ostringstream oss; oss << "DataServerManager::getScopePtrGivenName : scope name \"" << scopeName << "\" does not exist !";