diff options
author | yamuna <yamuna@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2000-12-08 01:07:26 +0000 |
---|---|---|
committer | yamuna <yamuna@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2000-12-08 01:07:26 +0000 |
commit | deec8aca8d6544420c127bc84de2d93075ec7370 (patch) | |
tree | 88a399861de1096e166fb9478bd70a1c8bb2e5b1 | |
parent | 56efe5a8a7b4dc3e43749e06632603bd9cc8f929 (diff) | |
download | ATCD-deec8aca8d6544420c127bc84de2d93075ec7370.tar.gz |
*** empty log message ***
-rw-r--r-- | TAO/orbsvcs/orbsvcs/AV/Endpoint_Strategy_T.cpp | 143 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/AV/Endpoint_Strategy_T.h | 35 |
2 files changed, 127 insertions, 51 deletions
diff --git a/TAO/orbsvcs/orbsvcs/AV/Endpoint_Strategy_T.cpp b/TAO/orbsvcs/orbsvcs/AV/Endpoint_Strategy_T.cpp index c4d0a3c265a..83fec32b09c 100644 --- a/TAO/orbsvcs/orbsvcs/AV/Endpoint_Strategy_T.cpp +++ b/TAO/orbsvcs/orbsvcs/AV/Endpoint_Strategy_T.cpp @@ -10,10 +10,11 @@ // TAO_AV_Endpoint_Reactive_Strategy // ---------------------------------------------------------------------- -// Constructor + template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl> -TAO_AV_Endpoint_Reactive_Strategy <T_StreamEndpoint, T_VDev, T_MediaCtrl>::TAO_AV_Endpoint_Reactive_Strategy (TAO_ORB_Manager *orb_manager) - : orb_manager_ (orb_manager) +TAO_AV_Endpoint_Reactive_Strategy <T_StreamEndpoint, T_VDev, T_MediaCtrl>::TAO_AV_Endpoint_Reactive_Strategy (CORBA::ORB_ptr orb, PortableServer::POA_ptr poa) + : orb_ (orb), + poa_ (poa) { } @@ -52,6 +53,30 @@ TAO_AV_Endpoint_Reactive_Strategy <T_StreamEndpoint, T_VDev, T_MediaCtrl>::activ return 0; } +template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl> +char * +TAO_AV_Endpoint_Reactive_Strategy <T_StreamEndpoint, T_VDev, T_MediaCtrl>::activate_with_poa (PortableServer::Servant servant, CORBA::Environment &ACE_TRY_ENV) +{ + + PortableServer::ObjectId_var id = + this->poa_->activate_object (servant, + ACE_TRY_ENV); + ACE_CHECK_RETURN (0); + + CORBA::Object_var obj = + this->poa_->id_to_reference (id.in (), + ACE_TRY_ENV); + ACE_CHECK_RETURN (0); + + CORBA::String_var str = + this->orb_->object_to_string (obj.in (), + ACE_TRY_ENV); + ACE_CHECK_RETURN (0); + + return str._retn (); +} + + // Activate VDev into the POA template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl> int @@ -65,8 +90,8 @@ TAO_AV_Endpoint_Reactive_Strategy <T_StreamEndpoint, T_VDev, T_MediaCtrl>::activ return -1; // Activate the object under the root poa. - CORBA::String_var vdev_ior = this->orb_manager_->activate (vdev, - ACE_TRY_ENV); + CORBA::String_var vdev_ior = this->activate_with_poa (vdev, + ACE_TRY_ENV); ACE_TRY_CHECK; if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG,"(%P|%t)TAO_AV_Endpoint_Reactive_Strategy::activate_vdev, vdev ior is:%s\n", vdev_ior. in ())); @@ -87,6 +112,7 @@ TAO_AV_Endpoint_Reactive_Strategy <T_StreamEndpoint, T_VDev, T_MediaCtrl>::activ return 0; } + // Activate the media_controller template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl> int @@ -100,8 +126,9 @@ TAO_AV_Endpoint_Reactive_Strategy <T_StreamEndpoint, T_VDev, T_MediaCtrl>::activ return -1; // Activate the mediactrl object under the root poa. - CORBA::String_var mediactrl_ior = this->orb_manager_->activate (media_ctrl, - ACE_TRY_ENV); + CORBA::String_var mediactrl_ior = this->activate_with_poa (media_ctrl, + ACE_TRY_ENV); + ACE_TRY_CHECK; if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG,"(%P|%t)TAO_AV_Endpoint_Reactive_Strategy::activate_mediactrl , media_ctrl ior is :%s\n", mediactrl_ior.in ())); @@ -109,10 +136,10 @@ TAO_AV_Endpoint_Reactive_Strategy <T_StreamEndpoint, T_VDev, T_MediaCtrl>::activ // Associate the media controller object reference with the vdev, as per the OMG spec CORBA::Any anyval; - anyval <<= this->orb_manager_->orb ()->object_to_string (media_ctrl->_this (ACE_TRY_ENV), - ACE_TRY_ENV); + anyval <<= this->orb_->object_to_string (media_ctrl->_this (ACE_TRY_ENV), + ACE_TRY_ENV); ACE_TRY_CHECK; - + this->vdev_->define_property ("Related_MediaCtrl", anyval, ACE_TRY_ENV); @@ -167,13 +194,15 @@ TAO_AV_Endpoint_Reactive_Strategy<T_StreamEndpoint, T_VDev, T_MediaCtrl>::make_m // ---------------------------------------------------------------------- // TAO_AV_Endpoint_Reactive_Strategy_A // ---------------------------------------------------------------------- -// Constructor + +//Constructor template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl> -TAO_AV_Endpoint_Reactive_Strategy_A <T_StreamEndpoint, T_VDev, T_MediaCtrl>::TAO_AV_Endpoint_Reactive_Strategy_A (TAO_ORB_Manager *orb_manager) - : TAO_AV_Endpoint_Reactive_Strategy <T_StreamEndpoint, T_VDev, T_MediaCtrl> (orb_manager) +TAO_AV_Endpoint_Reactive_Strategy_A <T_StreamEndpoint, T_VDev, T_MediaCtrl>::TAO_AV_Endpoint_Reactive_Strategy_A (CORBA::ORB_ptr orb, PortableServer::POA_ptr poa) + : TAO_AV_Endpoint_Reactive_Strategy <T_StreamEndpoint, T_VDev, T_MediaCtrl> (orb, poa) { } + // Destructor template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl> TAO_AV_Endpoint_Reactive_Strategy_A <T_StreamEndpoint, T_VDev, T_MediaCtrl>::~TAO_AV_Endpoint_Reactive_Strategy_A (void) @@ -212,7 +241,7 @@ TAO_AV_Endpoint_Reactive_Strategy_A <T_StreamEndpoint, T_VDev, T_MediaCtrl>::act if (this->make_stream_endpoint (stream_endpoint_a) == -1) return -1; - CORBA::String_var stream_endpoint_ior = this->orb_manager_->activate (stream_endpoint_a, + CORBA::String_var stream_endpoint_ior = this->activate_with_poa (stream_endpoint_a, ACE_TRY_ENV); ACE_TRY_CHECK; if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG,"TAO_AV_Endpoint_Reactive_Strategy_A::activate_stream_endpoint,Stream Endpoint ior is : %s\n",stream_endpoint_ior.in ())); @@ -237,10 +266,11 @@ TAO_AV_Endpoint_Reactive_Strategy_A <T_StreamEndpoint, T_VDev, T_MediaCtrl>::act // TAO_AV_Endpoint_Reactive_Strategy_B // ---------------------------------------------------------------------- + // Constructor template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl> -TAO_AV_Endpoint_Reactive_Strategy_B <T_StreamEndpoint, T_VDev, T_MediaCtrl>::TAO_AV_Endpoint_Reactive_Strategy_B (TAO_ORB_Manager *orb_manager) - : TAO_AV_Endpoint_Reactive_Strategy <T_StreamEndpoint, T_VDev, T_MediaCtrl> (orb_manager) +TAO_AV_Endpoint_Reactive_Strategy_B <T_StreamEndpoint, T_VDev, T_MediaCtrl>::TAO_AV_Endpoint_Reactive_Strategy_B (CORBA::ORB_ptr orb, PortableServer::POA_ptr poa) + : TAO_AV_Endpoint_Reactive_Strategy <T_StreamEndpoint, T_VDev, T_MediaCtrl> (orb, poa) { } @@ -261,11 +291,11 @@ TAO_AV_Endpoint_Reactive_Strategy_B <T_StreamEndpoint, T_VDev, T_MediaCtrl>::act if (this->make_stream_endpoint (stream_endpoint_b) == -1) return -1; - CORBA::String_var stream_endpoint_ior = this->orb_manager_->activate (stream_endpoint_b, - ACE_TRY_ENV); + CORBA::String_var stream_endpoint_ior = this->activate_with_poa (stream_endpoint_b, + ACE_TRY_ENV); ACE_TRY_CHECK; if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG,"TAO_AV_Endpoint_Reactive_Strategy_B::activate_stream_endpoint,Stream Endpoint ior is : %s\n",stream_endpoint_ior.in ())); - + this->stream_endpoint_b_ = stream_endpoint_b->_this (ACE_TRY_ENV); ACE_TRY_CHECK; stream_endpoint_b->_remove_ref (ACE_TRY_ENV); @@ -319,14 +349,23 @@ TAO_AV_Child_Process <T_StreamEndpoint_B, T_VDev, T_MediaCtrl>::TAO_AV_Child_Pro // Initializes the ORB, activates the objects, and release the semaphore template <class T_StreamEndpoint_B, class T_VDev , class T_MediaCtrl> int -TAO_AV_Child_Process <T_StreamEndpoint_B, T_VDev, T_MediaCtrl>::init (int argc, char **argv) +TAO_AV_Child_Process <T_StreamEndpoint_B, T_VDev, T_MediaCtrl>::init (int argc, + char **argv, + CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa) { ACE_DECLARE_NEW_CORBA_ENV; ACE_TRY { + this->orb_ = orb; + + this->poa_ = poa; + // create the objects and activate them in the poa this->activate_objects (argc, argv, + orb, + poa, ACE_TRY_ENV); ACE_TRY_CHECK; @@ -358,21 +397,39 @@ TAO_AV_Child_Process <T_StreamEndpoint_B, T_VDev, T_MediaCtrl>::init (int argc, return 0; } +template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl> +char * +TAO_AV_Child_Process <T_StreamEndpoint, T_VDev, T_MediaCtrl>::activate_with_poa (PortableServer::Servant servant, + CORBA::Environment &ACE_TRY_ENV) +{ + + PortableServer::ObjectId_var id = + this->poa_->activate_object (servant, + ACE_TRY_ENV); + ACE_CHECK_RETURN (0); + + CORBA::Object_var obj = + this->poa_->id_to_reference (id.in (), + ACE_TRY_ENV); + ACE_CHECK_RETURN (0); + + CORBA::String_var str = + this->orb_->object_to_string (obj.in (), + ACE_TRY_ENV); + ACE_CHECK_RETURN (0); + + return str._retn (); +} + // initializes the orb, and activates the objects template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl> int TAO_AV_Child_Process <T_StreamEndpoint, T_VDev, T_MediaCtrl>::activate_objects (int argc, - char **argv, - CORBA::Environment &ACE_TRY_ENV) + char **argv, + CORBA::Environment &ACE_TRY_ENV) { ACE_TRY { - // initialize the orb - this->orb_manager_.init (argc, - argv, - ACE_TRY_ENV); - ACE_TRY_CHECK; - // bridge method to make a new stream endpoint if (this->make_stream_endpoint (this->stream_endpoint_) == -1) return -1; @@ -386,20 +443,24 @@ TAO_AV_Child_Process <T_StreamEndpoint, T_VDev, T_MediaCtrl>::activate_objects return -1; // activate the stream_endpoint - CORBA::String_var stream_endpoint_ior = this->orb_manager_.activate (this->stream_endpoint_, - ACE_TRY_ENV); + CORBA::String_var stream_endpoint_ior = this->orb_->activate_with_poa (this->stream_endpoint_, + ACE_TRY_ENV); ACE_TRY_CHECK; - if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG,"(%P|%t)TAO_AV_Child_Process::activate_objects,stream_endpoint_ior :%s\n",stream_endpoint_ior.in ())); + if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG, + "(%P|%t)TAO_AV_Child_Process::activate_objects,stream_endpoint_ior :%s\n", + stream_endpoint_ior.in ())); // activate the vdev - CORBA::String_var vdev_ior = this->orb_manager_.activate (this->vdev_, - ACE_TRY_ENV); + CORBA::String_var vdev_ior = this->orb_->activate_with_poa (this->vdev_, + ACE_TRY_ENV); ACE_TRY_CHECK; - if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG,"(%P|%t)TAO_AV_Child_Process::activate_objects, vdev ior is :%s\n",vdev_ior.in ())); + if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG, + "(%P|%t)TAO_AV_Child_Process::activate_objects, vdev ior is :%s\n", + vdev_ior.in ())); // activate the media controller - CORBA::String_var media_ctrl_ior = this->orb_manager_.activate (this->media_ctrl_, - ACE_TRY_ENV); + CORBA::String_var media_ctrl_ior = this->orb_->activate_with_poa (this->media_ctrl_, + ACE_TRY_ENV); ACE_TRY_CHECK; if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG,"(%P|%t)TAO_AV_Child_Process::activate_objects,media_ctrl_ior is: %s\n",media_ctrl_ior.in ())); @@ -422,7 +483,7 @@ TAO_AV_Child_Process <T_StreamEndpoint, T_VDev, T_MediaCtrl>::bind_to_naming_se ACE_TRY { CORBA::Object_var naming_obj = - this->orb_manager_.orb ()->resolve_initial_references ("NameService"); + this->orb_->resolve_initial_references ("NameService"); if (CORBA::is_nil (naming_obj.in ())) ACE_ERROR_RETURN ((LM_ERROR, " (%P|%t) Unable to resolve the Name Service.\n"), @@ -468,8 +529,8 @@ TAO_AV_Child_Process <T_StreamEndpoint, T_VDev, T_MediaCtrl>::register_vdev (CO CORBA::Object_var media_ctrl_obj = this->media_ctrl_->_this (ACE_TRY_ENV); ACE_TRY_CHECK; - media_ctrl_property <<= this->orb_manager_.orb ()->object_to_string (media_ctrl_obj.in (), - ACE_TRY_ENV); + media_ctrl_property <<= this->orb_->object_to_string (media_ctrl_obj.in (), + ACE_TRY_ENV); ACE_TRY_CHECK; this->vdev_->define_property ("Related_MediaCtrl", media_ctrl_property, @@ -524,12 +585,12 @@ TAO_AV_Child_Process <T_StreamEndpoint_B, T_VDev, T_MediaCtrl>::run (ACE_Time_V ACE_DECLARE_NEW_CORBA_ENV; ACE_TRY { - result = this->orb_manager_.run (ACE_TRY_ENV,tv); + result = this->orb_->run (ACE_TRY_ENV,tv); ACE_TRY_CHECK; } ACE_CATCHANY { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,"orb_manager_.run ()"); + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,"orb.run ()"); return -1; } ACE_ENDTRY; diff --git a/TAO/orbsvcs/orbsvcs/AV/Endpoint_Strategy_T.h b/TAO/orbsvcs/orbsvcs/AV/Endpoint_Strategy_T.h index 94a29d6ea98..72310f7e91e 100644 --- a/TAO/orbsvcs/orbsvcs/AV/Endpoint_Strategy_T.h +++ b/TAO/orbsvcs/orbsvcs/AV/Endpoint_Strategy_T.h @@ -32,7 +32,9 @@ class TAO_AV_Export TAO_AV_Endpoint_Reactive_Strategy // Reactive strategy base class protected: - TAO_AV_Endpoint_Reactive_Strategy (TAO_ORB_Manager *orb_manager); + // Constructor + + TAO_AV_Endpoint_Reactive_Strategy (CORBA::ORB_ptr orb, PortableServer::POA_ptr poa); // Constructor virtual ~TAO_AV_Endpoint_Reactive_Strategy (void); @@ -47,6 +49,8 @@ protected: virtual int activate_vdev (CORBA::Environment &env); // activates the vdev with the POA + + virtual int activate_mediactrl (CORBA::Environment &env); // activates the media controller with the POA @@ -62,8 +66,12 @@ protected: // Bridge method to create a media_ctrl, a la Acceptor. Applications // can override this - TAO_ORB_Manager *orb_manager_; - // ORB manager, used to activate the objects + + char* activate_with_poa (PortableServer::Servant servant, CORBA::Environment &env); + + CORBA::ORB_ptr orb_; + + PortableServer::POA_var poa_; }; // ---------------------------------------------------------------------- @@ -76,7 +84,8 @@ class TAO_AV_Export TAO_AV_Endpoint_Reactive_Strategy_A // Reactive strategy public: - TAO_AV_Endpoint_Reactive_Strategy_A (TAO_ORB_Manager *orb_manager); + + TAO_AV_Endpoint_Reactive_Strategy_A (CORBA::ORB_ptr orb, PortableServer::POA_ptr poa); // Constructor virtual ~TAO_AV_Endpoint_Reactive_Strategy_A (void); @@ -101,8 +110,9 @@ class TAO_AV_Export TAO_AV_Endpoint_Reactive_Strategy_B // = DESCRIPTION // Reactive strategy public: - TAO_AV_Endpoint_Reactive_Strategy_B (TAO_ORB_Manager *); - // Constructor. + + TAO_AV_Endpoint_Reactive_Strategy_B (CORBA::ORB_ptr orb, PortableServer::POA_ptr poa); + // Constructor virtual ~TAO_AV_Endpoint_Reactive_Strategy_B (void); // Destructor. @@ -132,7 +142,7 @@ public: virtual ~TAO_AV_Child_Process (); // Destructor - int init (int argc, char **argv); + int init (int argc, char **argv, CORBA::ORB_ptr orb, PortableServer::POA_ptr poa); // Initializes the ORB, creates and activates the // T_StreamEndpoint, T_VDev, T_MediaCtrl in the POA @@ -147,6 +157,9 @@ protected: // Service, so the parent can pick the IOR's and // return them to the client + char* activate_with_poa (PortableServer::Servant servant, CORBA::Environment &env); + //activate the servant with the poa + int unbind_names (void); // Removes the vdev and streamendpoint names from the naming service. @@ -174,9 +187,6 @@ protected: // Bridge method to create a media_ctrl, a la Acceptor. Applications // can override this - TAO_ORB_Manager orb_manager_; - // The ORB Manager - CosNaming::NamingContext_var naming_context_; // The root Naming Context of the TAO naming service @@ -200,6 +210,11 @@ protected: char host_[MAXHOSTNAMELEN]; // Name of the host. + + CORBA::ORB_ptr orb_; + + PortableServer::POA_ptr poa_; + }; // ---------------------------------------------------------------------- |