summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornaga <naga@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1998-04-15 18:44:04 +0000
committernaga <naga@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1998-04-15 18:44:04 +0000
commit48653e3a9db899cd4991bd09250b547c49834ac0 (patch)
tree4c62b1f8515700728a91fa979b2a5829db526905
parentc0dd15686abb5198793cdbab219d11d1980a5653 (diff)
downloadATCD-48653e3a9db899cd4991bd09250b547c49834ac0.tar.gz
*** empty log message ***
-rw-r--r--TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/Command_Handler.cpp34
-rw-r--r--TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/ab.cpp6
-rw-r--r--TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/ctr.cpp5
-rw-r--r--TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_server/Audio_Server.cpp635
-rw-r--r--TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_server/Audio_Server.h116
-rw-r--r--TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_server/Video_Control_i.h3
-rw-r--r--TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_shared/Audio_Control.idl41
-rw-r--r--TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_shared/Makefile366
-rw-r--r--TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_shared/com.cpp4
-rw-r--r--TAO/orbsvcs/tests/AVStreams/mpeg/source/server/Makefile207
-rw-r--r--TAO/orbsvcs/tests/AVStreams/mpeg/source/server/server.cpp97
-rw-r--r--TAO/orbsvcs/tests/AVStreams/mpeg/source/server/server.h11
12 files changed, 1415 insertions, 110 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 a66e8a76c03..0fbdfac524c 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
@@ -586,6 +586,29 @@ Command_Handler::stat_stream (CORBA::Char_out ch,
CORBA::Boolean
Command_Handler::close (void)
{
+
+ if (audioSocket >=0)
+ {
+ unsigned char tmp = CmdCLOSE;
+ int result =
+ this->stop_playing();
+ if (result < 0)
+ return result;
+
+ if (audioSocket >= 0)
+ {
+ if (ABpid > 0) {
+ kill(ABpid, SIGUSR1);
+ ABpid = -1;
+ }
+ usleep(10000);
+ ACE_DEBUG ((LM_DEBUG, "(%P|%t) Reached line %d in %s\n", __LINE__, __FILE__));
+ AudioWrite(&tmp, 1);
+ ComCloseConn(audioSocket);
+ audioSocket = -1;
+ }
+ }
+
if (this->video_control_.in () == 0)
return CORBA::B_TRUE;
TAO_TRY
@@ -796,9 +819,9 @@ Command_Handler::play (int auto_exp,
unsigned int ats;
int cmdstarted = 0;
int stuffsamples = 0;
- /*
+
fprintf (stderr, "CTR: PLAY . . .\n");
- */
+
this->stop_playing ();
if (!shared->live && !shared->config.rt && videoSocket >= 0) {
@@ -859,7 +882,9 @@ Command_Handler::play (int auto_exp,
tmp = CmdPLAY;
AudioWrite (&tmp, 1);
AudioWrite (&para, sizeof (para));
+ // ACE_DEBUG ((LM_DEBUG,"(%P|%t)Reached line %d in %s",__LINE__,__FILE__));
read_int (audioSocket, (int *)&ats);
+ // ACE_DEBUG ((LM_DEBUG,"(%P|%t)Reached line %d in %s",__LINE__,__FILE__));
}
if (videoSocket >= 0 && shared->nextFrame < shared->totalFrames)
@@ -933,7 +958,7 @@ Command_Handler::play (int auto_exp,
this->video_control_->play (para,
vts,
env);
-
+ ACE_DEBUG ((LM_DEBUG,"(%P|%t)Reached line %d in %s",__LINE__,__FILE__));
if (shared->config.qosEffective) {
/*
fprintf (stderr, "CTR start FeedBack with init frameRateLimit %lf\n",
@@ -1204,6 +1229,7 @@ Command_Handler::stop_playing (void)
if (precmd == CmdFF || precmd == CmdFB || precmd == CmdPLAY)
{
+ ACE_DEBUG ((LM_DEBUG, "(%P|%t) Reached line %d in %s\n", __LINE__, __FILE__));
unsigned char tmp = CmdSTOP;
NewCmd(CmdSTOP);
@@ -1509,7 +1535,7 @@ Client_Sig_Handler::handle_signal (int signum, siginfo_t *, ucontext_t *)
ACE_DEBUG ((LM_DEBUG,
"(%t) %S: not handled, returning to program\n",
signum));
- break;
+ return 0;
}
TimerProcessing ();
return 0;
diff --git a/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/ab.cpp b/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/ab.cpp
index c2829df769c..f1d927aaf49 100644
--- a/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/ab.cpp
+++ b/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/ab.cpp
@@ -222,11 +222,14 @@ void ABprocess(int dataSocket)
int bytes;
if (conn_tag >= 0) {
bytes = sizeof(*packet);
+
+
len = wait_read_bytes(dataSocket, (char *)packet, bytes);
if (exit_tag) exit_on_kill();
}
else { /* discard mode packet stream, read all bytes */
bytes = PACKET_SIZE;
+ //ACE_DEBUG ((LM_DEBUG,"(%P|%t) ABprocess: waiting for %d sized packet\n",bytes));
len = read(dataSocket, (char *)packet, bytes);
if (exit_tag) exit_on_kill();
if (len == -1) {
@@ -251,7 +254,8 @@ void ABprocess(int dataSocket)
packet->dataBytes = ntohl(packet->dataBytes);
#endif
- if (packet->dataBytes <= 0) {
+ // ACE_DEBUG ((LM_DEBUG,"(%P|%t) ABprocess: Received %d sized packet\n",len));
+ if (packet->dataBytes <= 0) {
fprintf(stderr, "AB Error: pkt->dataBytes %d, len %d\n",
packet->dataBytes,
len);
diff --git a/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/ctr.cpp b/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/ctr.cpp
index 33412c67fa9..507cd8d9fba 100644
--- a/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/ctr.cpp
+++ b/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/ctr.cpp
@@ -2814,10 +2814,11 @@ static void on_exit_routine(void)
ComCloseConn(audioSocket);
audioSocket = -1;
}
+
if (videoSocket >= 0)
{
- write(videoSocket, &tmp, 1);
- ComCloseConn(videoSocket);
+ // write(videoSocket, &tmp, 1);
+ // ComCloseConn(videoSocket);
videoSocket = -1;
if (VBpid > 0) {
kill(VBpid, SIGUSR1);
diff --git a/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_server/Audio_Server.cpp b/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_server/Audio_Server.cpp
index 4df0a7e095d..8c963ea975b 100644
--- a/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_server/Audio_Server.cpp
+++ b/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_server/Audio_Server.cpp
@@ -2,7 +2,12 @@
#include "Audio_Server.h"
Audio_Global::Audio_Global (void)
- :bytes_sent (0),
+ :state (AUDIO_WAITING),
+ addSamples (0),
+ nextTime (0),
+ upp (0),
+ delta_sps (0),
+ bytes_sent (0),
start_time (0),
conn_tag (0),
serviceSocket (-1),
@@ -176,6 +181,7 @@ Audio_Global::INITaudio(void)
int
Audio_Global::send_packet(int firstSample, int samples)
{
+ // ACE_DEBUG ((LM_DEBUG,"(%P|%t) send_packet called\n"));
long offset = firstSample * audioPara.bytesPerSample;
int size = samples * audioPara.bytesPerSample;
char * buf = (char *)pktbuf + sizeof(*pktbuf);
@@ -290,6 +296,7 @@ Audio_Global::ResendPacket(int firstsample, int samples)
}
}
+#if 0
int
Audio_Global::PLAYaudio(void)
{
@@ -558,6 +565,105 @@ Audio_Global::PLAYaudio(void)
}
}
}
+#endif
+
+// our version of play audio.
+int
+Audio_Global::play_audio(void)
+{
+ int result;
+
+ ACE_DEBUG ((LM_DEBUG,"(%P|%t) play_audio () called \n"));
+
+ {
+ PLAYaudioPara para;
+ result = CmdRead((char *)&para, sizeof(para));
+ if (result != 0)
+ return result;
+#ifdef NeedByteOrderConversion
+ para.sn = ntohl(para.sn);
+ para.nextSample = ntohl(para.nextSample);
+ para.samplesPerSecond = ntohl(para.samplesPerSecond);
+ para.samplesPerPacket = ntohl(para.samplesPerPacket);
+ para.ABsamples = ntohl(para.ABsamples);
+ para.spslimit = ntohl(para.spslimit);
+#endif
+ nextsample = para.nextSample;
+ cmdsn = para.sn;
+ sps = para.samplesPerSecond;
+ spslimit = para.spslimit;
+ spp = para.samplesPerPacket;
+ addSamples = para.ABsamples / 2;
+ if (spp * audioPara.bytesPerSample > databuf_size) {
+ spp = databuf_size / audioPara.bytesPerSample;
+ }
+ /*
+ SFprintf(stderr, "AS got CmdPLAY: sps %d\n", sps);
+ */
+ }
+ /*
+ fprintf(stderr, "AS: nextSampe=%d for PLAY.\n", para.nextSample);
+ */
+
+ upp = (int)(1000000.0 / ((double)sps / (double)spp));
+ nextTime = get_usec();
+
+ CmdWrite((char *)&nextTime, sizeof(int));
+ if (live_source) {
+ StartPlayLiveAudio();
+ }
+ this->send_audio ();
+}
+
+int
+Audio_Global::send_audio (void)
+{
+ static int packets = 0;
+ static int hasdata = 1;
+ static struct timeval tval;
+ unsigned curTime = get_usec();
+
+ if (hasdata) {
+ if (addSamples < - spp) { /* slow down by not sending packets */
+ /* ACE_DEBUG ((LM_DEBUG,"(%P|%t) slow down by not sending\n")); */
+ nextTime += upp;
+ addSamples += spp;
+ }
+ else {
+ /* ACE_DEBUG ((LM_DEBUG,"(%P|%t) sending."
+ "nexttime = %d, curTime = %d, hasdata = %d\n",
+ nextTime, curTime, hasdata)); */
+ int need_sleep = 0;
+ while ( (nextTime <= curTime) && (hasdata)) {
+ if (need_sleep) usleep(5000);
+ hasdata = SendPacket();
+ need_sleep = 1;
+ packets ++;
+ nextTime += upp;
+ if (addSamples > 0 && packets % SPEEDUP_SCALE == 0) {
+ addSamples -= spp;
+ usleep(5000);
+ hasdata = SendPacket();
+ packets ++;
+ }
+ }
+ }
+ }
+ curTime = nextTime - curTime;
+ if (curTime > 5000000) curTime = 5000000; /* limit on 5 second weit time
+ in case error happens */
+ tval.tv_sec = curTime / 1000000;
+ tval.tv_usec = curTime % 1000000;
+
+ if (hasdata)
+ {
+ // schedule a sigalrm to simulate select timeout.
+ ACE_Time_Value tv (tval);
+ ACE_OS::ualarm (tv,0);
+ }
+ return 0;
+}
+
void
Audio_Global::on_exit_routine(void)
@@ -588,30 +694,417 @@ Audio_Global::on_exit_routine(void)
ComCloseConn(serviceSocket);
ComCloseConn(audioSocket);
}
+//----------------------------------------
+// Audio_Sig_Handler methods.
+
+Audio_Sig_Handler::Audio_Sig_Handler (Audio_Global *audio_global)
+ :audio_global_ (audio_global)
+{
+}
+
+int
+Audio_Sig_Handler::register_handler (void)
+{
+ // Assign the Sig_Handler a dummy I/O descriptor. Note that even
+ // though we open this file "Write Only" we still need to use the
+ // ACE_Event_Handler::NULL_MASK when registering this with the
+ // ACE_Reactor (see below).
+ this->handle_ = ACE_OS::open (ACE_DEV_NULL, O_WRONLY);
+ ACE_ASSERT (this->handle_ != -1);
+
+ // Register signal handler object. Note that NULL_MASK is used to
+ // keep the ACE_Reactor from calling us back on the "/dev/null"
+ // descriptor.
+ if (ACE_Reactor::instance ()->register_handler
+ (this, ACE_Event_Handler::NULL_MASK) == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "%p\n",
+ "register_handler"),
+ -1);
+
+ // Create a sigset_t corresponding to the signals we want to catch.
+ ACE_Sig_Set sig_set;
+
+ // sig_set.sig_add (SIGINT);
+ // sig_set.sig_add (SIGQUIT);
+ sig_set.sig_add (SIGALRM);
+
+ // Register the signal handler object to catch the signals.
+ if (ACE_Reactor::instance ()->register_handler (sig_set,
+ this) == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "%p\n",
+ "register_handler"),
+ -1);
+ return 0;
+}
+// Called by the ACE_Reactor to extract the fd.
+
+ACE_HANDLE
+Audio_Sig_Handler::get_handle (void) const
+{
+ return this->handle_;
+}
+
+int
+Audio_Sig_Handler::handle_input (ACE_HANDLE)
+{
+ ACE_DEBUG ((LM_DEBUG, "(%t) handling asynchonrous input...\n"));
+ return 0;
+}
+
+int
+Audio_Sig_Handler::shutdown (ACE_HANDLE, ACE_Reactor_Mask)
+{
+ ACE_DEBUG ((LM_DEBUG, "(%t) closing down Sig_Handler...\n"));
+ return 0;
+}
+
+// This method handles all the signals that are being caught by this
+// object. In our simple example, we are simply catching SIGALRM,
+// SIGINT, and SIGQUIT. Anything else is logged and ignored.
+//
+// There are several advantages to using this approach. First,
+// the behavior triggered by the signal is handled in the main event
+// loop, rather than in the signal handler. Second, the ACE_Reactor's
+// signal handling mechanism eliminates the need to use global signal
+// handler functions and data.
+
+int
+Audio_Sig_Handler::handle_signal (int signum, siginfo_t *, ucontext_t *)
+{
+ // ACE_DEBUG ((LM_DEBUG, "(%t) received signal %S\n", signum));
+
+ switch (signum)
+ {
+ case SIGALRM:
+ if (this->audio_global_->state == Audio_Global::AUDIO_PLAY)
+ this->audio_global_->send_audio ();// honor the signal only if you're in play state.
+ break;
+ default:
+ ACE_DEBUG ((LM_DEBUG,
+ "(%t) %S: not handled, returning to program\n",
+ signum));
+ break;
+ }
+ // ACE_DEBUG ((LM_DEBUG,"returning from handle_signal"));
+ return 0;
+}
+
+//----------------------------------------------
+// Audio_Data_Handler methods
+
+Audio_Data_Handler::Audio_Data_Handler (ACE_HANDLE data_fd,
+ Audio_Global *audio_global)
+ :data_fd_ (data_fd),
+ audio_global_ (audio_global)
+{
+}
+
+ACE_HANDLE
+Audio_Data_Handler::get_handle (void) const
+{
+ return this->data_fd_;
+}
+
+int
+Audio_Data_Handler::handle_input (ACE_HANDLE fd)
+{
+ ACE_DEBUG ((LM_DEBUG,"(%P|%t)Audio_Data_Handler::handle_input ()\n"));
+ int bytes, len;
+ for (;;) {
+ if (this->audio_global_->conn_tag >= 0) {
+ len = wait_read_bytes(this->audio_global_->audioSocket, (char *)this->audio_global_->fbpara, sizeof(*(this->audio_global_->fbpara)));
+ if (len == 0) return(1); /* connection broken */
+ else if (len < 0) { /* unexpected error */
+ perror("AS read1 FB");
+ return(-1);
+ }
+ }
+ else { /* discard mode packet stream, read the whole packet */
+ len = ::read(this->audio_global_->audioSocket, (char *)this->audio_global_->fbpara, FBBUF_SIZE);
+ }
+ if (len == -1) {
+ if (errno == EINTR) continue; /* interrupt */
+ else {
+ if (errno != EPIPE && errno != ECONNRESET) perror("AS failed to read() fbmsg header");
+ break;
+ }
+ }
+ break;
+ }
+ if (len < sizeof(*this->audio_global_->fbpara)) {
+ if (len > 0) fprintf(stderr,
+ "AS warn read() len %dB < sizeof(*this->audio_global_->fbpara) %dB\n",
+ len, sizeof(*this->audio_global_->fbpara));
+ // continue;
+ // simulate the continue ??
+ this->audio_global_->send_audio ();
+ }
+#ifdef NeedByteOrderConversion
+ this->audio_global_->fbpara->type = ntohl(this->audio_global_->fbpara->type);
+#endif
+ bytes = (this->audio_global_->fbpara->type > 0) ?
+ sizeof(APdescriptor) * (this->audio_global_->fbpara->type - 1) :
+ 0;
+ if (bytes > 0) {
+ if (this->audio_global_->conn_tag >= 0) { /* not discard mode packet stream,
+ read the rest of packet */
+ len = wait_read_bytes(this->audio_global_->audioSocket,
+ ((char *)this->audio_global_->fbpara) + sizeof(*this->audio_global_->fbpara),
+ bytes);
+ if (len == 0) return(1); /* connection broken */
+ else if (len < 0) { /* unexpected error */
+ perror("AS read2 FB");
+ return(-1);
+ }
+ len += sizeof(*this->audio_global_->fbpara);
+ }
+ }
+ bytes += sizeof(*this->audio_global_->fbpara);
+ if (len < bytes) {
+ if (len > 0) fprintf(stderr,
+ "AS only read partial FBpacket, %dB out of %dB.\n",
+ len, bytes);
+ // continue;
+ this->audio_global_->send_audio ();
+ }
+ if (this->audio_global_->live_source) { /* ignore all feedback messags for live source */
+ // continue;
+ this->audio_global_->send_audio ();
+ }
+
+#ifdef NeedByteOrderConversion
+ this->audio_global_->fbpara->cmdsn = ntohl(this->audio_global_->fbpara->cmdsn);
+#endif
+ if (len != sizeof(*this->audio_global_->fbpara) +
+ (this->audio_global_->fbpara->type ? (this->audio_global_->fbpara->type -1) * sizeof(APdescriptor) : 0)) {
+ /* unknown message, discard */
+ SFprintf(stderr, "AS Unkown fb msg: len = %d, type = %d\n",
+ len, this->audio_global_->fbpara->type);
+ // continue;
+ this->audio_global_->send_audio ();
+ }
+ if (this->audio_global_->fbpara->cmdsn != this->audio_global_->cmdsn) { /* discard the outdated message */
+ // continue;
+ this->audio_global_->send_audio ();
+ }
+#ifdef NeedByteOrderConversion
+ {
+ int i, * ptr = (int *)this->audio_global_->fbpara + 2;
+ for (i = 0; i < (len >> 2) - 2; i++) *ptr = ntohl(*ptr);
+ }
+#endif
+ if (this->audio_global_->fbpara->type == 0) { /* feedback message */
+ /*
+ SFprintf(stderr, "AS got fbmsg: addsamples %d, addsps %d\n",
+ this->audio_global_->fbpara->data.fb.addSamples, this->audio_global_->fbpara->data.fb.addsps);
+ */
+ this->audio_global_->addSamples += this->audio_global_->fbpara->data.fb.addSamples;
+ if (this->audio_global_->fbpara->data.fb.addsps) {
+ this->audio_global_->delta_sps += this->audio_global_->fbpara->data.fb.addsps;
+ this->audio_global_->upp = (int)(1000000.0 / ((double)(this->audio_global_->sps + this->audio_global_->delta_sps) / (double)this->audio_global_->spp));
+ }
+ }
+ else { /* resend requests */
+ APdescriptor * req = &(this->audio_global_->fbpara->data.ap);
+ int i;
+ /*
+ SFprintf(stderr, "AS got %d resend reqs\n", this->audio_global_->fbpara->type);
+ */
+ for (i = 0; i < this->audio_global_->fbpara->type; i ++) {
+ this->audio_global_->ResendPacket(req->firstSample, req->samples);
+ req ++;
+ }
+ }
+ // send a audio frame.??
+ this->audio_global_->send_audio ();
+ return 0;
+}
+
+// ---------------------------------------------
+// Audio_Control_Handler methods
+
+Audio_Control_Handler::Audio_Control_Handler (ACE_HANDLE control_fd,
+ Audio_Global *audio_global)
+ :control_fd_ (control_fd),
+ audio_global_ (audio_global)
+{
+}
+
+ACE_HANDLE
+Audio_Control_Handler::get_handle (void) const
+{
+ return this->audio_global_->serviceSocket;
+}
+
+int
+Audio_Control_Handler::handle_input (ACE_HANDLE fd)
+{
+ ACE_DEBUG ((LM_DEBUG,"(%P|%t)Audio_Control_Handler::handle_input ()\n"));
+ int result;
+ switch (this->audio_global_->state)
+ {
+ case Audio_Global::AUDIO_WAITING:
+ result = this->audio_global_->CmdRead((char *)&(this->audio_global_->cmd), 1);
+ if (result != 0)
+ return result;
+ ACE_DEBUG ((LM_DEBUG,"(%P|%t)command %d received",this->audio_global_->cmd));
+ switch (this->audio_global_->cmd)
+ {
+ case CmdPLAY:
+ this->audio_global_->state = Audio_Global::AUDIO_PLAY;
+ result = this->audio_global_->play_audio();
+ if (result != 0)
+ return result;
+ break;
+ case CmdCLOSE:
+ ACE_DEBUG ((LM_DEBUG,"(%P|%t) A session closed\n"));
+ ACE_Reactor::instance ()->end_event_loop ();
+ return(0);
+ break;
+ default:
+ fprintf(stderr, "audio channel command %d not recoganizeable\n",
+ this->audio_global_->cmd);
+ break;
+ }
+ break;
+ case Audio_Global::AUDIO_PLAY:
+ unsigned char tmp;
+ result = this->audio_global_->CmdRead((char *)&tmp, 1);
+ if (result != 0)
+ return result;
+ switch (tmp)
+ {
+ case CmdSPEED:
+ {
+ SPEEDaudioPara para;
+ result = this->audio_global_->CmdRead((char *)&para, sizeof(para));
+ if (result != 0)
+ return result;
+#ifdef NeedByteOrderConversion
+ para.sn = ntohl(para.sn);
+ para.samplesPerSecond = ntohl(para.samplesPerSecond);
+ para.samplesPerPacket = ntohl(para.samplesPerPacket);
+ para.spslimit = ntohl(para.spslimit);
+#endif
+ this->audio_global_->sps = para.samplesPerSecond;
+ this->audio_global_->spslimit = para.spslimit;
+ this->audio_global_->spp = para.samplesPerPacket;
+ if (this->audio_global_->spp * this->audio_global_->audioPara.bytesPerSample > this->audio_global_->databuf_size) {
+ this->audio_global_->spp = this->audio_global_->databuf_size / this->audio_global_->audioPara.bytesPerSample;
+ }
+ this->audio_global_->delta_sps = 0; /* reset compensation value */
+ this->audio_global_->upp = (int)(1000000.0 / ((double)(this->audio_global_->sps) / (double)(this->audio_global_->spp)));
+ /*
+ SFprintf(stderr, "AS got CmdSPEED: sps %d\n", sps);
+ */
+ }
+ break;
+ case CmdSTOP:
+ {
+ int val;
+ this->audio_global_->cmd = tmp;
+
+ fprintf(stderr, "AS: CmdSTOP. . .\n");
+
+ result = this->audio_global_->CmdRead((char *)&val, sizeof(int));
+ if (result != 0)
+ return result;
+ /*
+ CmdWrite(AUDIO_STOP_PATTERN, strlen(AUDIO_STOP_PATTERN));
+ */
+ if (this->audio_global_->live_source) {
+ StopPlayLiveAudio();
+ }
+ this->audio_global_->state = Audio_Global::AUDIO_WAITING;
+ return 0;
+ }
+ case CmdCLOSE:
+ if (this->audio_global_->live_source) {
+ StopPlayLiveAudio();
+ }
+ // Make sure you remove the timer handler if you end the
+ // event loop.
+
+ ACE_Reactor::instance ()->end_event_loop ();
+ return(1); /* The whole AS session terminates */
+ default:
+ if (this->audio_global_->live_source) {
+ StopPlayLiveAudio();
+ }
+ fprintf(stderr, "AS error: cmd=%d while expects STOP/SPEED/CLOSE.\n", tmp);
+ return(-1);
+ }
+ this->audio_global_->send_audio ();
+ break;
+ default:
+ ACE_DEBUG ((LM_DEBUG,"(%P|%t)Audio_Control_Handler::handle_input () invalid state\n"));
+ break;
+ }
+ return 0;
+}
+
+
+//-------------------------------------------------
+// Audio Server methods.
Audio_Server::Audio_Server (void)
+ :audio_global_ (0)
{
}
-Audio_Server::Audio_Server (ACE_SOCK_Stream& control,
- int rttag,
- int max_pkt_size)
+Audio_Server::Audio_Server (int argc,
+ char **argv,
+ // ACE_SOCK_Stream& control,
+ int rttag,
+ int max_pkt_size)
+ :audio_global_ (0)
{
- this->init (control,
+ this->init (argc,
+ argv,
+ // control,
rttag,
max_pkt_size);
}
int
-Audio_Server::init (ACE_SOCK_Stream& control,
- int rttag,
- int max_pkt_size)
+Audio_Server::init (int argc,
+ char **argv,
+ // ACE_SOCK_Stream& control,
+ int rttag,
+ int max_pkt_size)
{
int result;
int junk;
u_short port;
ACE_UINT32 ip;
+ TAO_TRY
+ {
+ this->orb_manager_.init (argc,argv,TAO_TRY_ENV);
+ TAO_CHECK_ENV;
+ }
+ TAO_CATCHANY
+ {
+ TAO_TRY_ENV.print_exception ("Audio_Server::init ()");
+ return -1;
+ }
+ TAO_ENDTRY;
+
+ // Allocate memory for the audio globals.
+
+ ACE_NEW_RETURN (this->audio_global_,
+ Audio_Global,
+ -1);
+
+ if (this->parse_args (argc,
+ argv) == -1)
+ return -1;
+
+
+ control.set_handle (this->audio_global_->serviceSocket);
+
ACE_INET_Addr server_data_addr;
ACE_INET_Addr client_data_addr;
@@ -687,40 +1180,62 @@ Audio_Server::init (ACE_SOCK_Stream& control,
// -1);
// end of handshaking.
- this->audio_global_.serviceSocket = control.get_handle ();
- this->audio_global_.audioSocket = this->dgram_.get_handle ();
- this->audio_global_.conn_tag = max_pkt_size;
+
+
+
+ ACE_DEBUG ((LM_DEBUG,"%s,%d\n",__FILE__,__LINE__));
+ this->audio_global_->serviceSocket = control.get_handle ();
+ ACE_DEBUG ((LM_DEBUG,"(%P|%t)serviceSocket = %d",this->audio_global_->serviceSocket));
+ this->audio_global_->audioSocket = this->dgram_.get_handle ();
+ this->audio_global_->conn_tag = max_pkt_size;
+
+ // Create the handlers
+ ACE_NEW_RETURN (this->control_handler_,
+ Audio_Control_Handler (this->audio_global_->serviceSocket,
+ this->audio_global_),
+ -1);
+
+ ACE_NEW_RETURN (this->data_handler_,
+ Audio_Data_Handler (this->dgram_.get_handle (),
+ this->audio_global_),
+ -1);
+
+ ACE_NEW_RETURN (this->sig_handler_,
+ Audio_Sig_Handler (this->audio_global_),
+ -1);
+
if (max_pkt_size < 0) max_pkt_size = -max_pkt_size;
else if (max_pkt_size == 0) max_pkt_size = 1024 * 1024;
- this->audio_global_.start_time = time(NULL);
+ this->audio_global_->start_time = time(NULL);
// atexit(on_exit_routine);
- result = this->audio_global_.INITaudio ();
-
+ result = this->audio_global_->INITaudio ();
+ ACE_DEBUG ((LM_DEBUG,"%s,%d\n",__FILE__,__LINE__));
if (result != 0)
ACE_ERROR_RETURN ((LM_ERROR,
"(%P|%t) Audio_Server: "),
result);
- this->audio_global_.fbpara = (AudioFeedBackPara *)malloc(FBBUF_SIZE);
- if (this->audio_global_.fbpara == NULL) {
+ this->audio_global_->fbpara = (AudioFeedBackPara *)malloc(FBBUF_SIZE);
+ if (this->audio_global_->fbpara == NULL) {
perror("AS failed to allocate mem for fbpara");
return (-1);
}
- this->audio_global_.databuf_size = max_pkt_size - sizeof(AudioPacket);
- if (this->audio_global_.databuf_size > DATABUF_SIZE)
- this->audio_global_.databuf_size = DATABUF_SIZE;
+ this->audio_global_->databuf_size = max_pkt_size - sizeof(AudioPacket);
+ if (this->audio_global_->databuf_size > DATABUF_SIZE)
+ this->audio_global_->databuf_size = DATABUF_SIZE;
- this->audio_global_.pktbuf = (AudioPacket *)malloc(sizeof(AudioPacket) +
- this->audio_global_.databuf_size);
- if (this->audio_global_.pktbuf == NULL) {
+ this->audio_global_->pktbuf = (AudioPacket *)malloc(sizeof(AudioPacket) +
+ this->audio_global_->databuf_size);
+ if (this->audio_global_->pktbuf == NULL) {
perror("AS failed to allocate mem for pktbuf");
return(-1);
}
+ ACE_DEBUG ((LM_DEBUG,"%s,%d\n",__FILE__,__LINE__));
return 0;
}
@@ -729,22 +1244,89 @@ Audio_Server::set_peer (void)
{
return 0;
}
+
+int
+Audio_Server::parse_args (int argc,
+ char **argv)
+{
+ ACE_Get_Opt get_opts (argc,argv,"f:");
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'f':
+ ACE_DEBUG ((LM_DEBUG,"Received control fd %d",ACE_OS::atoi (get_opts.optarg)));
+ this->audio_global_->serviceSocket = ACE_OS::atoi (get_opts.optarg);
+ break;
+ case '?':
+ ACE_ERROR_RETURN ((LM_ERROR,"(%P|%t)Unknown option passed to Audio_Server\n"),-1);
+ break;
+ }
+ return 0;
+}
+
int
Audio_Server::run (void)
{
+ ACE_DEBUG ((LM_DEBUG,"%s,%d\n",__FILE__,__LINE__));
+ // Register the handlers with the TAO reactor.
+
+ if (ACE_Reactor::instance ()->register_handler (this->control_handler_,
+ ACE_Event_Handler::READ_MASK) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%P|%t)Audio_Server::run () failed to register control handler\n"),
+ -1);
+ }
+ ACE_DEBUG ((LM_DEBUG,"%s,%d\n",__FILE__,__LINE__));
+ if (ACE_Reactor::instance ()->register_handler (this->data_handler_,
+ ACE_Event_Handler::READ_MASK) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%P|%t)Audio_Server::run () failed to register data handler\n"),
+ -1);
+ }
+ ACE_DEBUG ((LM_DEBUG,"%s,%d\n",__FILE__,__LINE__));
+ if (this->sig_handler_->register_handler () == -1)
+ {
+
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%P|%t)Audio_Server::run () failed to register data handler\n"),
+ -1);
+ }
+ if (ACE_Reactor::instance ()->handler (this->audio_global_->serviceSocket,
+ ACE_Event_Handler::READ_MASK) == -1)
+
+ ACE_ERROR_RETURN ((LM_ERROR,"(%P|%t)handler for serviceSocket not registered\n"),-1);
+ else
+ ACE_DEBUG ((LM_DEBUG,"Control handler registered\n"));
+ // Set the global state of the Audio_Server to be in WAITING state.
+ ACE_DEBUG ((LM_DEBUG,"%s,%d\n",__FILE__,__LINE__));
+ this->audio_global_->state = Audio_Global::AUDIO_WAITING;
+
+ // run the reactor event loop.
+ ACE_Reactor::instance ()->run_event_loop ();
+
+ ACE_DEBUG ((LM_DEBUG,"(%P|%t) Audio_Server::run,reactor came out of event loop \n"));
+
+ return 0;
+
+#if 0
+ // unused code.
int result;
for (;;)
{
/*
fprintf(stderr, "AS: waiting for a new command...\n");
*/
- result = this->audio_global_.CmdRead((char *)&(this->audio_global_.cmd), 1);
+ result = this->audio_global_->CmdRead((char *)&(this->audio_global_->cmd), 1);
if (result != 0)
return result;
- switch (this->audio_global_.cmd)
+ switch (this->audio_global_->cmd)
{
case CmdPLAY:
- result = this->audio_global_.PLAYaudio();
+ result = this->audio_global_->PLAYaudio();
if (result != 0)
return result;
break;
@@ -756,8 +1338,9 @@ Audio_Server::run (void)
break;
default:
fprintf(stderr, "audio channel command %d not recoganizeable\n",
- this->audio_global_.cmd);
+ this->audio_global_->cmd);
break;
}
}
+#endif
}
diff --git a/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_server/Audio_Server.h b/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_server/Audio_Server.h
index b8fb4c6e1fd..bf5c8329457 100644
--- a/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_server/Audio_Server.h
+++ b/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_server/Audio_Server.h
@@ -29,6 +29,7 @@
#include "ace/SOCK_CODgram.h"
#include "ace/SOCK_Stream.h"
+#include "tao/TAO.h"
#define DATABUF_SIZE 500
@@ -50,9 +51,23 @@
int SendPacket(void);
void ResendPacket(int firstsample, int samples);
int PLAYaudio(void);
+ int play_audio (void);
+ int send_audio (void);
void on_exit_routine(void);
public:
+
+ enum audio_state {AUDIO_WAITING = 0,AUDIO_PLAY =1};
+
+ audio_state state;
+ // The state of the audio server.
+
+ int addSamples;
+ unsigned nextTime;
+ int upp; /* micro-seconds per packet */
+ int delta_sps ;
+ // The members previously in PLAY audio.
+
int bytes_sent ;
time_t start_time;
@@ -79,16 +94,87 @@
AudioFeedBackPara * fbpara ;
};
+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 (ACE_SOCK_Stream& control,
+ 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 (ACE_SOCK_Stream& control,
+ int init (int argc,
+ char **argv,
+ // ACE_SOCK_Stream& control,
int rttag,
int max_pkt_size);
// inits the Audio_Server
@@ -97,7 +183,29 @@ public:
int set_peer (void);
// sets the peer endpoint.
private:
- Audio_Global audio_global_;
+ int parse_args (int argc,
+ char **argv);
+ // Parse the arguments.
+
+ 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.
};
-#endif
+
+#endif /*_AUDIO_SERVER_H */
diff --git a/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_server/Video_Control_i.h b/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_server/Video_Control_i.h
index b7cc53ebaaf..592ce66fd6f 100644
--- a/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_server/Video_Control_i.h
+++ b/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_server/Video_Control_i.h
@@ -78,9 +78,6 @@ protected:
ACE_Reactor *reactor_;
// The Reactor
- TAO_ORB_Manager *orb_manager_;
- // The ORB manager
-
Video_Control_State *state_;
// State pattern - pointer to abstract State object
diff --git a/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_shared/Audio_Control.idl b/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_shared/Audio_Control.idl
index 1056fddbcfb..7d83d9abefe 100644
--- a/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_shared/Audio_Control.idl
+++ b/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_shared/Audio_Control.idl
@@ -5,37 +5,46 @@
interface Audio_Control
{
+ struct AudioParameter
+ {
+ short encodeType;
+ short channels;
+ short samplesPerSecond;
+ short bytesPerSample;
+ };
+
+
/* CmdINITaudio parameter of fixed structure of 3 integers and a AudioPara,
replys with CmdINITaudio followed by reply or CmdFAIL followed by a string */
struct INITaudioPara
{
- int sn;
- int version;
+ short sn;
+ short version;
AudioParameter para;
- int nameLength;
+ short nameLength;
sequence <char> audiofile;
/* char audioFile[] */
};
struct INITaudioReply
{
- int live;
- int format;
+ short live;
+ short format;
AudioParameter para;
- int totalSamples;
+ short totalSamples;
};
/* CmdPLAY parameter */
struct PLAYPara
{
- int sn;
- int nextSample;
- int samplesPerSecond; /* audio playback speed */
- int samplesPerPacket; /* Number of samples in a packet */
- int ABsamples; /* size of client VB buffer in samples */
- int spslimit; /* QoS parameter: sps supported by the audio channel */
+ short sn;
+ short nextSample;
+ short samplesPerSecond; /* audio playback speed */
+ short samplesPerPacket; /* Number of samples in a packet */
+ short ABsamples; /* size of client VB buffer in samples */
+ short spslimit; /* QoS parameter: sps supported by the audio channel */
};
/* STOP followed only by SN */
@@ -43,10 +52,10 @@ interface Audio_Control
/* CmdSPEED parameter */
struct SPEEDPara
{
- int sn;
- int samplesPerSecond;
- int samplesPerPacket; /* Number of samples in a packet */
- int spslimit;
+ short sn;
+ short samplesPerSecond;
+ short samplesPerPacket; /* Number of samples in a packet */
+ short spslimit;
};
boolean init_audio (in INITaudioPara para,
diff --git a/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_shared/Makefile b/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_shared/Makefile
index e756c22337f..469c7848f6b 100644
--- a/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_shared/Makefile
+++ b/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_shared/Makefile
@@ -19,7 +19,7 @@ LSRC = $(addsuffix .cpp,$(FILES))
#TAO_IDLFLAGS = -Wb,export_macro=TAO_ORBSVCS_Export -Wb,export_include=orbsvcs_export.h
-IDL_FILES = Video_ControlS Video_ControlC
+IDL_FILES = Video_ControlS Video_ControlC Audio_ControlS Audio_ControlC
FILES += com fileio filters routine sendpt
@@ -52,7 +52,7 @@ include $(ACE_ROOT)/include/makeinclude/rules.local.GNU
CPPFLAGS += -I$(TAO_ROOT) -I$(TAO_ROOT)/tao/compat -I$(TAO_ROOT)/orbsvcs $(TSS_ORB_FLAG)#-H
CPPFLAGS += -DSH_MEM -DNDEBUG
-.PRECIOUS: Video_ControlS.cpp Video_ControlC.cpp
+.PRECIOUS: Video_ControlS.cpp Video_ControlC.cpp Audio_ControlS.cpp Audio_ControlC.cpp
idl_stubs: $(addsuffix .h, $(IDL_FILES))
@@ -78,7 +78,6 @@ realclean: clean
$(ACE_ROOT)/ace/Log_Msg.h \
$(ACE_ROOT)/ace/Log_Record.h \
$(ACE_ROOT)/ace/ACE.h \
- $(ACE_ROOT)/ace/Version.h \
$(ACE_ROOT)/ace/ACE.i \
$(ACE_ROOT)/ace/Log_Priority.h \
$(ACE_ROOT)/ace/Log_Record.i \
@@ -255,7 +254,6 @@ realclean: clean
$(ACE_ROOT)/ace/Log_Msg.h \
$(ACE_ROOT)/ace/Log_Record.h \
$(ACE_ROOT)/ace/ACE.h \
- $(ACE_ROOT)/ace/Version.h \
$(ACE_ROOT)/ace/ACE.i \
$(ACE_ROOT)/ace/Log_Priority.h \
$(ACE_ROOT)/ace/Log_Record.i \
@@ -419,6 +417,358 @@ realclean: clean
$(TAO_ROOT)/tao/GIOP.i \
$(TAO_ROOT)/tao/singletons.h \
Video_ControlC.i Video_ControlS.h Video_ControlS.i
+.obj/Audio_ControlS.o .obj/Audio_ControlS.so .shobj/Audio_ControlS.o .shobj/Audio_ControlS.so: Audio_ControlS.cpp Audio_ControlS.h Audio_ControlC.h \
+ $(TAO_ROOT)/tao/corba.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Get_Opt.h \
+ $(ACE_ROOT)/ace/Get_Opt.i \
+ $(ACE_ROOT)/ace/SOCK_Stream.h \
+ $(ACE_ROOT)/ace/SOCK_IO.h \
+ $(ACE_ROOT)/ace/SOCK.h \
+ $(ACE_ROOT)/ace/Addr.h \
+ $(ACE_ROOT)/ace/Addr.i \
+ $(ACE_ROOT)/ace/IPC_SAP.h \
+ $(ACE_ROOT)/ace/IPC_SAP.i \
+ $(ACE_ROOT)/ace/SOCK.i \
+ $(ACE_ROOT)/ace/SOCK_IO.i \
+ $(ACE_ROOT)/ace/INET_Addr.h \
+ $(ACE_ROOT)/ace/INET_Addr.i \
+ $(ACE_ROOT)/ace/SOCK_Stream.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/SOCK_Acceptor.h \
+ $(ACE_ROOT)/ace/Time_Value.h \
+ $(ACE_ROOT)/ace/SOCK_Acceptor.i \
+ $(ACE_ROOT)/ace/SOCK_Connector.h \
+ $(ACE_ROOT)/ace/SOCK_Connector.i \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Connector.h \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Svc_Handler.h \
+ $(ACE_ROOT)/ace/Task.h \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Task.i \
+ $(ACE_ROOT)/ace/Task_T.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(ACE_ROOT)/ace/Task_T.i \
+ $(ACE_ROOT)/ace/Dynamic.h \
+ $(ACE_ROOT)/ace/Dynamic.i \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Svc_Handler.i \
+ $(ACE_ROOT)/ace/Connector.i \
+ $(ACE_ROOT)/ace/Acceptor.h \
+ $(ACE_ROOT)/ace/Acceptor.i \
+ $(TAO_ROOT)/tao/compat/objbase.h \
+ $(TAO_ROOT)/tao/compat/initguid.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(TAO_ROOT)/tao/Align.h \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Sequence.i \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.i \
+ $(TAO_ROOT)/tao/ORB.i \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/params.h \
+ $(TAO_ROOT)/tao/params.i \
+ $(TAO_ROOT)/tao/Client_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/Server_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/default_client.h \
+ $(TAO_ROOT)/tao/default_client.i \
+ $(TAO_ROOT)/tao/default_server.h \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.h \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.i \
+ $(TAO_ROOT)/tao/default_server.i \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(TAO_ROOT)/tao/NVList.i \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/Request.h \
+ $(TAO_ROOT)/tao/Request.i \
+ $(TAO_ROOT)/tao/Stub.h \
+ $(TAO_ROOT)/tao/Stub.i \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/Server_Request.h \
+ $(TAO_ROOT)/tao/Server_Request.i \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/Marshal.h \
+ $(TAO_ROOT)/tao/Marshal.i \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(TAO_ROOT)/tao/CDR.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/POAS.i \
+ $(TAO_ROOT)/tao/Object_Table.h \
+ $(TAO_ROOT)/tao/Connect.h \
+ $(TAO_ROOT)/tao/Connect.i \
+ $(TAO_ROOT)/tao/ORB_Core.h \
+ $(TAO_ROOT)/tao/ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(TAO_ROOT)/tao/Operation_Table.h \
+ $(TAO_ROOT)/tao/debug.h \
+ $(TAO_ROOT)/tao/IIOP_Object.h \
+ $(TAO_ROOT)/tao/IIOP_Object.i \
+ $(TAO_ROOT)/tao/IIOP_ORB.h \
+ $(TAO_ROOT)/tao/IIOP_ORB.i \
+ $(TAO_ROOT)/tao/IIOP_Interpreter.h \
+ $(TAO_ROOT)/tao/GIOP.h \
+ $(TAO_ROOT)/tao/GIOP.i \
+ $(TAO_ROOT)/tao/singletons.h \
+ Audio_ControlC.i Audio_ControlS.i
+.obj/Audio_ControlC.o .obj/Audio_ControlC.so .shobj/Audio_ControlC.o .shobj/Audio_ControlC.so: Audio_ControlC.cpp Audio_ControlC.h \
+ $(TAO_ROOT)/tao/corba.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Get_Opt.h \
+ $(ACE_ROOT)/ace/Get_Opt.i \
+ $(ACE_ROOT)/ace/SOCK_Stream.h \
+ $(ACE_ROOT)/ace/SOCK_IO.h \
+ $(ACE_ROOT)/ace/SOCK.h \
+ $(ACE_ROOT)/ace/Addr.h \
+ $(ACE_ROOT)/ace/Addr.i \
+ $(ACE_ROOT)/ace/IPC_SAP.h \
+ $(ACE_ROOT)/ace/IPC_SAP.i \
+ $(ACE_ROOT)/ace/SOCK.i \
+ $(ACE_ROOT)/ace/SOCK_IO.i \
+ $(ACE_ROOT)/ace/INET_Addr.h \
+ $(ACE_ROOT)/ace/INET_Addr.i \
+ $(ACE_ROOT)/ace/SOCK_Stream.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/SOCK_Acceptor.h \
+ $(ACE_ROOT)/ace/Time_Value.h \
+ $(ACE_ROOT)/ace/SOCK_Acceptor.i \
+ $(ACE_ROOT)/ace/SOCK_Connector.h \
+ $(ACE_ROOT)/ace/SOCK_Connector.i \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Connector.h \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Svc_Handler.h \
+ $(ACE_ROOT)/ace/Task.h \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Task.i \
+ $(ACE_ROOT)/ace/Task_T.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(ACE_ROOT)/ace/Task_T.i \
+ $(ACE_ROOT)/ace/Dynamic.h \
+ $(ACE_ROOT)/ace/Dynamic.i \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Svc_Handler.i \
+ $(ACE_ROOT)/ace/Connector.i \
+ $(ACE_ROOT)/ace/Acceptor.h \
+ $(ACE_ROOT)/ace/Acceptor.i \
+ $(TAO_ROOT)/tao/compat/objbase.h \
+ $(TAO_ROOT)/tao/compat/initguid.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(TAO_ROOT)/tao/Align.h \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Sequence.i \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.i \
+ $(TAO_ROOT)/tao/ORB.i \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/params.h \
+ $(TAO_ROOT)/tao/params.i \
+ $(TAO_ROOT)/tao/Client_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/Server_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/default_client.h \
+ $(TAO_ROOT)/tao/default_client.i \
+ $(TAO_ROOT)/tao/default_server.h \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.h \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.i \
+ $(TAO_ROOT)/tao/default_server.i \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(TAO_ROOT)/tao/NVList.i \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/Request.h \
+ $(TAO_ROOT)/tao/Request.i \
+ $(TAO_ROOT)/tao/Stub.h \
+ $(TAO_ROOT)/tao/Stub.i \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/Server_Request.h \
+ $(TAO_ROOT)/tao/Server_Request.i \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/Marshal.h \
+ $(TAO_ROOT)/tao/Marshal.i \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(TAO_ROOT)/tao/CDR.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/POAS.i \
+ $(TAO_ROOT)/tao/Object_Table.h \
+ $(TAO_ROOT)/tao/Connect.h \
+ $(TAO_ROOT)/tao/Connect.i \
+ $(TAO_ROOT)/tao/ORB_Core.h \
+ $(TAO_ROOT)/tao/ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(TAO_ROOT)/tao/Operation_Table.h \
+ $(TAO_ROOT)/tao/debug.h \
+ $(TAO_ROOT)/tao/IIOP_Object.h \
+ $(TAO_ROOT)/tao/IIOP_Object.i \
+ $(TAO_ROOT)/tao/IIOP_ORB.h \
+ $(TAO_ROOT)/tao/IIOP_ORB.i \
+ $(TAO_ROOT)/tao/IIOP_Interpreter.h \
+ $(TAO_ROOT)/tao/GIOP.h \
+ $(TAO_ROOT)/tao/GIOP.i \
+ $(TAO_ROOT)/tao/singletons.h \
+ Audio_ControlC.i Audio_ControlS.h Audio_ControlS.i
.obj/com.o .obj/com.so .shobj/com.o .shobj/com.so: com.cpp \
$(TAO_ROOT)/orbsvcs/tests/AVStreams/mpeg/source/include/common.h \
$(ACE_ROOT)/ace/OS.h \
@@ -432,11 +782,10 @@ realclean: clean
$(ACE_ROOT)/ace/Log_Msg.h \
$(ACE_ROOT)/ace/Log_Record.h \
$(ACE_ROOT)/ace/ACE.h \
- $(ACE_ROOT)/ace/Version.h \
$(ACE_ROOT)/ace/ACE.i \
$(ACE_ROOT)/ace/Log_Priority.h \
- $(ACE_ROOT)/ace/Log_Record.i fileio.h routine.h \
- com.h
+ $(ACE_ROOT)/ace/Log_Record.i fileio.h \
+ routine.h com.h
.obj/fileio.o .obj/fileio.so .shobj/fileio.o .shobj/fileio.so: fileio.cpp routine.h \
$(TAO_ROOT)/orbsvcs/tests/AVStreams/mpeg/source/include/common.h \
$(ACE_ROOT)/ace/OS.h \
@@ -450,7 +799,6 @@ realclean: clean
$(ACE_ROOT)/ace/Log_Msg.h \
$(ACE_ROOT)/ace/Log_Record.h \
$(ACE_ROOT)/ace/ACE.h \
- $(ACE_ROOT)/ace/Version.h \
$(ACE_ROOT)/ace/ACE.i \
$(ACE_ROOT)/ace/Log_Priority.h \
$(ACE_ROOT)/ace/Log_Record.i fileio.h
@@ -466,7 +814,6 @@ realclean: clean
$(ACE_ROOT)/ace/Log_Msg.h \
$(ACE_ROOT)/ace/Log_Record.h \
$(ACE_ROOT)/ace/ACE.h \
- $(ACE_ROOT)/ace/Version.h \
$(ACE_ROOT)/ace/ACE.i \
$(ACE_ROOT)/ace/Log_Priority.h \
$(ACE_ROOT)/ace/Log_Record.i
@@ -483,7 +830,6 @@ realclean: clean
$(ACE_ROOT)/ace/Log_Msg.h \
$(ACE_ROOT)/ace/Log_Record.h \
$(ACE_ROOT)/ace/ACE.h \
- $(ACE_ROOT)/ace/Version.h \
$(ACE_ROOT)/ace/ACE.i \
$(ACE_ROOT)/ace/Log_Priority.h \
$(ACE_ROOT)/ace/Log_Record.i
diff --git a/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_shared/com.cpp b/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_shared/com.cpp
index 7c219eb1d1b..3eb592b6e4b 100644
--- a/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_shared/com.cpp
+++ b/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_shared/com.cpp
@@ -514,7 +514,7 @@ int ComOpenConnPair(char * address, int *ctr_fd, int *data_fd, int *max_pkt_size
fprintf(stderr, "ComOpenConnPair UDP port %d (should be > 0)\n",
ntohs(addressIn.sin_port));
- /*
+
i = sizeof(addressIn);
if (getsockname(cfd, (struct sockaddr *)&addressIn, &i) == -1) {
fprintf(stderr,
@@ -525,7 +525,7 @@ int ComOpenConnPair(char * address, int *ctr_fd, int *data_fd, int *max_pkt_size
close(cfd);
return -1;
}
- */
+
if (time_write_bytes(cfd, (char *)&addressIn.sin_addr.s_addr, sizeof(int)) == -1) {
fprintf(stderr,
"Error ComOpenConnPair: pid %d failed to write (IP addr) to TCP cfd:",
diff --git a/TAO/orbsvcs/tests/AVStreams/mpeg/source/server/Makefile b/TAO/orbsvcs/tests/AVStreams/mpeg/source/server/Makefile
index af4f35917ff..871ec61f175 100644
--- a/TAO/orbsvcs/tests/AVStreams/mpeg/source/server/Makefile
+++ b/TAO/orbsvcs/tests/AVStreams/mpeg/source/server/Makefile
@@ -5,16 +5,17 @@
#----------------------------------------------------------------------------
MAKEFILE = Makefile
-BIN = server vs
+BIN = server vs as
BUILD = $(BIN)
AV_SERVER_OBJS = server.o
AV_VS_OBJS = vs.o
+AV_AS_OBJS = as.o
# On non-Windows environment, we should at least define
# the export_include IDL flag.
-FILES = server vs
+FILES = server vs as
DEFS = $(addsuffix .h,$(FILES))
LSRC = $(addsuffix .cpp,$(FILES))
@@ -51,6 +52,8 @@ server:$(addprefix $(VDIR),$(AV_SERVER_OBJS))
vs:$(addprefix $(VDIR),$(AV_VS_OBJS))
$(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK)
+as:$(addprefix $(VDIR),$(AV_AS_OBJS))
+ $(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK)
clean:
-/bin/rm -rf *.o Log $(BIN) obj.* core Templates.DB .make.state
@@ -74,10 +77,9 @@ realclean: clean
$(ACE_ROOT)/ace/Trace.h \
$(ACE_ROOT)/ace/Log_Msg.h \
$(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.i \
$(ACE_ROOT)/ace/Log_Priority.h \
$(ACE_ROOT)/ace/Log_Record.i \
- $(ACE_ROOT)/ace/Version.h \
- $(ACE_ROOT)/ace/ACE.i \
$(ACE_ROOT)/ace/Get_Opt.i \
$(ACE_ROOT)/ace/Acceptor.h \
$(ACE_ROOT)/ace/Service_Config.h \
@@ -273,6 +275,7 @@ realclean: clean
$(TAO_ROOT)/orbsvcs/orbsvcs/CosNamingS.h \
$(TAO_ROOT)/orbsvcs/orbsvcs/CosNamingS.i \
$(TAO_ROOT)/orbsvcs/orbsvcs/Naming/Entries.h \
+ $(TAO_ROOT)/orbsvcs/tests/AVStreams/mpeg/source/mpeg_server/Audio_Server.h \
$(ACE_ROOT)/ace/Process.h \
$(ACE_ROOT)/ace/Process.i
.obj/vs.o .obj/vs.so .shobj/vs.o .shobj/vs.so: vs.cpp \
@@ -290,10 +293,9 @@ realclean: clean
$(ACE_ROOT)/ace/Trace.h \
$(ACE_ROOT)/ace/Log_Msg.h \
$(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.i \
$(ACE_ROOT)/ace/Log_Priority.h \
$(ACE_ROOT)/ace/Log_Record.i \
- $(ACE_ROOT)/ace/Version.h \
- $(ACE_ROOT)/ace/ACE.i \
$(ACE_ROOT)/ace/Handle_Set.i \
$(ACE_ROOT)/ace/Timer_Queue.h \
$(ACE_ROOT)/ace/Synch.h \
@@ -468,5 +470,198 @@ realclean: clean
$(ACE_ROOT)/ace/SOCK_CODgram.i \
$(TAO_ROOT)/orbsvcs/tests/AVStreams/mpeg/source/mpeg_server/Video_Control_State.h \
$(TAO_ROOT)/orbsvcs/tests/AVStreams/mpeg/source/mpeg_server/Video_Control_i.h
+.obj/as.o .obj/as.so .shobj/as.o .shobj/as.so: as.cpp \
+ $(TAO_ROOT)/orbsvcs/tests/AVStreams/mpeg/source/mpeg_server/Audio_Server.h \
+ $(TAO_ROOT)/orbsvcs/tests/AVStreams/mpeg/source/include/common.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(TAO_ROOT)/orbsvcs/tests/AVStreams/mpeg/source/mpeg_shared/fileio.h \
+ $(TAO_ROOT)/orbsvcs/tests/AVStreams/mpeg/source/mpeg_shared/routine.h \
+ $(TAO_ROOT)/orbsvcs/tests/AVStreams/mpeg/source/mpeg_shared/com.h \
+ $(TAO_ROOT)/orbsvcs/tests/AVStreams/mpeg/source/mpeg_server/server_proto.h \
+ $(TAO_ROOT)/orbsvcs/tests/AVStreams/mpeg/source/mpeg_server/Globals.h \
+ $(ACE_ROOT)/ace/SOCK_CODgram.h \
+ $(ACE_ROOT)/ace/SOCK_IO.h \
+ $(ACE_ROOT)/ace/SOCK.h \
+ $(ACE_ROOT)/ace/Addr.h \
+ $(ACE_ROOT)/ace/Addr.i \
+ $(ACE_ROOT)/ace/IPC_SAP.h \
+ $(ACE_ROOT)/ace/IPC_SAP.i \
+ $(ACE_ROOT)/ace/SOCK.i \
+ $(ACE_ROOT)/ace/SOCK_IO.i \
+ $(ACE_ROOT)/ace/SOCK_CODgram.i \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(TAO_ROOT)/orbsvcs/tests/AVStreams/mpeg/source/mpeg_shared/sendpt.h \
+ $(TAO_ROOT)/orbsvcs/tests/AVStreams/mpeg/source/mpeg_server/Video_Server.h \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(TAO_ROOT)/tao/TAO.h \
+ $(TAO_ROOT)/tao/corba.h \
+ $(ACE_ROOT)/ace/Get_Opt.h \
+ $(ACE_ROOT)/ace/Get_Opt.i \
+ $(ACE_ROOT)/ace/SOCK_Stream.h \
+ $(ACE_ROOT)/ace/INET_Addr.h \
+ $(ACE_ROOT)/ace/INET_Addr.i \
+ $(ACE_ROOT)/ace/SOCK_Stream.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/SOCK_Acceptor.h \
+ $(ACE_ROOT)/ace/Time_Value.h \
+ $(ACE_ROOT)/ace/SOCK_Acceptor.i \
+ $(ACE_ROOT)/ace/SOCK_Connector.h \
+ $(ACE_ROOT)/ace/SOCK_Connector.i \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Connector.h \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Svc_Handler.h \
+ $(ACE_ROOT)/ace/Task.h \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Task.i \
+ $(ACE_ROOT)/ace/Task_T.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(ACE_ROOT)/ace/Task_T.i \
+ $(ACE_ROOT)/ace/Dynamic.h \
+ $(ACE_ROOT)/ace/Dynamic.i \
+ $(ACE_ROOT)/ace/Svc_Handler.i \
+ $(ACE_ROOT)/ace/Connector.i \
+ $(ACE_ROOT)/ace/Acceptor.h \
+ $(ACE_ROOT)/ace/Acceptor.i \
+ $(TAO_ROOT)/tao/compat/objbase.h \
+ $(TAO_ROOT)/tao/compat/initguid.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(TAO_ROOT)/tao/Align.h \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Sequence.i \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.i \
+ $(TAO_ROOT)/tao/ORB.i \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/params.h \
+ $(TAO_ROOT)/tao/params.i \
+ $(TAO_ROOT)/tao/Client_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/Server_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/default_client.h \
+ $(TAO_ROOT)/tao/default_client.i \
+ $(TAO_ROOT)/tao/default_server.h \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.h \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.i \
+ $(TAO_ROOT)/tao/default_server.i \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(TAO_ROOT)/tao/NVList.i \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/Request.h \
+ $(TAO_ROOT)/tao/Request.i \
+ $(TAO_ROOT)/tao/Stub.h \
+ $(TAO_ROOT)/tao/Stub.i \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/Server_Request.h \
+ $(TAO_ROOT)/tao/Server_Request.i \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/Marshal.h \
+ $(TAO_ROOT)/tao/Marshal.i \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(TAO_ROOT)/tao/CDR.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/POAS.i \
+ $(TAO_ROOT)/tao/Object_Table.h \
+ $(TAO_ROOT)/tao/Connect.h \
+ $(TAO_ROOT)/tao/Connect.i \
+ $(TAO_ROOT)/tao/ORB_Core.h \
+ $(TAO_ROOT)/tao/ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(TAO_ROOT)/tao/Operation_Table.h \
+ $(TAO_ROOT)/tao/debug.h \
+ $(TAO_ROOT)/tao/IIOP_Object.h \
+ $(TAO_ROOT)/tao/IIOP_Object.i \
+ $(TAO_ROOT)/tao/IIOP_ORB.h \
+ $(TAO_ROOT)/tao/IIOP_ORB.i \
+ $(TAO_ROOT)/tao/IIOP_Interpreter.h \
+ $(TAO_ROOT)/tao/GIOP.h \
+ $(TAO_ROOT)/tao/GIOP.i \
+ $(TAO_ROOT)/tao/singletons.h \
+ $(TAO_ROOT)/orbsvcs/tests/AVStreams/mpeg/source/mpeg_shared/Video_ControlS.h \
+ $(TAO_ROOT)/orbsvcs/tests/AVStreams/mpeg/source/mpeg_shared/Video_ControlC.h \
+ $(TAO_ROOT)/orbsvcs/tests/AVStreams/mpeg/source/mpeg_shared/Video_ControlC.i \
+ $(TAO_ROOT)/orbsvcs/tests/AVStreams/mpeg/source/mpeg_shared/Video_ControlS.i \
+ $(TAO_ROOT)/orbsvcs/tests/AVStreams/mpeg/source/mpeg_server/Video_Control_State.h \
+ $(TAO_ROOT)/orbsvcs/tests/AVStreams/mpeg/source/mpeg_server/Video_Control_i.h
# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
diff --git a/TAO/orbsvcs/tests/AVStreams/mpeg/source/server/server.cpp b/TAO/orbsvcs/tests/AVStreams/mpeg/source/server/server.cpp
index 28e90998eae..6d28c912d81 100644
--- a/TAO/orbsvcs/tests/AVStreams/mpeg/source/server/server.cpp
+++ b/TAO/orbsvcs/tests/AVStreams/mpeg/source/server/server.cpp
@@ -105,6 +105,7 @@ AV_Svc_Handler::handle_connection (ACE_HANDLE)
"(%P|%t) semaphore acquire failed: %p\n",
"acquire"),
-1);
+ // ~~?? remove the semaphore.
// Wait until a ACE_SV_Semaphore's value is greater than 0, the
// decrement it by 1 and return. Dijkstra's P operation, Tannenbaums
// DOWN operation.
@@ -124,37 +125,55 @@ AV_Svc_Handler::handle_connection (ACE_HANDLE)
break;
case CmdINITaudio:
ACE_DEBUG ((LM_DEBUG,"(%P|%t) Received CmdINITaudio\n"));
- // %% need to fork here
- switch (ACE_OS::fork ("child"))
- {
- case 0:
- ACE_DEBUG ((LM_DEBUG,"(%P|%t) New process forked \n"));
- if (Mpeg_Global::live_audio)
- LeaveLiveAudio ();
- ACE_NEW_RETURN (this->as_,
- Audio_Server,
- -1);
- ACE_DEBUG ((LM_DEBUG,"(%P|%t) AudioServer created\n"));
- int result;
- result = this->as_->init (this->peer (),
- Mpeg_Global::rttag,
- -INET_SOCKET_BUFFER_SIZE);
- if (result < 0)
- ACE_ERROR_RETURN ((LM_ERROR,"(%P|%t) Audio_Server init failed ()\n"),-1);
- result = as_->run ();
- // ACE_Reactor::instance ()->end_event_loop ();
- TAO_ORB_Core_instance ()->orb ()-> shutdown ();
- if (result != 0)
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%P|%t) handle_connection : %d\n"),
- result);
- return result;
- break;
- default:
- this->destroy ();
- return 0;
- }
+ {
+ ACE_Process_Options audio_process_options;
+
+ char command_str[BUFSIZ];
+ sprintf (command_str,"./as -ORBport 0 -f %d",this->peer ().get_handle ());
+ ACE_DEBUG ((LM_DEBUG,"Audio command string %s",command_str));
+ audio_process_options.command_line (command_str);
+
+ ACE_Process audio_process;
+
+ audio_process.spawn (audio_process_options);
+ }
+ this->destroy ();
break;
+ // %% need to fork here
+// switch (ACE_OS::fork ("child"))
+// {
+// case 0:
+// TAO_ORB_Core_instance ()->orb ()-> shutdown ();
+// // Remove the acceptor handler and other signal handlers registered by the parent.
+// TAO_ORB_Core_instance ()->reactor ()->remove_handler (AV_SERVER::instance ()->acceptor (),
+// ACE_Event_Handler::ACCEPT_MASK);
+
+// ACE_DEBUG ((LM_DEBUG,"(%P|%t) New process forked \n"));
+// if (Mpeg_Global::live_audio)
+// LeaveLiveAudio ();
+// ACE_NEW_RETURN (this->as_,
+// Audio_Server,
+// -1);
+// ACE_DEBUG ((LM_DEBUG,"(%P|%t) AudioServer created\n"));
+// int result;
+// result = this->as_->init (this->peer (),
+// Mpeg_Global::rttag,
+// -INET_SOCKET_BUFFER_SIZE);
+// if (result < 0)
+// ACE_ERROR_RETURN ((LM_ERROR,"(%P|%t) Audio_Server init failed ()\n"),-1);
+// result = as_->run ();
+
+// if (result != 0)
+// ACE_ERROR_RETURN ((LM_ERROR,
+// "(%P|%t) handle_connection : %d\n"),
+// result);
+// return result;
+// break;
+// default:
+// this->destroy ();
+// return 0;
+// }
+// break;
default:
ACE_ERROR_RETURN ((LM_ERROR,"(%P|%t)Unknown command received\n"),-1);
break;
@@ -473,6 +492,13 @@ AV_Server::run (CORBA::Environment& env){
}
+AV_ACCEPTOR *
+AV_Server::acceptor (void)
+{
+ return &(this->acceptor_);
+}
+
+
AV_Server::~AV_Server (void)
{
ACE_DEBUG ((LM_DEBUG,
@@ -495,16 +521,19 @@ AV_Server::~AV_Server (void)
int
main (int argc, char **argv)
{
- AV_Server vcr_server;
+ // AV_Server vcr_server;
TAO_TRY
{
// Parses the arguments, and initializes the server.
- if (vcr_server.init (argc, argv, TAO_TRY_ENV) == -1)
+ // if (vcr_server.init (argc, argv, TAO_TRY_ENV) == -1)
+ if (AV_SERVER::instance ()->init (argc, argv, TAO_TRY_ENV) == -1)
return 1;
-
+ TAO_CHECK_ENV;
// Runs the reactor event loop.
- vcr_server.run (TAO_TRY_ENV);
+ // vcr_server.run (TAO_TRY_ENV);
+ AV_SERVER::instance ()->run (TAO_TRY_ENV);
+ TAO_CHECK_ENV;
}
TAO_CATCHANY
{
diff --git a/TAO/orbsvcs/tests/AVStreams/mpeg/source/server/server.h b/TAO/orbsvcs/tests/AVStreams/mpeg/source/server/server.h
index dca16183315..0be49ebd91a 100644
--- a/TAO/orbsvcs/tests/AVStreams/mpeg/source/server/server.h
+++ b/TAO/orbsvcs/tests/AVStreams/mpeg/source/server/server.h
@@ -153,6 +153,8 @@ private:
ACE_Sig_Set sig_set;
};
+typedef ACE_Acceptor <AV_Svc_Handler, ACE_SOCK_ACCEPTOR> AV_ACCEPTOR;
+
class AV_Server
{
// = TITLE
@@ -174,13 +176,16 @@ public:
int run (CORBA::Environment& env);
// Run the AV_Server
+ AV_ACCEPTOR *acceptor (void);
+ // Returns the acceptor.
+
static void on_exit_routine (void);
// Routine called when this process exits.
~AV_Server (void);
// Destructor
+ //private:
private:
-
// @@ Why are some of these data members pointers and others
// objects? Shouldn't we be consistent here?
@@ -193,7 +198,7 @@ private:
// %% need to comment!!
// typedef ACE_Strategy_Acceptor <AV_Svc_Handler, ACE_SOCK_ACCEPTOR> AV_ACCEPTOR;
// typedef ACE_Thread_Strategy <AV_Svc_Handler> AV_THREAD_STRATEGY;
- typedef ACE_Acceptor <AV_Svc_Handler, ACE_SOCK_ACCEPTOR> AV_ACCEPTOR;
+
// AV_THREAD_STRATEGY thread_strategy_;
// the strategy
@@ -211,4 +216,6 @@ private:
// Parse the arguments.
};
+typedef ACE_Singleton<AV_Server,ACE_Null_Mutex> AV_SERVER;
+
#endif /* TAO_AV_SERVER_H */