::Components::FacetDescriptions *
  Connector_Servant_Impl_Base::get_all_facets (void)
  {
    CIAO_TRACE ("Connector_Servant_Impl_Base::get_all_facets (void)");

    ::Components::FacetDescriptions_var retval = 0;
    ACE_NEW_THROW_EX (retval,
                      ::Components::FacetDescriptions,
                      CORBA::NO_MEMORY ());
    retval->length (this->facet_table_.size ());
    CORBA::ULong i = 0UL;

    {
      ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX,
                          mon,
                          this->lock_,
                          CORBA::NO_RESOURCES ());
      for (FacetTable::const_iterator iter =
            this->facet_table_.begin ();
          iter != this->facet_table_.end ();
          ++iter, ++i)
        {
          ::Components::FacetDescription *fd = 0;
          ACE_NEW_THROW_EX (fd,
                            ::OBV_Components::FacetDescription (iter->first.c_str (),
                                                                iter->second->_interface_repository_id (),
                                                                iter->second),
                            CORBA::NO_MEMORY ());
          retval[i] = fd;
        }
    }

    return retval._retn ();
  }
Example #2
0
::Components::ConsumerDescriptions *
Servant_Impl_Base::get_all_consumers (void)
{
    CIAO_TRACE("Servant_Impl_Base::get_all_consumers (void)");

    ::Components::ConsumerDescriptions *tmp = 0;
    ACE_NEW_THROW_EX (tmp,
                      ::Components::ConsumerDescriptions (
                          this->consumer_table_.size ()),
                      CORBA::NO_MEMORY ());

    ::Components::ConsumerDescriptions_var retval = tmp;

    retval->length (this->consumer_table_.size ());
    CORBA::ULong i = 0UL;

    for (ConsumerTable::const_iterator iter =
                this->consumer_table_.begin ();
            iter != this->consumer_table_.end ();
            ++iter, ++i)
    {
        ::Components::ConsumerDescription *cd = 0;
        ACE_NEW_THROW_EX (cd,
                          ::OBV_Components::ConsumerDescription,
                          CORBA::NO_MEMORY ());

        cd->name (iter->first.c_str ());
        cd->type_id (iter->second->_interface_repository_id ());
        cd->consumer (iter->second);

        retval[i] = cd;
    }

    return retval._retn ();
}
Example #3
0
    bool
    unbind_object (const char *name,
                   CosNaming::NamingContext_ptr ctx)
    {
      CIAO_TRACE ("Name_Utilities::unbind_object");

      if (CORBA::is_nil (ctx))
        {
          CIAO_ERROR (1, (LM_WARNING, CLINFO
                          "Name_Utilities::unbind_object - "
                          "Provided naming context is nil, instance <%C> will not be unbound\n",
                          name));
          return false;
        }

      CosNaming::Name nm;
      Name_Utilities::build_name (name, nm);

      try
        {
          ctx->unbind (nm);
        }
      catch (CORBA::Exception &e)
        {
          CIAO_ERROR (1, (LM_ERROR, CLINFO
                          "Name_Utilities::unbind_object - "
                          "Caught CORBA exception whilst unbinding name <%C>: <%C>\n",
                          name, e._info ().c_str ()));
          return false;
        }
      return true;
    }
