diff options
Diffstat (limited to 'TAO/orbsvcs/tests/AVStreams/Simple_Three_Stage/receiver.cpp')
-rw-r--r-- | TAO/orbsvcs/tests/AVStreams/Simple_Three_Stage/receiver.cpp | 116 |
1 files changed, 65 insertions, 51 deletions
diff --git a/TAO/orbsvcs/tests/AVStreams/Simple_Three_Stage/receiver.cpp b/TAO/orbsvcs/tests/AVStreams/Simple_Three_Stage/receiver.cpp index 513f6d9a542..aad091ad9c4 100644 --- a/TAO/orbsvcs/tests/AVStreams/Simple_Three_Stage/receiver.cpp +++ b/TAO/orbsvcs/tests/AVStreams/Simple_Three_Stage/receiver.cpp @@ -4,46 +4,56 @@ #include "ace/Get_Opt.h" static FILE *output_file = 0; -// File into which the received data is written. +// File handle of the file into which received data is written. static const char *output_file_name = "output"; -// File handle of the file into which data is written. +// File name of the file into which received data is written. int Receiver_StreamEndPoint::get_callback (const char *, - TAO_AV_Callback *&callback) + TAO_AV_Callback *&callback) { - // Return the application callback to the AVStreams for further upcalls + // Return the receiver application callback to the AVStreams for + // future upcalls. callback = &this->callback_; return 0; } +Receiver_Callback::Receiver_Callback (void) + : frame_count_ (1) +{ +} + int Receiver_Callback::receive_frame (ACE_Message_Block *frame, TAO_AV_frame_info *, const ACE_Addr &) { - // Upcall from the AVStreams when there is data to be received from the - // distributer. - + // + // Upcall from the AVStreams when there is data to be received from + // the sender. + // ACE_DEBUG ((LM_DEBUG, - "Receiver_Callback::receive_frame\n")); + "Receiver_Callback::receive_frame for frame %d\n", + this->frame_count_++)); while (frame != 0) { // Write the received data to the file. - unsigned int result = ACE_OS::fwrite (frame->rd_ptr (), - frame->length (), - 1, - output_file); - + int result = + ACE_OS::fwrite (frame->rd_ptr (), + frame->length (), + 1, + output_file); + if (result == frame->length ()) ACE_ERROR_RETURN ((LM_ERROR, - "FTP_Server_Flow_Handler::fwrite failed\n"), + "Receiver_Callback::fwrite failed\n"), -1); - + frame = frame->cont (); } + return 0; } @@ -53,7 +63,7 @@ Receiver_Callback::handle_destroy (void) // Called when the distributer requests the stream to be shutdown. ACE_DEBUG ((LM_DEBUG, "Receiver_Callback::end_stream\n")); - + ACE_TRY_NEW_ENV { TAO_AV_CORE::instance ()->orb ()->shutdown (0, @@ -63,9 +73,9 @@ Receiver_Callback::handle_destroy (void) ACE_CATCHANY { ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, - "Receiver_Callback::handle_destroy Failed\n"); + "Receiver_Callback::handle_destroy Failed\n"); return -1; - + } ACE_ENDTRY; @@ -90,39 +100,39 @@ Receiver::init (int, int result = this->reactive_strategy_.init (TAO_AV_CORE::instance ()->orb (), TAO_AV_CORE::instance ()->poa ()); - if (result != 0) return result; - // Register the receiver mmdevice object with the ORB + // Register the receiver mmdevice object with the ORB ACE_NEW_RETURN (this->mmdevice_, TAO_MMDevice (&this->reactive_strategy_), -1); - + // Servant Reference Counting to manage lifetime PortableServer::ServantBase_var safe_mmdevice = this->mmdevice_; - + CORBA::Object_var mmdevice = this->mmdevice_->_this (ACE_TRY_ENV); - ACE_CHECK_RETURN(-1); + ACE_CHECK_RETURN (-1); - // Register the receiver mmdevice with the naming service. - CosNaming::Name receiver_mmdevice_name (1); - receiver_mmdevice_name.length (1); - receiver_mmdevice_name [0].id = CORBA::string_dup ("Receiver"); + // Register the mmdevice with the naming service. + CosNaming::Name name (1); + name.length (1); + name [0].id = + CORBA::string_dup ("Receiver"); // Initialize the naming services - if (this->my_naming_client_.init (TAO_AV_CORE::instance ()->orb ()) != 0) + if (this->naming_client_.init (TAO_AV_CORE::instance ()->orb ()) != 0) ACE_ERROR_RETURN ((LM_ERROR, "Unable to initialize " "the TAO_Naming_Client\n"), -1); - // Register the server object with the naming server. - this->my_naming_client_->rebind (receiver_mmdevice_name, - mmdevice.in (), - ACE_TRY_ENV); + // Register the receiver object with the naming server. + this->naming_client_->rebind (name, + mmdevice.in (), + ACE_TRY_ENV); ACE_CHECK_RETURN (-1); return 0; @@ -147,7 +157,7 @@ parse_args (int argc, break; default: ACE_ERROR_RETURN ((LM_ERROR, - "Usage: server -f filename"), + "Usage: receiver -f filename"), -1); } } @@ -163,10 +173,11 @@ main (int argc, ACE_TRY { // Initialize the ORB first. - CORBA::ORB_var orb = CORBA::ORB_init (argc, - argv, - 0, - ACE_TRY_ENV); + CORBA::ORB_var orb = + CORBA::ORB_init (argc, + argv, + 0, + ACE_TRY_ENV); ACE_TRY_CHECK; CORBA::Object_var obj @@ -209,21 +220,28 @@ main (int argc, output_file_name), -1); - else ACE_DEBUG ((LM_DEBUG, - "File Opened Successfull\n")); + else + ACE_DEBUG ((LM_DEBUG, + "File Opened Successfull\n")); Receiver receiver; result = receiver.init (argc, - argv, - ACE_TRY_ENV); + argv, + ACE_TRY_ENV); ACE_TRY_CHECK; - + if (result != 0) return result; - + orb->run (ACE_TRY_ENV); ACE_TRY_CHECK; + + // Hack for now.... + ACE_OS::sleep (1); + + orb->destroy (ACE_TRY_ENV); + ACE_TRY_CHECK; } ACE_CATCHANY { @@ -239,13 +257,9 @@ main (int argc, } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class TAO_AV_Endpoint_Reactive_Strategy_B -<Receiver_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl>; -template class TAO_AV_Endpoint_Reactive_Strategy -<Receiver_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl>; +template class TAO_AV_Endpoint_Reactive_Strategy_B<Receiver_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl>; +template class TAO_AV_Endpoint_Reactive_Strategy<Receiver_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate TAO_AV_Endpoint_Reactive_Strategy_B -<Receiver_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl> -#pragma instantiate TAO_AV_Endpoint_Reactive_Strategy -<Receiver_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl> +#pragma instantiate TAO_AV_Endpoint_Reactive_Strategy_B<Receiver_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl> +#pragma instantiate TAO_AV_Endpoint_Reactive_Strategy<Receiver_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl> #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ |