summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_server/Audio_Server.h
blob: 13d492ea4d36d1628eb1280558a6d244761c410d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
/* -*- C++ -*- */
//$Id$

#if !defined (_AUDIO_SERVER_H)
#define _AUDIO_SERVER_H

#include <sys/types.h>
#include <netdb.h>
#include <string.h>
#include <stdlib.h>

#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <arpa/inet.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <time.h>
#include <sys/time.h>
#include <stdio.h>
#include <errno.h>
#include <signal.h>
#include "include/common.h"
#include "mpeg_shared/fileio.h"
#include "mpeg_shared/routine.h"
#include "mpeg_shared/com.h"
#include "server_proto.h"

#include "ace/SOCK_CODgram.h"
#include "ace/SOCK_Stream.h"
#include "tao/TAO.h"
#include "mpeg_shared/Audio_ControlS.h"
#include "orbsvcs/CosNamingC.h"
#include "Globals.h"

class Audio_Sig_Handler 
  : public virtual ACE_Event_Handler
{
public:
  Audio_Sig_Handler (Audio_Global *audio_global);
  // Constructor.

  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
  Audio_Global *audio_global_;
};

class Audio_Data_Handler : public virtual ACE_Event_Handler
{
public:
  Audio_Data_Handler (ACE_HANDLE data_fd,
                      Audio_Global *audio_global);
                      
  // 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:
  ACE_HANDLE data_fd_;
  Audio_Global *audio_global_;
};

class Audio_Control_Handler : public virtual ACE_Event_Handler
{
public:
  Audio_Control_Handler (ACE_HANDLE fd,
                         Audio_Global *audio_global);
  // 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:
  ACE_HANDLE control_fd_;
  // The underlying TCP socket.
  Audio_Global *audio_global_;
  // Pointer to the global object.
};


class Audio_Server
{
public:
  Audio_Server (void);
  // Default constructor
  Audio_Server (int argc,
                char **argv,
                //ACE_SOCK_Stream& control,
               int rttag,
               int max_pkt_size);
  // Taking the control,data fd's and rttag.
  int init (int argc,
            char **argv,
            int rttag,
            int max_pkt_size,
            CORBA::Environment &env);
  // inits the Audio_Server
  int run (CORBA::Environment & env);
  // runs the loop.
  int set_peer (void);
  // sets the peer endpoint.
private:
  int parse_args (int argc,
                  char **argv);
  // Parse the arguments.

  int initialize_orb (int argc,
                      char **argv,
                      CORBA::Environment &env);
  TAO_ORB_Manager orb_manager_;
  // The ORB Manager.

  Audio_Global *audio_global_;
  // The globals object.

//   Audio_Control_Handler *control_handler_;
//   // The audio control handler

//   Audio_Data_Handler *data_handler_;
//   // The audio data i.e feedback handler.

//   Audio_Sig_Handler *sig_handler_;
//   // The signal handler.

//   ACE_SOCK_Stream control;
//   // The control stream.
//   ACE_SOCK_CODgram dgram_;
//   // The data socket.
};

// The stream endpoint
class Audio_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 /*_AUDIO_SERVER_H */