Example #4
0
::Components::PublisherDescription *
Servant_Impl_Base::lookup_publisher_description (const char *publisher_name)
{
    CIAO_TRACE("Servant_Impl_Base::lookup_publisher_description");

    ::Components::PublisherDescriptions_var all_publishers =
        this->get_all_publishers ();

    if (!publisher_name || all_publishers->length () == 0)
    {
        // Calling function will throw InvalidName after getting this.
        return 0;
    }
    for (::CORBA::ULong publisher = 0;
            publisher < all_publishers->length ();
            ++publisher)
    {
        ::Components::PublisherDescription *publisher_desc =
            all_publishers[publisher];
        if (::ACE_OS::strcmp (publisher_name, publisher_desc->name ()) == 0)
        {
            ::Components::PublisherDescription *pd = 0;
            ACE_NEW_THROW_EX (pd,
                              ::OBV_Components::PublisherDescription (),
                              CORBA::NO_MEMORY ());
            pd->name (publisher_desc->name ());
            pd->type_id (publisher_desc->type_id ());
            pd->consumers (publisher_desc->consumers ());
            ::Components::PublisherDescription_var safe = pd;
            return safe._retn ();
        }
    }
    return 0;
}
Example #5
0
::Components::ConsumerDescriptions *
Servant_Impl_Base::get_named_consumers (
    const ::Components::NameList & names)
{
    CIAO_TRACE("Servant_Impl_Base::get_named_consumers");

    Components::ConsumerDescriptions *retval = 0;
    ACE_NEW_THROW_EX (retval,
                      ::Components::ConsumerDescriptions,
                      CORBA::NO_MEMORY ());

    Components::ConsumerDescriptions_var safe_retval = retval;
    CORBA::ULong const len = names.length ();
    safe_retval->length (len);

    for (CORBA::ULong i = 0; i < len; ++i)
    {
        ::Components::ConsumerDescription *tmp =
            this->lookup_consumer_description (names[i]);

        if (tmp == 0)
        {
            throw ::Components::InvalidName ();
        }

        safe_retval[i] = tmp;
    }

    return safe_retval._retn ();
}
Example #6
0
  void
  Session_Container_i::fini (void)
  {
    CIAO_TRACE ("Session_Container_i::fini");

    Container_i < ::CIAO::Session_Container>::fini ();
  }
  void
  Servant::describe_simplex_receptacle (
      const char *port_name,
      const char *port_type_repo_id,
      typename T::_ptr_type connection,
      ::Components::ReceptacleDescriptions_var &descriptions,
      CORBA::ULong slot)
  {
    CIAO_TRACE ("Servant::describe_simplex_receptacle");

    ::Components::ReceptacleDescription *elem = 0;
    ACE_NEW_THROW_EX (elem,
                      ::OBV_Components::ReceptacleDescription,
                      CORBA::NO_MEMORY ());

    ::Components::ReceptacleDescription_var safe_elem = elem;

    elem->name (port_name);
    elem->type_id (port_type_repo_id);
    elem->is_multiple (false);
    elem->connections ().length (1UL);

    ::Components::ConnectionDescription *conn = 0;
    ACE_NEW (conn, ::OBV_Components::ConnectionDescription);
    ::Components::ConnectionDescription_var safe_conn = conn;

    conn->ck (0);
    conn->objref (connection);

    elem->connections ()[0UL] = safe_conn._retn ();
    descriptions[slot] = safe_elem._retn ();
  }
  ::Components::FacetDescription *
  Connector_Servant_Impl_Base::lookup_facet_description (const char *port_name)
  {
    CIAO_TRACE ("Connector_Servant_Impl_Base::lookup_facet_description");

    if (!port_name)
      {
        // Calling function will throw InvalidName after getting this.
        return 0;
      }

    ::Components::FacetDescription_var safe;

    {
      ACE_GUARD_RETURN (TAO_SYNCH_MUTEX,
                        mon,
                        this->lock_,
                        0);
      FacetTable::const_iterator iter =
        this->facet_table_.find (port_name);

      if (iter != this->facet_table_.end ())
        {
          ::Components::FacetDescription *fd = 0;
          ACE_NEW_THROW_EX (fd,
                            ::OBV_Components::FacetDescription (iter->first.c_str (),
                                                                iter->second->_interface_repository_id (),
                                                                iter->second),
                            CORBA::NO_MEMORY ());
          safe = fd;
        }
    }

    return safe._retn ();
  }
