diff options
Diffstat (limited to 'TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_server/Video_Server.h')
-rw-r--r-- | TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_server/Video_Server.h | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_server/Video_Server.h b/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_server/Video_Server.h new file mode 100644 index 00000000000..82e501650c8 --- /dev/null +++ b/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_server/Video_Server.h @@ -0,0 +1,152 @@ +/* -*- C++ -*- */ +/* $Id$ */ + +/* Copyright (c) 1995 Oregon Graduate Institute of Science and Technology + * P.O.Box 91000-1000, Portland, OR 97291, USA; + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of O.G.I. not be used in advertising or + * publicity pertaining to distribution of the software without specific, + * written prior permission. O.G.I. makes no representations about the + * suitability of this software for any purpose. It is provided "as is" + * without express or implied warranty. + * + * O.G.I. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING + * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL + * O.G.I. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY + * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Author: Shanwei Cen + * Department of Computer Science and Engineering + * email: scen@cse.ogi.edu + */ + +#ifndef MPEG_VIDEO_SERVER_H +#define MPEG_VIDEO_SERVER_H + +#include "ace/Reactor.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "ace/Event_Handler.h" + +#include "tao/PortableServer/ORB_Manager.h" +#include "include/common.h" +#include "mpeg_shared/fileio.h" +#include "mpeg_shared/com.h" +#include "mpeg_shared/routine.h" +#include "mpeg_shared/sendpt.h" +#include "mpeg_shared/Video_ControlS.h" +#include "mpeg_server/server_proto.h" +#include "mpeg_server/Video_Control_State.h" +#include "mpeg_server/Globals.h" +#include "mpeg_server/Video_Control_i.h" +#include "orbsvcs/AV/AVStreams_i.h" + +class Video_Control_i; + +class Video_Sig_Handler + : public virtual ACE_Event_Handler +{ + // = TITLE + // Defines a video signal handler class which registers itself with the + // default ACE_Reactor::instance () . Handles the + // SIGALRM signal. + // + // = DESCRIPTION + // This class contains a pointer to a Video_Control_Handler + // instance and decides the signal action depending on its state. + // An object of this class is used to periodically send the video + // frames to the client using the Video_Timer_Global class. +public: + Video_Sig_Handler (); + + virtual ACE_HANDLE get_handle (void) const; + + int register_handler (void); + // this will register this sig_handler + // with the reactor for SIGALRM + + virtual int shutdown (ACE_HANDLE, + ACE_Reactor_Mask); + + virtual int handle_input (ACE_HANDLE); + + virtual int handle_signal (ACE_HANDLE signum, + siginfo_t * = 0, + ucontext_t* = 0); +private: + ACE_HANDLE handle_; + // my handle + + Video_Control_i *vci_; + // Pointer to the Video_Control_i for accessing + // the current state of the server. +}; + +class Video_Data_Handler : public virtual ACE_Event_Handler +{ + + // = TITLE + // Defines a event handler for video data using a datagram i.e UDP + // socket. + // + // = DESCRIPTION + // This takes a pointer to a Video_Control_Handler instance and + // reacts differently to the events based on the + // video_control_handler's state. +public: + Video_Data_Handler (); + // Constructor + + virtual int handle_input (ACE_HANDLE fd = ACE_INVALID_HANDLE); + // Called when data shows up. + + virtual ACE_HANDLE get_handle (void) const; + // Get the handle used by this event handler + +private: + Video_Control_i *vci_; + +}; + +// The stream endpoint +class Video_Server_StreamEndPoint : + public virtual TAO_Server_StreamEndPoint +{ +public: + virtual int handle_open (void) ; + // called when streamendpoint is instantiated + + virtual int handle_close (void) ; + // called when streamendpoint is being destructed + + virtual int handle_stop (const AVStreams::flowSpec &the_spec, + CORBA::Environment &env) ; + // Application needs to define this + + virtual int handle_start (const AVStreams::flowSpec &the_spec, + CORBA::Environment &env) ; + // Application needs to define this + + + virtual int handle_destroy (const AVStreams::flowSpec &the_spec, + CORBA::Environment &env) ; + // Application needs to define this + + virtual CORBA::Boolean handle_connection_requested (AVStreams::flowSpec &the_spec, + CORBA::Environment &env) ; + +private: + ACE_SOCK_CODgram dgram_; + +}; + +#endif /* MPEG_VIDEO_SERVER_H */ |