00001
00002
00003 #ifndef TAO_AV_ENDPOINT_STRATEGY_T_CPP
00004 #define TAO_AV_ENDPOINT_STRATEGY_T_CPP
00005
00006 #include "orbsvcs/AV/Endpoint_Strategy_T.h"
00007
00008 #include "tao/debug.h"
00009
00010 #include "ace/Process_Semaphore.h"
00011 #include "ace/OS_NS_unistd.h"
00012
00013
00014 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00015
00016
00017
00018
00019
00020 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00021 TAO_AV_Endpoint_Reactive_Strategy <T_StreamEndpoint, T_VDev, T_MediaCtrl>::TAO_AV_Endpoint_Reactive_Strategy (void)
00022 : stream_endpoint_a_servant_(0), stream_endpoint_b_servant_(0), vdev_servant_(0),
00023 media_ctrl_servant_(0)
00024 {
00025 }
00026
00027 template <class T_StreamEndpoint, class T_VDev, class T_MediaCtrl>
00028 TAO_AV_Endpoint_Reactive_Strategy <T_StreamEndpoint, T_VDev, T_MediaCtrl>::~TAO_AV_Endpoint_Reactive_Strategy (void)
00029 {
00030
00031 ACE_DECLARE_NEW_CORBA_ENV;
00032 ACE_TRY
00033 {
00034 if(this->stream_endpoint_a_servant_ )
00035 {
00036 stream_endpoint_a_servant_->_remove_ref (
00037 ACE_ENV_SINGLE_ARG_PARAMETER);
00038 ACE_TRY_CHECK;
00039 }
00040
00041 if(this->stream_endpoint_b_servant_)
00042 {
00043 stream_endpoint_b_servant_->_remove_ref (
00044 ACE_ENV_SINGLE_ARG_PARAMETER);
00045 ACE_TRY_CHECK;
00046 }
00047
00048 if(this->vdev_servant_)
00049 {
00050 vdev_servant_->_remove_ref (
00051 ACE_ENV_SINGLE_ARG_PARAMETER);
00052 ACE_TRY_CHECK;
00053 }
00054
00055 if(this->media_ctrl_servant_)
00056 {
00057 media_ctrl_servant_->_remove_ref (
00058 ACE_ENV_SINGLE_ARG_PARAMETER);
00059 ACE_TRY_CHECK;
00060 }
00061 }
00062 ACE_CATCHANY
00063 {
00064 }
00065 # if defined (ACE_HAS_EXCEPTIONS) \
00066 && defined (ACE_HAS_BROKEN_UNEXPECTED_EXCEPTIONS)
00067 ACE_CATCHALL
00068 {
00069 }
00070 # endif
00071 ACE_ENDTRY;
00072
00073 }
00074
00075
00076 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00077 int
00078 TAO_AV_Endpoint_Reactive_Strategy <T_StreamEndpoint, T_VDev, T_MediaCtrl>::activate (void)
00079 {
00080 ACE_DECLARE_NEW_CORBA_ENV;
00081 ACE_TRY
00082 {
00083 this->activate_stream_endpoint (ACE_ENV_SINGLE_ARG_PARAMETER);
00084 ACE_TRY_CHECK;
00085 if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG,"(%P|%t)TAO_AV_Endpoint_Reactive_Strategy::activated stream_endpoint\n"));
00086
00087 this->activate_vdev (ACE_ENV_SINGLE_ARG_PARAMETER);
00088 ACE_TRY_CHECK;
00089 if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG,"(%P|%t)TAO_AV_Endpoint_Reactive_Strategy::activated vdev\n"));
00090
00091 this->activate_mediactrl (ACE_ENV_SINGLE_ARG_PARAMETER);
00092 ACE_TRY_CHECK;
00093 if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG,"(%P|%t)TAO_AV_Endpoint_Reactive_Strategy::activated mediactrl\n"));
00094 }
00095 ACE_CATCHANY
00096 {
00097 ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,"TAO_Endpoint_Reactive_Strategy::activate");
00098 return -1;
00099 }
00100 ACE_ENDTRY;
00101 ACE_CHECK_RETURN (-1);
00102 return 0;
00103 }
00104
00105 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00106 char *
00107 TAO_AV_Endpoint_Reactive_Strategy <T_StreamEndpoint, T_VDev, T_MediaCtrl>::activate_with_poa (PortableServer::Servant servant ACE_ENV_ARG_DECL)
00108 {
00109
00110 PortableServer::ObjectId_var id =
00111 this->poa_->activate_object (servant
00112 ACE_ENV_ARG_PARAMETER);
00113 ACE_CHECK_RETURN (0);
00114
00115 CORBA::Object_var obj =
00116 this->poa_->id_to_reference (id.in ()
00117 ACE_ENV_ARG_PARAMETER);
00118 ACE_CHECK_RETURN (0);
00119
00120 CORBA::String_var str =
00121 this->orb_->object_to_string (obj.in ()
00122 ACE_ENV_ARG_PARAMETER);
00123 ACE_CHECK_RETURN (0);
00124
00125 return str._retn ();
00126 }
00127
00128
00129
00130 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00131 int
00132 TAO_AV_Endpoint_Reactive_Strategy <T_StreamEndpoint, T_VDev, T_MediaCtrl>::activate_vdev (ACE_ENV_SINGLE_ARG_DECL)
00133 {
00134 ACE_TRY
00135 {
00136
00137 T_VDev *vdev = 0;
00138 if (this->make_vdev (vdev) == -1)
00139 return -1;
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149 this->vdev_ = vdev->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
00150 ACE_TRY_CHECK;
00151 }
00152 ACE_CATCHANY
00153 {
00154 ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,"TAO_AV_Endpoint_Reactive_Strategy::activate_vdev");
00155 return -1;
00156 }
00157 ACE_ENDTRY;
00158 ACE_CHECK_RETURN (-1);
00159 return 0;
00160 }
00161
00162
00163
00164 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00165 int
00166 TAO_AV_Endpoint_Reactive_Strategy <T_StreamEndpoint, T_VDev, T_MediaCtrl>::activate_mediactrl (ACE_ENV_SINGLE_ARG_DECL)
00167 {
00168 ACE_TRY
00169 {
00170
00171 if (this->make_mediactrl ( media_ctrl_servant_ ) == -1)
00172 return -1;
00173
00174
00175 CORBA::Any anyval;
00176 media_ctrl_obj_
00177 = media_ctrl_servant_->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
00178 ACE_TRY_CHECK;
00179
00180 anyval <<= media_ctrl_obj_.in();
00181
00182 ACE_TRY_CHECK;
00183
00184 this->vdev_->define_property ("Related_MediaCtrl",
00185 anyval
00186 ACE_ENV_ARG_PARAMETER);
00187
00188 ACE_TRY_CHECK;
00189 }
00190 ACE_CATCHANY
00191 {
00192 ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,"TAO_AV_Endpoint_Reactive_Strategy::activate_mediactrl");
00193 return -1;
00194 }
00195 ACE_ENDTRY;
00196 ACE_CHECK_RETURN (-1);
00197 return 0;
00198 }
00199
00200
00201 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00202 int
00203 TAO_AV_Endpoint_Reactive_Strategy<T_StreamEndpoint, T_VDev, T_MediaCtrl>::make_stream_endpoint (T_StreamEndpoint *&stream_endpoint)
00204 {
00205 ACE_NEW_RETURN (stream_endpoint,
00206 T_StreamEndpoint,
00207 -1);
00208 return 0;
00209 }
00210
00211
00212 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00213 int
00214 TAO_AV_Endpoint_Reactive_Strategy<T_StreamEndpoint, T_VDev, T_MediaCtrl>::make_vdev (T_VDev *&vdev)
00215 {
00216 ACE_NEW_RETURN (vdev,
00217 T_VDev,
00218 -1);
00219 return 0;
00220 }
00221
00222
00223 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00224 int
00225 TAO_AV_Endpoint_Reactive_Strategy<T_StreamEndpoint, T_VDev, T_MediaCtrl>::make_mediactrl (T_MediaCtrl *&media_ctrl)
00226 {
00227 ACE_NEW_RETURN (media_ctrl,
00228 T_MediaCtrl,
00229 -1);
00230 return 0;
00231 }
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00242 TAO_AV_Endpoint_Reactive_Strategy_A <T_StreamEndpoint, T_VDev, T_MediaCtrl>::TAO_AV_Endpoint_Reactive_Strategy_A (void)
00243 {
00244 }
00245
00246
00247
00248 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00249 TAO_AV_Endpoint_Reactive_Strategy_A <T_StreamEndpoint, T_VDev, T_MediaCtrl>::~TAO_AV_Endpoint_Reactive_Strategy_A (void)
00250 {
00251 }
00252
00253
00254 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00255 int
00256 TAO_AV_Endpoint_Reactive_Strategy_A <T_StreamEndpoint, T_VDev, T_MediaCtrl>::init (CORBA::ORB_ptr orb, PortableServer::POA_ptr poa)
00257 {
00258 this->orb_ = CORBA::ORB::_duplicate (orb);
00259 this->poa_ = PortableServer::POA::_duplicate (poa);
00260 return 0;
00261 }
00262
00263
00264
00265 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00266 int
00267 TAO_AV_Endpoint_Reactive_Strategy_A<T_StreamEndpoint, T_VDev, T_MediaCtrl>::create_A (AVStreams::StreamEndPoint_A_ptr &stream_endpoint,
00268 AVStreams::VDev_ptr &vdev
00269 ACE_ENV_ARG_DECL_NOT_USED)
00270 {
00271 if (this->activate () == -1)
00272 ACE_ERROR_RETURN ((LM_ERROR,
00273 "(%P|%t) TAO_AV_Endpoint_Reactive_Strategy_A: Error in activate ()\n"),
00274 -1);
00275
00276 stream_endpoint = AVStreams::StreamEndPoint_A::_duplicate( this->stream_endpoint_a_.in() );
00277 vdev = AVStreams::VDev::_duplicate( this->vdev_.in() );
00278 return 0;
00279
00280 }
00281
00282
00283 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00284 int
00285 TAO_AV_Endpoint_Reactive_Strategy_A <T_StreamEndpoint, T_VDev, T_MediaCtrl>::activate_stream_endpoint (ACE_ENV_SINGLE_ARG_DECL)
00286 {
00287 ACE_TRY
00288 {
00289
00290
00291 if (this->make_stream_endpoint (this->stream_endpoint_a_servant_) == -1)
00292 return -1;
00293
00294
00295 this->stream_endpoint_a_ = this->stream_endpoint_a_servant_->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
00296 ACE_TRY_CHECK;
00297 }
00298 ACE_CATCHANY
00299 {
00300 ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,"TAO_AV_Endpoint_Reactive_Strategy_A::activate_stream_endpoint");
00301 return -1;
00302 }
00303 ACE_ENDTRY;
00304 ACE_CHECK_RETURN (-1);
00305 return 0;
00306 }
00307
00308
00309
00310
00311
00312
00313
00314 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00315 TAO_AV_Endpoint_Reactive_Strategy_B <T_StreamEndpoint, T_VDev, T_MediaCtrl>::TAO_AV_Endpoint_Reactive_Strategy_B (void)
00316 {
00317 }
00318
00319
00320 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00321 TAO_AV_Endpoint_Reactive_Strategy_B <T_StreamEndpoint, T_VDev, T_MediaCtrl>::~TAO_AV_Endpoint_Reactive_Strategy_B (void)
00322 {
00323 }
00324
00325
00326 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00327 int
00328 TAO_AV_Endpoint_Reactive_Strategy_B <T_StreamEndpoint, T_VDev, T_MediaCtrl>::init (CORBA::ORB_ptr orb, PortableServer::POA_ptr poa)
00329 {
00330 this->orb_ = CORBA::ORB::_duplicate (orb);
00331 this->poa_ = PortableServer::POA::_duplicate (poa);
00332 return 0;
00333 }
00334
00335
00336 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00337 int
00338 TAO_AV_Endpoint_Reactive_Strategy_B <T_StreamEndpoint, T_VDev, T_MediaCtrl>::activate_stream_endpoint (ACE_ENV_SINGLE_ARG_DECL)
00339 {
00340 ACE_TRY
00341 {
00342 if (this->make_stream_endpoint ( this->stream_endpoint_b_servant_ ) == -1)
00343 return -1;
00344
00345 this->stream_endpoint_b_ = this->stream_endpoint_b_servant_->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
00346 ACE_TRY_CHECK;
00347 }
00348 ACE_CATCHANY
00349 {
00350 ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,"TAO_AV_Endpoint_Reactive_Strategy_B::activate_stream_endpoint");
00351 return -1;
00352 }
00353 ACE_ENDTRY;
00354 ACE_CHECK_RETURN (-1);
00355 return 0;
00356 }
00357
00358
00359 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00360 int
00361 TAO_AV_Endpoint_Reactive_Strategy_B<T_StreamEndpoint, T_VDev, T_MediaCtrl>::create_B (AVStreams::StreamEndPoint_B_ptr &stream_endpoint,
00362 AVStreams::VDev_ptr &vdev
00363 ACE_ENV_ARG_DECL_NOT_USED)
00364 {
00365 if (this->activate () == -1)
00366 ACE_ERROR_RETURN ((LM_ERROR,
00367 "(%P|%t) TAO_AV_Endpoint_Reactive_Strategy_B: Error in activate ()\n"),
00368 -1);
00369
00370 stream_endpoint = AVStreams::StreamEndPoint_B::_duplicate( this->stream_endpoint_b_.in() );
00371 vdev = AVStreams::VDev::_duplicate( this->vdev_.in() );
00372
00373 return 0;
00374 }
00375
00376
00377
00378
00379
00380
00381 template <class T_StreamEndpoint_B, class T_VDev , class T_MediaCtrl>
00382 TAO_AV_Child_Process <T_StreamEndpoint_B, T_VDev, T_MediaCtrl>::TAO_AV_Child_Process ()
00383 : stream_endpoint_name_ (0),
00384 pid_ (-1)
00385 {
00386 this->pid_ = ACE_OS::getpid ();
00387 if (this->pid_ == 0)
00388 ACE_ERROR ((LM_ERROR,"getpid () failed\n"));
00389 ACE_OS::hostname (this->host_,
00390 sizeof this->host_);
00391 }
00392
00393
00394 template <class T_StreamEndpoint_B, class T_VDev , class T_MediaCtrl>
00395 int
00396 TAO_AV_Child_Process <T_StreamEndpoint_B, T_VDev, T_MediaCtrl>::init (int argc,
00397 char **argv,
00398 CORBA::ORB_ptr orb,
00399 PortableServer::POA_ptr poa)
00400 {
00401 ACE_DECLARE_NEW_CORBA_ENV;
00402 ACE_TRY
00403 {
00404 this->orb_ = orb;
00405
00406 this->poa_ = poa;
00407
00408
00409 this->activate_objects (argc,
00410 argv
00411 ACE_ENV_ARG_PARAMETER);
00412 ACE_TRY_CHECK;
00413
00414
00415 this->bind_to_naming_service (ACE_ENV_SINGLE_ARG_PARAMETER);
00416 ACE_TRY_CHECK;
00417
00418
00419 this->register_vdev (ACE_ENV_SINGLE_ARG_PARAMETER);
00420 ACE_TRY_CHECK;
00421
00422
00423 this->register_stream_endpoint (ACE_ENV_SINGLE_ARG_PARAMETER);
00424 ACE_TRY_CHECK;
00425 }
00426 ACE_CATCHANY
00427 {
00428 ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,"TAO_Child_Process");
00429 return -1;
00430 }
00431 ACE_ENDTRY;
00432
00433
00434 if (this->release_semaphore () == -1)
00435 ACE_ERROR_RETURN ((LM_ERROR,
00436 "(%P|%t) Error releasing semaphores\n"),
00437 -1);
00438
00439 return 0;
00440 }
00441
00442 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00443 char *
00444 TAO_AV_Child_Process <T_StreamEndpoint, T_VDev, T_MediaCtrl>::activate_with_poa (PortableServer::Servant servant
00445 ACE_ENV_ARG_DECL)
00446 {
00447
00448 PortableServer::ObjectId_var id =
00449 this->poa_->activate_object (servant
00450 ACE_ENV_ARG_PARAMETER);
00451 ACE_CHECK_RETURN (0);
00452
00453 CORBA::Object_var obj =
00454 this->poa_->id_to_reference (id.in ()
00455 ACE_ENV_ARG_PARAMETER);
00456 ACE_CHECK_RETURN (0);
00457
00458 CORBA::String_var str =
00459 this->orb_->object_to_string (obj.in ()
00460 ACE_ENV_ARG_PARAMETER);
00461 ACE_CHECK_RETURN (0);
00462
00463 return str._retn ();
00464 }
00465
00466
00467 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00468 int
00469 TAO_AV_Child_Process <T_StreamEndpoint, T_VDev, T_MediaCtrl>::activate_objects (int ,
00470 char **
00471 ACE_ENV_ARG_DECL)
00472 {
00473 ACE_TRY
00474 {
00475
00476 if (this->make_stream_endpoint (this->stream_endpoint_) == -1)
00477 return -1;
00478
00479
00480 if (this->make_vdev (this->vdev_) == -1)
00481 return -1;
00482
00483
00484 if (this->make_mediactrl (this->media_ctrl_) == -1)
00485 return -1;
00486
00487
00488 CORBA::String_var stream_endpoint_ior = this->activate_with_poa (this->stream_endpoint_
00489 ACE_ENV_ARG_PARAMETER);
00490 ACE_TRY_CHECK;
00491 if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG,
00492 "(%P|%t)TAO_AV_Child_Process::activate_objects,stream_endpoint_ior :%s\n",
00493 stream_endpoint_ior.in ()));
00494
00495
00496 CORBA::String_var vdev_ior = this->activate_with_poa (this->vdev_
00497 ACE_ENV_ARG_PARAMETER);
00498 ACE_TRY_CHECK;
00499 if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG,
00500 "(%P|%t)TAO_AV_Child_Process::activate_objects, vdev ior is :%s\n",
00501 vdev_ior.in ()));
00502
00503
00504 CORBA::String_var media_ctrl_ior = this->activate_with_poa (this->media_ctrl_
00505 ACE_ENV_ARG_PARAMETER);
00506
00507 ACE_TRY_CHECK;
00508 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 ()));
00509 }
00510 ACE_CATCHANY
00511 {
00512 ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,"TAO_AV_Child_Process::init ");
00513 return -1;
00514 }
00515 ACE_ENDTRY;
00516 ACE_CHECK_RETURN (-1);
00517 return 0;
00518 }
00519
00520
00521 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00522 int
00523 TAO_AV_Child_Process <T_StreamEndpoint, T_VDev, T_MediaCtrl>::bind_to_naming_service (ACE_ENV_SINGLE_ARG_DECL)
00524 {
00525 ACE_TRY
00526 {
00527 CORBA::Object_var naming_obj =
00528 this->orb_->resolve_initial_references ("NameService" ACE_ENV_ARG_PARAMETER);
00529 ACE_TRY_CHECK;
00530 if (CORBA::is_nil (naming_obj.in ()))
00531 ACE_ERROR_RETURN ((LM_ERROR,
00532 " (%P|%t) Unable to resolve the Name Service.\n"),
00533 -1);
00534
00535 this->naming_context_ =
00536 CosNaming::NamingContext::_narrow (naming_obj.in ()
00537 ACE_ENV_ARG_PARAMETER);
00538 ACE_TRY_CHECK;
00539 }
00540 ACE_CATCHANY
00541 {
00542 ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,"TAO_AV_Child_Process::bind_to_naming_service");
00543 return -1;
00544 }
00545 ACE_ENDTRY;
00546 ACE_CHECK_RETURN (-1);
00547 return 0;
00548 }
00549
00550
00551 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00552 int
00553 TAO_AV_Child_Process <T_StreamEndpoint, T_VDev, T_MediaCtrl>::register_vdev (ACE_ENV_SINGLE_ARG_DECL)
00554 {
00555 ACE_TRY
00556 {
00557 char vdev_name [BUFSIZ];
00558 ACE_OS::sprintf (vdev_name,
00559 "%s:%s:%ld",
00560 "VDev",
00561 this->host_,
00562 static_cast<long> (this->pid_));
00563
00564 if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG,"(%P|%t)%s\n",vdev_name));
00565
00566 this->vdev_name_.length (1);
00567 this->vdev_name_ [0].id = CORBA::string_dup (vdev_name);
00568
00569
00570 CORBA::Any media_ctrl_property;
00571 media_ctrl_obj_ =
00572 this->media_ctrl_->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
00573 ACE_TRY_CHECK;
00574
00575 this->vdev_->define_property ("Related_MediaCtrl",
00576 media_ctrl_obj_.in()
00577 ACE_ENV_ARG_PARAMETER);
00578 ACE_TRY_CHECK;
00579
00580 vdev_obj_ = this->vdev_->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
00581 ACE_TRY_CHECK;
00582
00583 ACE_TRY_CHECK;
00584 ACE_TRY_EX (bind)
00585 {
00586
00587 this->naming_context_->bind (this->vdev_name_,
00588 vdev_obj_.in()
00589 ACE_ENV_ARG_PARAMETER);
00590 ACE_TRY_CHECK_EX (bind);
00591 }
00592 ACE_CATCH (CosNaming::NamingContext::AlreadyBound,ex)
00593 {
00594
00595
00596 this->naming_context_->rebind (this->vdev_name_,
00597 vdev_obj_.in()
00598 ACE_ENV_ARG_PARAMETER);
00599 ACE_TRY_CHECK;
00600 }
00601 ACE_CATCHANY
00602 {
00603 ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,"TAO_AV_Child_Process::register_vdev");
00604 return -1;
00605 }
00606 ACE_ENDTRY;
00607 ACE_CHECK_RETURN (-1);
00608 }
00609 ACE_CATCHANY
00610 {
00611 ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,"TAO_AV_Child_Process::register_vdev");
00612 return -1;
00613 }
00614 ACE_ENDTRY;
00615 ACE_CHECK_RETURN (-1);
00616 return 0;
00617 }
00618
00619
00620 template <class T_StreamEndpoint_B, class T_VDev , class T_MediaCtrl>
00621 int
00622 TAO_AV_Child_Process <T_StreamEndpoint_B, T_VDev, T_MediaCtrl>::run (ACE_Time_Value *tv)
00623 {
00624 ACE_DECLARE_NEW_CORBA_ENV;
00625 ACE_TRY
00626 {
00627 this->orb_->run (tv ACE_ENV_ARG_PARAMETER);
00628 ACE_TRY_CHECK;
00629 }
00630 ACE_CATCHANY
00631 {
00632 ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,"orb.run ()");
00633 return -1;
00634 }
00635 ACE_ENDTRY;
00636 return 0;
00637 }
00638
00639
00640 template <class T_StreamEndpoint_B, class T_VDev , class T_MediaCtrl>
00641 int
00642 TAO_AV_Child_Process <T_StreamEndpoint_B, T_VDev, T_MediaCtrl>::release_semaphore ()
00643 {
00644 char sem_str [BUFSIZ];
00645
00646 long pid = this->pid_;
00647 sprintf (sem_str,
00648 "%s:%s:%ld",
00649 "TAO_AV_Process_Semaphore",
00650 this->host_,
00651 pid);
00652
00653 if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG,
00654 "(%P|%t) semaphore is %s\n",
00655 sem_str));
00656
00657
00658 ACE_Process_Semaphore semaphore (0,
00659
00660 sem_str);
00661
00662 if (semaphore.release () == -1)
00663 ACE_ERROR_RETURN ((LM_ERROR,
00664 "(%P|%t) Error releasing semaphore %s: %p\n",
00665 sem_str,
00666 "semaphore.release ()"),
00667 -1);
00668
00669 return 0;
00670 }
00671
00672
00673 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00674 int
00675 TAO_AV_Child_Process <T_StreamEndpoint, T_VDev, T_MediaCtrl>::register_stream_endpoint (ACE_ENV_SINGLE_ARG_DECL)
00676 {
00677 CORBA::Object_ptr stream_endpoint_obj = CORBA::Object::_nil ();
00678 ACE_TRY
00679 {
00680 stream_endpoint_obj = this->stream_endpoint_->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
00681 ACE_TRY_CHECK;
00682
00683
00684
00685
00686 this->naming_context_->bind (this->stream_endpoint_name_,
00687 stream_endpoint_obj
00688 ACE_ENV_ARG_PARAMETER);
00689 ACE_TRY_CHECK;
00690 }
00691 ACE_CATCH (CosNaming::NamingContext::AlreadyBound,ex)
00692 {
00693
00694 this->naming_context_->rebind (this->stream_endpoint_name_,
00695 stream_endpoint_obj
00696 ACE_ENV_ARG_PARAMETER);
00697 ACE_TRY_CHECK;
00698 }
00699 ACE_CATCHANY
00700 {
00701 ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,"TAO_Endpoint_Reactive_Strategy::activate");
00702 return -1;
00703 }
00704 ACE_ENDTRY;
00705 ACE_CHECK_RETURN (-1);
00706 return 0;
00707 }
00708
00709
00710 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00711 int
00712 TAO_AV_Child_Process<T_StreamEndpoint, T_VDev, T_MediaCtrl>::make_stream_endpoint (T_StreamEndpoint *&stream_endpoint)
00713 {
00714 ACE_NEW_RETURN (stream_endpoint,
00715 T_StreamEndpoint,
00716 -1);
00717 return 0;
00718 }
00719
00720
00721 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00722 int
00723 TAO_AV_Child_Process<T_StreamEndpoint, T_VDev, T_MediaCtrl>::make_vdev (T_VDev *&vdev)
00724 {
00725 ACE_NEW_RETURN (vdev,
00726 T_VDev,
00727 -1);
00728 return 0;
00729 }
00730
00731
00732 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00733 int
00734 TAO_AV_Child_Process<T_StreamEndpoint, T_VDev, T_MediaCtrl>::make_mediactrl (T_MediaCtrl *&media_ctrl)
00735 {
00736 if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG,"(%P|%t) TAO_AV_Child_Process::make_mediactrl ()\n"));
00737 ACE_NEW_RETURN (media_ctrl,
00738 T_MediaCtrl,
00739 -1);
00740 return 0;
00741 }
00742
00743
00744 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00745 int
00746 TAO_AV_Child_Process<T_StreamEndpoint, T_VDev, T_MediaCtrl>::unbind_names (void)
00747 {
00748
00749 ACE_DECLARE_NEW_CORBA_ENV;
00750 ACE_TRY
00751 {
00752 if (CORBA::is_nil (this->naming_context_.in ()) == 0)
00753 return 0;
00754 this->naming_context_->unbind (this->stream_endpoint_name_
00755 ACE_ENV_ARG_PARAMETER);
00756 ACE_TRY_CHECK;
00757
00758 this->naming_context_->unbind (this->vdev_name_
00759 ACE_ENV_ARG_PARAMETER);
00760 ACE_TRY_CHECK;
00761 }
00762 ACE_CATCHANY
00763 {
00764 ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,"TAO_Endpoint_Process_Strategy::activate");
00765 return -1;
00766 }
00767 ACE_ENDTRY;
00768 ACE_CHECK_RETURN (-1);
00769 return 0;
00770 }
00771
00772
00773
00774
00775
00776
00777 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00778 TAO_AV_Child_Process<T_StreamEndpoint, T_VDev, T_MediaCtrl>::~TAO_AV_Child_Process ()
00779 {
00780 this->unbind_names ();
00781 }
00782
00783
00784
00785
00786
00787
00788
00789 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00790 TAO_AV_Child_Process_A<T_StreamEndpoint, T_VDev, T_MediaCtrl>::TAO_AV_Child_Process_A ()
00791 {
00792 char stream_endpoint_name[BUFSIZ];
00793 ACE_OS::sprintf (stream_endpoint_name,
00794 "%s:%s:%ld",
00795 "Stream_Endpoint_A",
00796 this->host_,
00797 static_cast<long> (this->pid_));
00798
00799 if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG,"(%P|%t)%s\n",stream_endpoint_name));
00800 this->stream_endpoint_name_.length (1);
00801 this->stream_endpoint_name_ [0].id = CORBA::string_dup (stream_endpoint_name);
00802 }
00803
00804 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00805 TAO_AV_Child_Process_A <T_StreamEndpoint, T_VDev, T_MediaCtrl>::~TAO_AV_Child_Process_A ()
00806 {
00807 }
00808
00809
00810
00811
00812
00813
00814
00815 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00816 TAO_AV_Child_Process_B<T_StreamEndpoint, T_VDev, T_MediaCtrl>::TAO_AV_Child_Process_B ()
00817 {
00818 char stream_endpoint_name[BUFSIZ];
00819 ACE_OS::sprintf (stream_endpoint_name,
00820 "%s:%s:%ld",
00821 "Stream_Endpoint_B",
00822 this->host_,
00823 static_cast<long> (this->pid_));
00824
00825 if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG,"(%P|%t)%s\n",stream_endpoint_name));
00826 this->stream_endpoint_name_.length (1);
00827 this->stream_endpoint_name_ [0].id = CORBA::string_dup (stream_endpoint_name);
00828 }
00829
00830 template <class T_StreamEndpoint, class T_VDev , class T_MediaCtrl>
00831 TAO_AV_Child_Process_B<T_StreamEndpoint, T_VDev, T_MediaCtrl>::~TAO_AV_Child_Process_B ()
00832 {
00833 }
00834
00835 TAO_END_VERSIONED_NAMESPACE_DECL
00836
00837 #endif