bool bind(I1 *, I2 *, ImplementationT **, const std::string &name_ = "")
        {
            const std::string &name = (name_ == "") ?
                getInterfaceName((I1 *) NULL) :
                name_;

            StubFactoryPtr stubFactoryPtr(
                new RCF::StubFactory_2<ImplementationT, I1, I2>());

            std::string desc;
            return insertStubFactory(name, desc, stubFactoryPtr);
        }
 // remotely accessible
 boost::int32_t SessionObjectFactoryService::CreateSessionObject(
     const std::string &objectName)
 {
     StubFactoryPtr stubFactoryPtr( getStubFactory( objectName));
     if (stubFactoryPtr.get())
     {
         RcfClientPtr rcfClientPtr( stubFactoryPtr->makeServerStub());
         getTlsRcfSession().setDefaultStubEntryPtr(
             StubEntryPtr( new StubEntry(rcfClientPtr)));
         return RcfError_Ok;
     }
     return RcfError_ObjectFactoryNotFound;
 }
    // remotely accessible
    boost::int32_t ObjectFactoryService::CreateObject(
        const std::string &objectName,
        Token &token)
    {
        RCF_LOG_3()(objectName);

        {
            Lock lock(mCleanupThresholdMutex);
            if (!mLazyStarted)
            {
                mTaskEntries[0].start();
                mLazyStarted = true;
            }
        }

        // TODO: seems unnecessary to be triggering a sweep here
        std::size_t nAvail = mTokenFactory->getAvailableTokenCount();
        std::size_t nTotal = mTokenFactory->getTokenSpace().size();
        float used = float(nTotal - nAvail) / float(nTotal);
        if (used > mCleanupThreshold)
        {
            Lock lock(mCleanupThresholdMutex);
            mCleanupThresholdCondition.notify_all(lock);
        }

        boost::int32_t ret = RcfError_Ok;

        StubFactoryPtr stubFactoryPtr( getStubFactory( objectName));
        if (stubFactoryPtr.get())
        {
            RcfClientPtr rcfClientPtr( stubFactoryPtr->makeServerStub());
            StubEntryPtr stubEntryPtr( new StubEntry(rcfClientPtr));

            ret = addObject(TokenMappedPtr(stubEntryPtr), token);
            
            if (ret == RcfError_Ok)
            {
                getTlsRcfSession().setCachedStubEntryPtr(stubEntryPtr);

                RCF_LOG_3()(objectName)(token) << "Dynamically bound object created.";
            }
        }
        else
        {
            ret = RcfError_ObjectFactoryNotFound;
        }

        return ret;
    }