Example #9
0
void
Servant_Impl_Base::add_consumer (const char *port_name,
                                 ::Components::EventConsumerBase_ptr port_ref)
{
    CIAO_TRACE("Servant_Impl_Base::add_consumer");

    if (0 == port_name || ::CORBA::is_nil (port_ref))
    {
        CIAO_ERROR (1,
                    (LM_ERROR,
                     CLINFO
                     "Servant_Impl_Base::add_consumer - Bad port name [%C] or bad objref\n",
                     port_name));

        throw ::CORBA::BAD_PARAM ();
    }

    {
        ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX,
                            mon,
                            this->lock_,
                            CORBA::NO_RESOURCES ());

        this->consumer_table_[port_name] = ::Components::EventConsumerBase::_duplicate (port_ref);
    }
}
Example #10
0
::Components::EmitterDescriptions *
Servant_Impl_Base::get_named_emitters (
    const ::Components::NameList & names)
{
    CIAO_TRACE("Servant_Impl_Base::get_named_emitters");
    ::Components::EmitterDescriptions *retval = 0;
    ACE_NEW_THROW_EX (retval,
                      ::Components::EmitterDescriptions,
                      ::CORBA::NO_MEMORY ());

    ::Components::EmitterDescriptions_var safe_retval = retval;
    const ::CORBA::ULong len = names.length ();
    safe_retval->length (len);

    for (::CORBA::ULong i = 0UL; i < len; ++i)
    {
        ::Components::EmitterDescription * desc =
            this->lookup_emitter_description (names[i].in ());
        if (desc)
        {
            safe_retval[i] = desc;
        }
        else
        {
            throw ::Components::InvalidName ();
        }
    }
    return safe_retval._retn ();
}
Example #11
0
typename COMP_SVNT::_stub_ptr_type
Home_Servant_Impl<BASE_SKEL,
                  EXEC,
                  COMP_SVNT,
                  CONTAINER>::create (void)
{
    CIAO_TRACE ("Home_Servant_Impl<>::create");

    if (::CORBA::is_nil (this->executor_.in ()))
    {
        CIAO_ERROR (1, (LM_ERROR, CLINFO
                        "Home_Servant_Impl<>:create - "
                        "nil executor reference\n"));
        throw CORBA::INTERNAL ();
    }

    typename EXEC::_var_type exec_safe =
        EXEC::_duplicate (this->executor_.in());

    ::Components::EnterpriseComponent_var _ciao_ec = exec_safe->create ();

    typedef typename COMP_SVNT::_exec_type exec_type;
    typename COMP_SVNT::_exec_type::_var_type _ciao_comp =
        exec_type::_narrow (_ciao_ec.in ());

    return this->_ciao_activate_component (_ciao_comp.in ());
}
Example #12
0
 void
 Container_Handler_i::instance_configured (const ::Deployment::DeploymentPlan &,
                                           ::CORBA::ULong)
 {
   CIAO_TRACE ("Container_Handler_i::instance_configured");
   // nothing to be done
 }
Example #13
0
::Components::EventConsumerBase_ptr
Servant_Impl_Base::lookup_consumer (const char *port_name)
{
    CIAO_TRACE("Servant_Impl_Base::lookup_consumer");

    if (0 == port_name)
    {
        return ::Components::EventConsumerBase::_nil ();
    }

    ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX,
                        mon,
                        this->lock_,
                        CORBA::NO_RESOURCES ());

    ConsumerTable::const_iterator iter =
        this->consumer_table_.find (port_name);

    if (iter == this->consumer_table_.end ())
    {
        return ::Components::EventConsumerBase::_nil ();
    }

    return ::Components::EventConsumerBase::_duplicate (iter->second);
}
Example #14
0
  ::Components::ConnectionDescriptions *
  Connector_Servant_Impl_Base::get_connections (
    const char * name)
  {
    CIAO_TRACE("Connector_Servant_Impl_Base::get_connections");

    ::Components::ReceptacleDescription_var receptacle_desc =
      this->lookup_receptacle_description (name);
    if (::CORBA::is_nil (receptacle_desc.in ()))
      {
        throw ::Components::InvalidName ();
      }
    ::Components::ConnectionDescriptions_var retval;
    ACE_NEW_THROW_EX (retval,
                      ::Components::ConnectionDescriptions,
                      ::CORBA::NO_MEMORY ());

    ::Components::ConnectionDescription * cd = 0;
    ACE_NEW_THROW_EX (cd,
                      ::OBV_Components::ConnectionDescription,
                      ::CORBA::NO_MEMORY ());
    CORBA::Object_var obj = dynamic_cast < ::CORBA::Object_ptr > (receptacle_desc.in ());
    cd->objref (::CORBA::Object::_duplicate (obj.in ()));

    ::CORBA::ULong i = 0UL;
    retval->length (1);
    retval[i] = cd;

    return retval._retn ();
  }
