diff options
author | naga <naga@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-05-02 01:48:04 +0000 |
---|---|---|
committer | naga <naga@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-05-02 01:48:04 +0000 |
commit | 855b9d5c0d259bf9552ee974f85e1ff4bc03b786 (patch) | |
tree | 4c1bfae6e41a18878ce8f46cb71713efe7acdc98 /TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client | |
parent | 0d1aafab475aff5c9670625de4991ce62ad3b89f (diff) | |
download | ATCD-855b9d5c0d259bf9552ee974f85e1ff4bc03b786.tar.gz |
*** empty log message ***
Diffstat (limited to 'TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client')
3 files changed, 381 insertions, 232 deletions
diff --git a/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/Command_Handler.cpp b/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/Command_Handler.cpp index a1f8278cd5f..5e29f0426ff 100644 --- a/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/Command_Handler.cpp +++ b/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/Command_Handler.cpp @@ -17,7 +17,10 @@ const char *TAO_AV_ORB_ARGUMENTS = "-ORBobjrefstyle URL"; Command_Handler::Command_Handler (ACE_HANDLE command_handle) : command_handle_ (command_handle), - video_client_mmdevice_ (&orb_manager_) + reactive_strategy_ (&orb_manager_,this), + video_client_mmdevice_ (&reactive_strategy_), + video_data_handle_ (-1), + audio_data_handle_ (-1) { } @@ -399,7 +402,7 @@ int Command_Handler::init_audio_channel (char *phostname, char *audiofile) { ACE_DEBUG ((LM_DEBUG,"(%P|%t) init_audio_channel called\n")); - int dataSocket = -1; + this->audio_data_handle_ = -1; if (!hasAudioDevice) { @@ -409,7 +412,7 @@ Command_Handler::init_audio_channel (char *phostname, char *audiofile) if (this->connect_to_audio_server(phostname, &audioSocket, - &dataSocket, + &this->audio_data_handle_, &shared->audioMaxPktSize) == -1) return -1; @@ -508,10 +511,10 @@ Command_Handler::init_audio_channel (char *phostname, char *audiofile) if (SetRTpriority("AB", 1)) realTimeFlag = 0; #endif } - ABprocess(dataSocket); + ABprocess(this->audio_data_handle_); break; default: - // ComCloseFd(dataSocket); + // ComCloseFd(this->audio_data_handle_); ABflushBuf(0); break; } @@ -520,81 +523,93 @@ Command_Handler::init_audio_channel (char *phostname, char *audiofile) return 0; } -int -Command_Handler::get_video_control (void) +void +Command_Handler::set_video_data_handle (ACE_HANDLE data_fd) { - CORBA::String server_vdev_ior; - CORBA::String video_control_ior; - TAO_TRY - { - CORBA::Any_ptr anyptr = - this->video_client_mmdevice_.vdev ()-> - get_property_value ("Related_VDev",TAO_TRY_ENV); - TAO_CHECK_ENV; - if (anyptr != 0) - { - *anyptr >>= server_vdev_ior; - ACE_DEBUG ((LM_DEBUG,"Video_Server_VDev IOR is %s",server_vdev_ior)); - } - CORBA::Object_var video_server_vdev_obj = - this->orb_manager_.orb ()->string_to_object (server_vdev_ior, - TAO_TRY_ENV); - TAO_CHECK_ENV; - AVStreams::VDev_var video_server_vdev = - AVStreams::VDev::_narrow (video_server_vdev_obj.in (), - TAO_TRY_ENV); - TAO_CHECK_ENV; - if (CORBA::is_nil (video_server_vdev.in ())) - ACE_ERROR_RETURN ((LM_ERROR,"Failed to get Video Server Vdev object reference\n"),-1); - // video server virtual device object reference got succesfully. - // Get the video control from the video server vdev as a - // property - - anyptr = video_server_vdev->get_property_value ("Video_Control", - TAO_TRY_ENV); - if (anyptr != 0) - { - *anyptr >>= video_control_ior; - ACE_DEBUG ((LM_DEBUG,"The Video Control IOR is %s", - video_control_ior)); - } - CORBA::Object_var video_control_obj = - this->orb_manager_.orb ()->string_to_object - (video_control_ior,TAO_TRY_ENV); - TAO_CHECK_ENV; - this->video_control_ = - Video_Control::_narrow (video_control_obj.in (), - TAO_TRY_ENV); - TAO_CHECK_ENV; - if (CORBA::is_nil (this->video_control_.in ())) - ACE_ERROR_RETURN ((LM_ERROR,"Failed to get video control object reference\n"),-1); - } - TAO_CATCHANY - { - TAO_TRY_ENV.print_exception ("get_video_control:Exception:"); - return -1; - } - TAO_ENDTRY; - return 0; + videoSocket = this->video_data_handle_= data_fd; } +void +Command_Handler::set_video_control (Video_Control_ptr video_control) +{ + this->video_control_ = video_control; +} + +// int +// Command_Handler::get_video_control (void) +// { +// CORBA::String server_vdev_ior; +// CORBA::String video_control_ior; +// TAO_TRY +// { +// CORBA::Any_ptr anyptr = +// this->video_client_mmdevice_.vdev ()-> +// get_property_value ("Related_VDev",TAO_TRY_ENV); +// TAO_CHECK_ENV; +// if (anyptr != 0) +// { +// *anyptr >>= server_vdev_ior; +// ACE_DEBUG ((LM_DEBUG,"Video_Server_VDev IOR is %s",server_vdev_ior)); +// } +// CORBA::Object_var video_server_vdev_obj = +// this->orb_manager_.orb ()->string_to_object (server_vdev_ior, +// TAO_TRY_ENV); +// TAO_CHECK_ENV; +// AVStreams::VDev_var video_server_vdev = +// AVStreams::VDev::_narrow (video_server_vdev_obj.in (), +// TAO_TRY_ENV); +// TAO_CHECK_ENV; +// if (CORBA::is_nil (video_server_vdev.in ())) +// ACE_ERROR_RETURN ((LM_ERROR,"Failed to get Video Server Vdev object reference\n"),-1); +// // video server virtual device object reference got succesfully. +// // Get the video control from the video server vdev as a +// // property + +// anyptr = video_server_vdev->get_property_value ("Video_Control", +// TAO_TRY_ENV); +// if (anyptr != 0) +// { +// *anyptr >>= video_control_ior; +// ACE_DEBUG ((LM_DEBUG,"The Video Control IOR is %s", +// video_control_ior)); +// } +// CORBA::Object_var video_control_obj = +// this->orb_manager_.orb ()->string_to_object +// (video_control_ior,TAO_TRY_ENV); +// TAO_CHECK_ENV; +// this->video_control_ = +// Video_Control::_narrow (video_control_obj.in (), +// TAO_TRY_ENV); +// TAO_CHECK_ENV; +// if (CORBA::is_nil (this->video_control_.in ())) +// ACE_ERROR_RETURN ((LM_ERROR,"Failed to get video control object reference\n"),-1); +// } +// TAO_CATCHANY +// { +// TAO_TRY_ENV.print_exception ("get_video_control:Exception:"); +// return -1; +// } +// TAO_ENDTRY; +// return 0; +// } + + int Command_Handler::init_video_channel (char *phostname, char *videofile) { // ACE_DEBUG ((LM_DEBUG, "(%P|%t) Reached line %d in %s\n",__LINE__, __FILE__, fprintf (stderr," File Name is %s\n",videofile); - int dataSocket = -1; if (this->connect_to_video_server (phostname, &videoSocket, - &dataSocket, + &this->video_data_handle_, &shared->videoMaxPktSize) == -1) return -1; // Get the video control object as a property from the video virtual device. - if (this->get_video_control () == -1) - return -1; + // if (this->get_video_control () == -1) + //return -1; /* Initialize with VS */ { @@ -707,7 +722,7 @@ Command_Handler::init_video_channel (char *phostname, char *videofile) fprintf(stderr, "Error: totalFrames %d > MAX_FRAMES %d, needs change and recompile.\n", reply->totalFrames, MAX_FRAMES); - ComCloseConn(dataSocket); + ComCloseConn(this->video_data_handle_); ComCloseConn(videoSocket); videoSocket = -1; return -1; @@ -759,7 +774,7 @@ Command_Handler::init_video_channel (char *phostname, char *videofile) if (SetRTpriority("VB", 1)) realTimeFlag = 0; #endif } - VBprocess(sp[1], dataSocket); + VBprocess(sp[1], this->video_data_handle_); break; default: ::close(sp[1]); @@ -874,7 +889,7 @@ Command_Handler::close (void) ACE_DEBUG ((LM_DEBUG,"(%P|%t) audio close done \n")); } - if (CORBA::is_nil (this->video_control_.in ()) == CORBA::B_FALSE) + if (CORBA::is_nil (this->video_control_) == CORBA::B_FALSE) { // one way function call. this->video_control_->close (TAO_TRY_ENV); @@ -1533,7 +1548,7 @@ Command_Handler::stop_playing (void) return -1; TAO_CHECK_ENV; } - if (CORBA::is_nil (this->video_control_.in ()) == CORBA::B_FALSE) + if (CORBA::is_nil (this->video_control_) == CORBA::B_FALSE) { // ACE_DEBUG ((LM_DEBUG, "(%P|%t) Reached line %d in %s\n", __LINE__, __FILE__)); // CORBA call @@ -1640,8 +1655,6 @@ Command_Handler::connect_to_video_server (char *address, } TAO_ENDTRY; - *ctr_fd = *data_fd = this->video_client_mmdevice_.streamendpoint ()->get_handle (); - return 0; // CORBA::UShort server_port; @@ -1727,90 +1740,90 @@ Command_Handler::connect_to_audio_server (char *address, int *max_pkt_size) { - // set the pointers to the correct values - *max_pkt_size = -INET_SOCKET_BUFFER_SIZE; + // // set the pointers to the correct values +// *max_pkt_size = -INET_SOCKET_BUFFER_SIZE; - // construct the server addr - ACE_INET_Addr server_addr (VCR_TCP_PORT, - address); +// // construct the server addr +// ACE_INET_Addr server_addr (VCR_TCP_PORT, +// address); - this->audio_stream_.close (); - if (this->audio_connector_.connect (this->audio_stream_, - server_addr) == -1) - ACE_ERROR_RETURN ((LM_ERROR, - "(%P|%t) Connection to server failed: %p\n", - "connect"), - -1); - // Write the CmdINITaudio to tell the server that this is a audio - // client. - int tmp; - tmp = CmdINITaudio; - this->audio_stream_.send_n (&tmp, sizeof (tmp)); - int ack; - this->audio_stream_.recv_n (&ack, sizeof (ack)); - - ACE_DEBUG ((LM_DEBUG,"(%P|%t) got ack :%d\n",ack)); +// this->audio_stream_.close (); +// if (this->audio_connector_.connect (this->audio_stream_, +// server_addr) == -1) +// ACE_ERROR_RETURN ((LM_ERROR, +// "(%P|%t) Connection to server failed: %p\n", +// "connect"), +// -1); +// // Write the CmdINITaudio to tell the server that this is a audio +// // client. +// int tmp; +// tmp = CmdINITaudio; +// this->audio_stream_.send_n (&tmp, sizeof (tmp)); +// int ack; +// this->audio_stream_.recv_n (&ack, sizeof (ack)); + +// ACE_DEBUG ((LM_DEBUG,"(%P|%t) got ack :%d\n",ack)); - // initialize the command handler , ORB - if (this->resolve_audio_reference () == -1) - ACE_ERROR_RETURN ((LM_ERROR, - "(%P|%t) command_handler: resolve_audio_reference returned -1"), - -1); +// // initialize the command handler , ORB +// if (this->resolve_audio_reference () == -1) +// ACE_ERROR_RETURN ((LM_ERROR, +// "(%P|%t) command_handler: resolve_audio_reference returned -1"), +// -1); - CORBA::UShort server_port; - ACE_INET_Addr local_addr; - CORBA::String client_address_string; - TAO_TRY - { - ACE_NEW_RETURN (client_address_string, - char [BUFSIZ], - -1); - this->audio_dgram_.close (); - // Get the local UDP address - if (this->audio_dgram_.open (ACE_Addr::sap_any) == -1) - ACE_ERROR_RETURN ((LM_ERROR,"(%P|%t)datagram open failed %p"),-1); - - if (this->audio_dgram_.get_local_addr (local_addr) == -1) - ACE_ERROR_RETURN ((LM_ERROR,"(%P|%t)datagram get local addr failed %p"),-1); - // form a string - ::sprintf (client_address_string, - "%s:%d", - local_addr.get_host_name (), - local_addr.get_port_number ()); +// CORBA::UShort server_port; +// ACE_INET_Addr local_addr; +// CORBA::String client_address_string; +// TAO_TRY +// { +// ACE_NEW_RETURN (client_address_string, +// char [BUFSIZ], +// -1); +// this->audio_dgram_.close (); +// // Get the local UDP address +// if (this->audio_dgram_.open (ACE_Addr::sap_any) == -1) +// ACE_ERROR_RETURN ((LM_ERROR,"(%P|%t)datagram open failed %p"),-1); + +// if (this->audio_dgram_.get_local_addr (local_addr) == -1) +// ACE_ERROR_RETURN ((LM_ERROR,"(%P|%t)datagram get local addr failed %p"),-1); +// // form a string +// ::sprintf (client_address_string, +// "%s:%d", +// local_addr.get_host_name (), +// local_addr.get_port_number ()); - // ACE_DEBUG ((LM_DEBUG, - // "(%P|%t) Client string is %s\n", - // client_address_string)); +// // ACE_DEBUG ((LM_DEBUG, +// // "(%P|%t) Client string is %s\n", +// // client_address_string)); - server_port = this->audio_control_->set_peer (client_address_string, - TAO_TRY_ENV); - TAO_CHECK_ENV; - if (server_port == -1) - ACE_ERROR_RETURN ((LM_ERROR, - "(%P|%t) set_peer failed\n"), - -1); - ACE_DEBUG ((LM_DEBUG,"(%P|%t) set_peer done:server port =%d\n",server_port)); - } - TAO_CATCHANY - { - TAO_TRY_ENV.print_exception ("audio_control_->set_peer () (..)"); - return -1; - } - TAO_ENDTRY; +// server_port = this->audio_control_->set_peer (client_address_string, +// TAO_TRY_ENV); +// TAO_CHECK_ENV; +// if (server_port == -1) +// ACE_ERROR_RETURN ((LM_ERROR, +// "(%P|%t) set_peer failed\n"), +// -1); +// ACE_DEBUG ((LM_DEBUG,"(%P|%t) set_peer done:server port =%d\n",server_port)); +// } +// TAO_CATCHANY +// { +// TAO_TRY_ENV.print_exception ("audio_control_->set_peer () (..)"); +// return -1; +// } +// TAO_ENDTRY; - ACE_INET_Addr server_udp_addr (server_port, - address); +// ACE_INET_Addr server_udp_addr (server_port, +// address); - if (ACE_OS::connect (this->audio_dgram_.get_handle (),(sockaddr *) server_udp_addr.get_addr (), - server_udp_addr.get_size ()) == -1) - ACE_ERROR_RETURN ((LM_ERROR,"(%P|%t)datagram connect failed %p"),-1); +// if (ACE_OS::connect (this->audio_dgram_.get_handle (),(sockaddr *) server_udp_addr.get_addr (), +// server_udp_addr.get_size ()) == -1) +// ACE_ERROR_RETURN ((LM_ERROR,"(%P|%t)datagram connect failed %p"),-1); - // set the pointers to the correct values - *ctr_fd = *data_fd = this->audio_dgram_.get_handle (); - // set both the control and data socket the same UDP socket. - // ACE_DEBUG ((LM_DEBUG, - // "Control and data fd = %d\n", - // *ctr_fd)); +// // set the pointers to the correct values +// *ctr_fd = *data_fd = this->audio_dgram_.get_handle (); +// // set both the control and data socket the same UDP socket. +// // ACE_DEBUG ((LM_DEBUG, +// // "Control and data fd = %d\n", +// // *ctr_fd)); return 0; } @@ -2571,6 +2584,17 @@ Client_Sig_Handler::TimerProcessing (void) // ----------------------------------------------------------- // Video_Client_StreamEndPoint methods +Video_Client_StreamEndPoint::Video_Client_StreamEndPoint (void) + : command_handler_ (0) +{ +} + + +Video_Client_StreamEndPoint::Video_Client_StreamEndPoint (Command_Handler *command_handler) + :command_handler_ (command_handler) +{ +} + int Video_Client_StreamEndPoint::handle_open (void) { @@ -2640,6 +2664,9 @@ Video_Client_StreamEndPoint::handle_postconnect (AVStreams::flowSpec& server_spe if (ACE_OS::connect (this->dgram_.get_handle (),(sockaddr *) server_udp_addr.get_addr (), server_udp_addr.get_size ()) == -1) ACE_ERROR_RETURN ((LM_ERROR,"(%P|%t) datagram connect failed %p\n"),-1); + // Now set the data handle of the command handler. + + this->command_handler_->set_video_data_handle (this->dgram_.get_handle ()); return 0; } @@ -2694,69 +2721,120 @@ Video_Client_StreamEndPoint::get_handle (void) //--------------------------------------------------------------- // Video_Client_MMDevice methods -Video_Client_MMDevice::Video_Client_MMDevice (TAO_ORB_Manager - *orb_manager) - :orb_manager_ (orb_manager) -{ -} +// Video_Client_MMDevice::Video_Client_MMDevice (TAO_ORB_Manager +// *orb_manager) +// :orb_manager_ (orb_manager) +// { +// } -AVStreams::StreamEndPoint_A_ptr -Video_Client_MMDevice::create_A (AVStreams::StreamCtrl_ptr the_requester, - AVStreams::VDev_out the_vdev, - AVStreams::streamQoS &the_qos, - CORBA::Boolean_out met_qos, - char *&named_vdev, - const AVStreams::flowSpec &the_spec, - CORBA::Environment &env) -{ - // Register the objects with the ORB. +// AVStreams::StreamEndPoint_A_ptr +// Video_Client_MMDevice::create_A (AVStreams::StreamCtrl_ptr the_requester, +// AVStreams::VDev_out the_vdev, +// AVStreams::streamQoS &the_qos, +// CORBA::Boolean_out met_qos, +// char *&named_vdev, +// const AVStreams::flowSpec &the_spec, +// CORBA::Environment &env) +// { +// // Register the objects with the ORB. - this->orb_manager_->activate_under_child_poa ("Video_Client_VDev", - &this->video_vdev_, - env); - TAO_CHECK_ENV_RETURN (env,0); +// this->orb_manager_->activate_under_child_poa ("Video_Client_VDev", +// &this->video_vdev_, +// env); +// TAO_CHECK_ENV_RETURN (env,0); - this->orb_manager_-> - activate_under_child_poa ("Video_Client_StreamEndPoint", - &this->video_streamendpoint_, - env); +// this->orb_manager_-> +// activate_under_child_poa ("Video_Client_StreamEndPoint", +// &this->video_streamendpoint_, +// env); - TAO_CHECK_ENV_RETURN (env,0); +// TAO_CHECK_ENV_RETURN (env,0); - the_vdev = AVStreams::VDev::_duplicate (this->video_vdev_._this - (env)); - TAO_CHECK_ENV_RETURN (env,0); +// the_vdev = AVStreams::VDev::_duplicate (this->video_vdev_._this +// (env)); +// TAO_CHECK_ENV_RETURN (env,0); - AVStreams::StreamEndPoint_A_ptr ptr = - AVStreams::StreamEndPoint_A::_duplicate - (this->video_streamendpoint_._this (env)); +// AVStreams::StreamEndPoint_A_ptr ptr = +// AVStreams::StreamEndPoint_A::_duplicate +// (this->video_streamendpoint_._this (env)); - TAO_CHECK_ENV_RETURN (env,0); - return ptr; +// TAO_CHECK_ENV_RETURN (env,0); +// return ptr; +// } + +// AVStreams::VDev_ptr +// Video_Client_MMDevice::vdev (void) +// { +// AVStreams::VDev_ptr vdev_ptr = 0; +// TAO_TRY +// { +// vdev_ptr = this->video_vdev_._this (TAO_TRY_ENV); +// TAO_CHECK_ENV; +// } +// TAO_CATCHANY +// { +// TAO_TRY_ENV.print_exception ("Video_Client_MMDevice:vdev._this failed"); +// return 0; +// } +// TAO_ENDTRY; +// return vdev_ptr; +// } + +// Video_Client_StreamEndPoint * +// Video_Client_MMDevice::streamendpoint (void) +// { +// return &this->video_streamendpoint_; +// } + +Video_Client_VDev::Video_Client_VDev (void) + : video_control_ (0), + command_handler_ (0) +{ } -AVStreams::VDev_ptr -Video_Client_MMDevice::vdev (void) + +Video_Client_VDev::Video_Client_VDev (Command_Handler *command_handler) + :video_control_ (0), + command_handler_ (command_handler) { - AVStreams::VDev_ptr vdev_ptr = 0; - TAO_TRY - { - vdev_ptr = this->video_vdev_._this (TAO_TRY_ENV); - TAO_CHECK_ENV; - } - TAO_CATCHANY - { - TAO_TRY_ENV.print_exception ("Video_Client_MMDevice:vdev._this failed"); - return 0; - } - TAO_ENDTRY; - return vdev_ptr; } -Video_Client_StreamEndPoint * -Video_Client_MMDevice::streamendpoint (void) +CORBA::Boolean +Video_Client_VDev::set_media_ctrl (CORBA::Object_ptr media_ctrl, + CORBA::Environment &env) +{ + this->video_control_ = Video_Control::_narrow (media_ctrl, + env); + + TAO_CHECK_ENV_RETURN (env,CORBA::B_FALSE); + + this->command_handler_->set_video_control (this->video_control_); + + return CORBA::B_TRUE; +} + +Video_Endpoint_Reactive_Strategy_A::Video_Endpoint_Reactive_Strategy_A (TAO_ORB_Manager *orb_manager, + Command_Handler *command_handler) + : TAO_AV_Endpoint_Reactive_Strategy_A<Video_Client_StreamEndPoint,Video_Client_VDev,AV_Null_MediaCtrl> (orb_manager), + command_handler_ (command_handler) { - return &this->video_streamendpoint_; } - +int +Video_Endpoint_Reactive_Strategy_A::make_vdev (Video_Client_VDev *&vdev) +{ + ACE_NEW_RETURN (vdev, + Video_Client_VDev (this->command_handler_), + -1); + return 0; +} + +int +Video_Endpoint_Reactive_Strategy_A::make_stream_endpoint (Video_Client_StreamEndPoint *&endpoint) +{ + ACE_NEW_RETURN (endpoint, + Video_Client_StreamEndPoint (this->command_handler_), + -1); + + return 0; +} diff --git a/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/Command_Handler.h b/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/Command_Handler.h index 6f3c3045e01..5a163d3a78f 100644 --- a/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/Command_Handler.h +++ b/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/Command_Handler.h @@ -39,10 +39,18 @@ #include "mpeg_shared/Audio_ControlC.h" #include "orbsvcs/AV/AVStreams_i.h" + +class Command_Handler; + class Video_Client_StreamEndPoint :public virtual TAO_Client_StreamEndPoint { public: + Video_Client_StreamEndPoint (void); + + Video_Client_StreamEndPoint (Command_Handler *command_handler); + // constructor + virtual int handle_open (void); // called when streamendpoint is instantiated @@ -70,40 +78,79 @@ public: private: ACE_SOCK_Dgram dgram_; // The datagram used for streaming. - + Command_Handler *command_handler_; }; -class Video_Client_MMDevice - :public virtual TAO_MMDevice + + +class Video_Client_VDev + : public virtual TAO_VDev { public: - Video_Client_MMDevice (TAO_ORB_Manager *orb_manager); - // Constructor taking pointer to an ORB Manager + Video_Client_VDev (void); + Video_Client_VDev (Command_Handler *command_handler); - AVStreams::VDev_ptr vdev (void); - // Return the virtual device pointer +protected: + CORBA::Boolean set_media_ctrl (CORBA::Object_ptr media_ctrl, + CORBA::Environment& env); - Video_Client_StreamEndPoint *streamendpoint (void); - // Return the streamendpoint pointer - - virtual AVStreams::StreamEndPoint_A_ptr create_A (AVStreams::StreamCtrl_ptr the_requester, - AVStreams::VDev_out the_vdev, - AVStreams::streamQoS &the_qos, - CORBA::Boolean_out met_qos, - char *&named_vdev, - const AVStreams::flowSpec &the_spec, - CORBA::Environment &env); - // Called by StreamCtrl to create a "A" type streamandpoint and vdev private: - TAO_ORB_Manager *orb_manager_; - // Pointer to the ORB Manager + Video_Control_ptr video_control_; + // The video controller - Video_Client_StreamEndPoint video_streamendpoint_; - // The client side of the video stream. - TAO_VDev video_vdev_; - // Video virtual device + Command_Handler *command_handler_; + // pointer to the command handler object }; +// class Video_Client_MMDevice +// :public virtual TAO_MMDevice +// { +// public: +// Video_Client_MMDevice (TAO_ORB_Manager *orb_manager); +// // Constructor taking pointer to an ORB Manager + +// AVStreams::VDev_ptr vdev (void); +// // Return the virtual device pointer + +// Video_Client_StreamEndPoint *streamendpoint (void); +// // Return the streamendpoint pointer + +// virtual AVStreams::StreamEndPoint_A_ptr create_A (AVStreams::StreamCtrl_ptr the_requester, +// AVStreams::VDev_out the_vdev, +// AVStreams::streamQoS &the_qos, +// CORBA::Boolean_out met_qos, +// char *&named_vdev, +// const AVStreams::flowSpec &the_spec, +// CORBA::Environment &env); +// // Called by StreamCtrl to create a "A" type streamandpoint and vdev +// private: +// TAO_ORB_Manager *orb_manager_; +// // Pointer to the ORB Manager + +// Video_Client_StreamEndPoint video_streamendpoint_; +// // The client side of the video stream. +// TAO_VDev video_vdev_; +// // Video virtual device +// }; + +class Video_Endpoint_Reactive_Strategy_A + : public TAO_AV_Endpoint_Reactive_Strategy_A<Video_Client_StreamEndPoint,Video_Client_VDev,AV_Null_MediaCtrl> +{ +public: + Video_Endpoint_Reactive_Strategy_A (TAO_ORB_Manager *orb_manager, + Command_Handler *command_handler); + // constructor . The orb manager is needed for the TAO_AV_Endpoint_Reactive_Strategy_A. + + virtual int make_vdev (Video_Client_VDev *&vdev); + // hook to make our Vdev with the pointer to command handler. + virtual int make_stream_endpoint (Video_Client_StreamEndPoint *& endpoint); + // hook to make our streamendpoint taking a command handler pointer +private: + Command_Handler *command_handler_; + // pointer to command handler object + +}; + class Command_Handler : public virtual ACE_Event_Handler { @@ -127,6 +174,12 @@ public: int run (void); // Run the ORB event loop + + void set_video_data_handle (ACE_HANDLE data_fd); + // sets the data handle (UDP) of the command handler + + void set_video_control (Video_Control_ptr video_control); + // called to set the video control object pointer of the comand handler. int get_video_control (void); // Gets the video control reference thru the property service from // the video server virtual device @@ -199,17 +252,11 @@ private: ACE_SOCK_Dgram audio_dgram_; // Audio UDP socket - ACE_SOCK_Stream video_stream_; - // TCP stream socket + ACE_HANDLE video_data_handle_; + // UDP socket for video - ACE_SOCK_Stream audio_stream_; - // audio TCP stream. - - ACE_SOCK_Connector video_connector_; - // video connector. - - ACE_SOCK_Connector audio_connector_; - // audio connector. + ACE_HANDLE audio_data_handle_; + // UDP socket for audio ACE_HANDLE command_handle_; // The fd for the UNIX command socket @@ -217,13 +264,16 @@ private: TAO_ORB_Manager orb_manager_; // the ORB manager - Video_Control_var video_control_; + Video_Control_ptr video_control_; // Video Control CORBA object AVStreams::MMDevice_var video_server_mmdevice_; // The video server multimedia device - Video_Client_MMDevice video_client_mmdevice_; + Video_Endpoint_Reactive_Strategy_A reactive_strategy_; + // Strategy for creating stream endpoints + + TAO_MMDevice video_client_mmdevice_; // The video client multimedia device TAO_StreamCtrl video_streamctrl_; diff --git a/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/Makefile b/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/Makefile index 1b821aace1f..e78b063306d 100644 --- a/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/Makefile +++ b/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/Makefile @@ -461,11 +461,15 @@ realclean: clean $(TAO_ROOT)/tao/Marshal.i \ $(TAO_ROOT)/tao/CDR.h \ $(TAO_ROOT)/tao/CDR.i \ + $(TAO_ROOT)/tao/PolicyC.h \ + $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/POA.h \ $(TAO_ROOT)/tao/POAC.h \ $(TAO_ROOT)/tao/POAC.i \ $(TAO_ROOT)/tao/Servant_Base.h \ $(TAO_ROOT)/tao/POAS.h \ + $(TAO_ROOT)/tao/PolicyS.h \ + $(TAO_ROOT)/tao/PolicyS.i \ $(TAO_ROOT)/tao/POAS.i \ $(TAO_ROOT)/tao/Object_Table.h \ $(TAO_ROOT)/tao/Connect.h \ @@ -492,6 +496,23 @@ realclean: clean $(ACE_ROOT)/ace/SOCK_Dgram.i \ $(TAO_ROOT)/orbsvcs/tests/AVStreams/mpeg/source/mpeg_shared/Audio_ControlC.h \ $(TAO_ROOT)/orbsvcs/tests/AVStreams/mpeg/source/mpeg_shared/Audio_ControlC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/AV/AVStreams_i.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosPropertyServiceS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosPropertyServiceC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosPropertyServiceC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosPropertyServiceS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/AVStreamsS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/AVStreamsC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/AVStreamsC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/AVStreamsS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Property/CosPropertyService_i.h \ + $(ACE_ROOT)/ace/Process.h \ + $(ACE_ROOT)/ace/Process.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/AV/Endpoint_Strategy.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Null_MediaCtrlS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Null_MediaCtrlC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Null_MediaCtrlC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Null_MediaCtrlS.i \ ctr.cpp \ $(TAO_ROOT)/orbsvcs/tests/AVStreams/mpeg/source/include/common.h \ newproto.h \ |