Base class for all ACE_Dynamic_Service instantiations. More...
#include <Dynamic_Service_Base.h>

Public Member Functions | |
| void | dump (void) const |
| Dump the current static of the object. | |
Protected Member Functions | |
| ACE_Dynamic_Service_Base (void) | |
| No need to create, or assign instances of this class. | |
| ~ACE_Dynamic_Service_Base (void) | |
| const ACE_Dynamic_Service_Base & | operator= (const ACE_Dynamic_Service_Base &) |
Static Protected Member Functions | |
| static void * | instance (const ACE_TCHAR *name, bool no_global=false) |
| static void * | instance (const ACE_Service_Gestalt *repo, const ACE_TCHAR *name, bool no_global=false) |
Static Private Member Functions | |
| static const ACE_Service_Type * | find_i (const ACE_Service_Gestalt *&repo, const ACE_TCHAR *name, bool no_global) |
Friends | |
| class | ACE_Dynamic_Service_Dependency |
Base class for all ACE_Dynamic_Service instantiations.
Factors out common code shared by all ACE_Dynamic_Service instantiations, this avoid code bloat.
Definition at line 38 of file Dynamic_Service_Base.h.
| ACE_Dynamic_Service_Base::ACE_Dynamic_Service_Base | ( | void | ) | [protected] |
No need to create, or assign instances of this class.
| ACE_Dynamic_Service_Base::~ACE_Dynamic_Service_Base | ( | void | ) | [protected] |
| void ACE_Dynamic_Service_Base::dump | ( | void | ) | const |
Dump the current static of the object.
| const ACE_Service_Type * ACE_Dynamic_Service_Base::find_i | ( | const ACE_Service_Gestalt *& | repo, | |
| const ACE_TCHAR * | name, | |||
| bool | no_global | |||
| ) | [static, private] |
Implement the service search policy, i.e. "look for the service first locally and then globally"
Definition at line 41 of file Dynamic_Service_Base.cpp.
{
ACE_TRACE ("ACE_Dynamic_Service_Base::find_i");
const ACE_Service_Type *svc_rec = 0;
ACE_Service_Gestalt* global = ACE_Service_Config::global ();
for ( ; (repo->find (name, &svc_rec) == -1) && !no_global; repo = global)
{
// Check the static repo, too if different
if (repo == global)
break;
}
return svc_rec;
}
| void * ACE_Dynamic_Service_Base::instance | ( | const ACE_TCHAR * | name, | |
| bool | no_global = false | |||
| ) | [static, protected] |
Perform the default repo search, but optionally skip searching the global repo.
Reimplemented in ACE_Dynamic_Service< TYPE >.
Definition at line 32 of file Dynamic_Service_Base.cpp.
{
ACE_TRACE ("ACE_Dynamic_Service_Base::instance");
return instance (ACE_Service_Config::current (), name, no_global);
}
| void * ACE_Dynamic_Service_Base::instance | ( | const ACE_Service_Gestalt * | repo, | |
| const ACE_TCHAR * | name, | |||
| bool | no_global = false | |||
| ) | [static, protected] |
Reimplemented in ACE_Dynamic_Service< TYPE >.
Definition at line 63 of file Dynamic_Service_Base.cpp.
{
ACE_TRACE ("ACE_Dynamic_Service_Base::instance");
void *obj = 0;
const ACE_Service_Type_Impl *type = 0;
const ACE_Service_Gestalt* repo_found = repo;
const ACE_Service_Type *svc_rec = find_i (repo_found, name, no_global);
if (svc_rec != 0)
{
type = svc_rec->type ();
if (type != 0)
obj = type->object ();
}
if (ACE::debug ())
{
ACE_Guard <ACE_Log_Msg> log_guard (*ACE_Log_Msg::instance ());
if (repo->repo_ != repo_found->repo_)
{
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("ACE (%P|%t) DSB::instance, repo=%@, name=%s")
ACE_TEXT (" type=%@ => %@")
ACE_TEXT (" [in repo=%@]\n"),
repo->repo_, name, type, obj,
repo_found->repo_));
}
else
{
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("ACE (%P|%t) DSB::instance, repo=%@, name=%s")
ACE_TEXT (" type=%@ => %@\n"),
repo->repo_, name, type, obj));
}
}
return obj;
}
| const ACE_Dynamic_Service_Base& ACE_Dynamic_Service_Base::operator= | ( | const ACE_Dynamic_Service_Base & | ) | [protected] |
friend class ACE_Dynamic_Service_Dependency [friend] |
The dependency declaration class needs access to the service search policy, implemented by find_i()
Definition at line 67 of file Dynamic_Service_Base.h.
1.7.0