Example #15
0
::Components::PublisherDescriptions *
Servant_Impl_Base::get_named_publishers (
    const ::Components::NameList & names)
{
    CIAO_TRACE("Servant_Impl_Base::get_named_publishers");
    ::Components::PublisherDescriptions_var retval;
    ACE_NEW_THROW_EX (retval,
                      ::Components::PublisherDescriptions,
                      ::CORBA::NO_MEMORY ());

    retval->length (names.length ());
    ::CORBA::ULong count = 0UL;

    for (::CORBA::ULong name = 0UL;
            name < names.length ();
            ++name)
    {
        ::Components::PublisherDescription * desc =
            this->lookup_publisher_description (names[name].in ());
        if (desc)
        {
            retval[count++] = desc;
        }
        else
        {
            throw ::Components::InvalidName ();
        }
    }
    ::Components::PublisherDescriptions_var safe_retval = retval;
    return safe_retval._retn ();
}
Example #16
0
 void
 Container_Handler_i::passivate_instance (const ::Deployment::DeploymentPlan & ,
                                     ::CORBA::ULong ,
                                     const ::CORBA::Any &)
 {
   CIAO_TRACE ("Container_Handler_i::passivate_instance");
   // no passivation needed.
 }
Example #17
0
 Facet_Servant_Base_T<BASE, EXEC, CONTEXT>::Facet_Servant_Base_T (
     typename EXEC::_ptr_type exec,
     ::Components::CCMContext_ptr ctx)
   : executor_ (EXEC::_duplicate (exec)),
     ctx_ (::Components::CCMContext::_duplicate (ctx))
 {
   CIAO_TRACE ("Facet_Servant_Base_T<BASE, EXEC, CONTEXT>::Facet_Servant_Base_T");
 }
Example #18
0
Home_Servant_Impl<BASE_SKEL,
                  EXEC,
                  COMP_SVNT,
                  CONTAINER>::~Home_Servant_Impl (void)
{
    CIAO_TRACE ("Home_Servant_Impl<>::destructor");

    this->remove_components ();
}
Example #19
0
  PortableServer::POA_ptr
  Connector_Servant_Impl_Base::_default_POA (void)
  {
    CIAO_TRACE("Connector_Servant_Impl_Base::_default_POA (void)");

    Container_var cnt_safe =
      Container::_duplicate(this->container_.in ());
    return cnt_safe->the_POA ();
  }
Example #20
0
Components::CCMObject_ptr
Home_Servant_Impl<BASE_SKEL,
                  EXEC,
                  COMP_SVNT,
                  CONTAINER>::create_component (void)
{
    CIAO_TRACE ("Home_Servant_Impl<>::create_component");

    return this->create ();
}
Example #21
0
 void
 Container_Handler_i::provide_endpoint_reference (const ::Deployment::DeploymentPlan &,
                                                  ::CORBA::ULong,
                                                  ::CORBA::Any_out)
 {
   CIAO_TRACE ("Container_Handler_i::provide_endpoint_reference");
   CIAO_ERROR (1, (LM_ERROR, CLINFO
                   "Container_Handler_i::provide_endpoint_reference - "
                   "Unable to provide any endpoints.\n"));
   throw CORBA::NO_IMPLEMENT ();
 }
Example #22
0
  void
  Container_Handler_i::disconnect_instance (const ::Deployment::DeploymentPlan &,
                                            ::CORBA::ULong)
  {
    CIAO_TRACE ("Container_Handler_i::disconnect_instance");

    CIAO_ERROR (1, (LM_ERROR, CLINFO
                    "Container_Handler_i::disconnect_instance - ",
                    "No connections allowed for containers.\n"));
    throw CORBA::NO_IMPLEMENT ();
  }
Example #23
0
typename COMP_SVNT::_stub_ptr_type
Home_Servant_Impl<BASE_SKEL,
                  EXEC,
                  COMP_SVNT,
                  CONTAINER>::_ciao_activate_component (
                      typename COMP_SVNT::_exec_type::_ptr_type exe)
{
    CIAO_TRACE ("Home_Servant_Impl<>::_ciao_activate_component");

    typename CONTAINER::_var_type cnt_safe =
        CONTAINER::_duplicate (this->container_.in());

    CORBA::Object_var hobj = cnt_safe->get_objref (this);

    Components::CCMHome_var home =
        Components::CCMHome::_narrow (hobj.in ());

    char buffer[256];
    unsigned long const serial = this->serial_number_++;
    if (ACE_OS::sprintf (buffer, "%ld", serial) < 0)
    {
        throw CORBA::INTERNAL ();
    }

    typedef typename COMP_SVNT::_stub_type stub_type;
    COMP_SVNT *svt = 0;
    ACE_NEW_THROW_EX (svt,
                      COMP_SVNT (exe,
                                 home.in (),
                                 (this->ins_name_ + buffer).c_str (),
                                 this,
                                 cnt_safe),
                      CORBA::NO_MEMORY ());

    PortableServer::ServantBase_var safe (svt);
    PortableServer::ObjectId_var oid;

    CORBA::Object_var objref =
        cnt_safe->install_servant (svt,
                                   Container_Types::COMPONENT_t,
                                   oid.out ());
    typedef typename COMP_SVNT::_stub_type stub_type;
    typename COMP_SVNT::_stub_var_type ho = stub_type::_narrow (objref.in ());

    Components::CCMObject_var ccmobjref =
        Components::CCMObject::_narrow (objref.in ());

    this->objref_map_.bind (
        oid.in (),
        Components::CCMObject::_duplicate (ccmobjref.in ()));
    return ho._retn ();
}
Example #24
0
void
Home_Servant_Impl<BASE_SKEL,
                  EXEC,
                  COMP_SVNT,
                  CONTAINER>::_ciao_passivate_component (
                      typename COMP_SVNT::_stub_ptr_type comp)
{
    CIAO_TRACE ("Home_Servant_Impl<>::_ciao_passivate_component");

    typename CONTAINER::_var_type cnt_safe =
        CONTAINER::_duplicate (this->container_.in());

    cnt_safe->uninstall_component (comp);
}
Example #25
0
  ::Components::ReceptacleDescriptions *
  Connector_Servant_Impl_Base::get_all_receptacles (void)
  {
    CIAO_TRACE ("Connector_Servant_Impl_Base::get_all_receptacles (void)");

    ::Components::ReceptacleDescriptions * retval = 0;
    ACE_NEW_THROW_EX (retval,
                      ::Components::ReceptacleDescriptions,
                      ::CORBA::NO_MEMORY ());
    ::Components::ReceptacleDescriptions_var safe_retval = retval;
    safe_retval->length (0UL);

    return safe_retval._retn ();
  }
Example #26
0
  // Operations for CCMObject interface.
  void
  Connector_Servant_Impl_Base::remove (void)
  {
    CIAO_TRACE("Connector_Servant_Impl_Base::remove (void)");

    try
    {
      Container_var cnt_safe = Container::_duplicate(this->container_.in ());
      PortableServer::POA_var port_poa = cnt_safe->the_port_POA ();

      {
        ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX,
                            mon,
                            this->lock_,
                            CORBA::NO_RESOURCES ());
        // Removing Facets
        for (FacetTable::const_iterator iter =
              this->facet_table_.begin ();
            iter != this->facet_table_.end ();
            ++iter)
          {
            PortableServer::ObjectId_var facet_id =
              port_poa->reference_to_id (iter->second);

            port_poa->deactivate_object (facet_id);
          }
      }

      this->ccm_remove ();

      PortableServer::ObjectId_var oid;
      cnt_safe->uninstall_servant (this,
                                  Container_Types::COMPONENT_t,
                                  oid.out ());

      if (this->home_servant_)
        {
          this->home_servant_->update_component_map (oid);
          this->home_servant_->_remove_ref ();
          this->home_servant_ = 0;
        }
    }
    catch (const CORBA::Exception& ex)
    {
      // log error and propagate so error gets reported to deployment framework
      CIAO_ERROR (1, (LM_ERROR, CLINFO "Connector_Servant_Impl_Base::remove - CORBA exception : %C\n", ex._info ().c_str ()));
      ex._raise (); // propagate
    }
  }
Example #27
0
  Container_Handler_i::Container_Handler_i (void)
  {
    // Also initialize CIAO logger since we reuse parts of CIAO in the locality manager
    CIAO::Logger_Service
      * clf = ACE_Dynamic_Service<CIAO::Logger_Service>::instance ("CIAO_Logger");

    int argc = 0;
    ACE_TCHAR **argv = 0;

    if (clf)
      {
        clf->init (argc, argv);
      }

    CIAO_TRACE ("Container_Handler_i::Container_Handler_i");
  }
Example #28
0
  void
  Component_Handler_i::install_instance (const ::Deployment::DeploymentPlan &plan,
                                         ::CORBA::ULong instanceRef,
                                         ::CORBA::Any_out instance_reference)
  {
    CORBA::Any *retval = 0;
    ACE_NEW_THROW_EX (retval,
                      CORBA::Any (),
                      CORBA::NO_MEMORY ());

    instance_reference = retval;

    CIAO_TRACE ("Component_Handler_i::install_instance");

    const ::Deployment::InstanceDeploymentDescription &idd (plan.instance[instanceRef]);
    const ::Deployment::MonolithicDeploymentDescription &mdd (plan.implementation[idd.implementationRef]);

    DAnCE::Utility::PROPERTY_MAP *pmap = 0;

    ACE_NEW_THROW_EX (pmap,
                      DAnCE::Utility::PROPERTY_MAP (idd.configProperty.length () +
                                                    mdd.execParameter.length ()),
                      CORBA::NO_MEMORY ());

    Deployment_Common::Instance_Info info;
    info.name = idd.name.in ();
    info.pmap.reset (pmap);

    DAnCE::Utility::build_property_map (*pmap,
                                        mdd.execParameter);
    DAnCE::Utility::build_property_map (*pmap,
                                        idd.configProperty);

    CORBA::String_var exec_art, exec_entry, svnt_art, svnt_entry, cont_id;

    CORBA::Any val;
    const char *tmp = 0;
    int open_mode = ACE_DEFAULT_SHLIB_MODE;

    if (pmap->find (CIAO::Deployment::SVNT_ENTRYPT, val) == 0)
        {
          val >>= tmp;
          svnt_entry = tmp;
          CIAO_DEBUG (9, (LM_TRACE, CLINFO
                          "Component_Handler_i::install_instance - "
                          "Found Servant entrypoint <%C>\n", svnt_entry.in ()));
        }
Example #29
0
void
Home_Servant_Impl<BASE_SKEL,
                  EXEC,
                  COMP_SVNT,
                  CONTAINER>::update_component_map (
                      PortableServer::ObjectId &oid)
{
    CIAO_TRACE ("Home_Servant_Impl<>::update_component_map");

    Components::CCMObject_var ccm_obj_ptr;
    if (objref_map_.unbind (oid, ccm_obj_ptr) != 0)
    {
        CIAO_ERROR (1, (LM_ERROR, CLINFO
                        "Home_Servant_Impl<>::update_component_map - "
                        "Invalid component object reference\n"));
    }
}
Example #30
0
  ::Components::StandardConfigurator_ptr
  Connector_Servant_Impl_Base::get_standard_configurator (void)
  {
    CIAO_TRACE("Connector_Servant_Impl_Base::get_standard_configurator (void)");

    // Create the configurator servant.
    StandardConfigurator_Impl *config_impl = 0;

    ACE_NEW_THROW_EX (config_impl,
                      StandardConfigurator_Impl (this),
                      CORBA::NO_MEMORY ());


    Components::StandardConfigurator_var configurator =
      config_impl->_this ();

    return configurator._retn ();
  }