diff options
Diffstat (limited to 'docs/tutorials/Chap_7/ex02.html')
-rw-r--r-- | docs/tutorials/Chap_7/ex02.html | 166 |
1 files changed, 0 insertions, 166 deletions
diff --git a/docs/tutorials/Chap_7/ex02.html b/docs/tutorials/Chap_7/ex02.html deleted file mode 100644 index 65b148fde6e..00000000000 --- a/docs/tutorials/Chap_7/ex02.html +++ /dev/null @@ -1,166 +0,0 @@ -<HTML> -<!-- $Id$ --> -<HEAD> - <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> - <META NAME="Author" CONTENT="Ambreen Ilyas"> - <META NAME="GENERATOR" CONTENT="Mozilla/4.05 [en] (X11; I; SunOS 5.5.1 sun4u) [Netscape]"> - <TITLE>Example 2</TITLE> -</HEAD> -<BODY> -<FONT COLOR="#CC0000">/////////////////////////////////////////////////////////////////////////////////////////////////////////////////</FONT> -<BR><FONT COLOR="#CC0000">//// This example is from the ACE Programmers -Guide.</FONT> -<BR><FONT COLOR="#CC0000">//// Chapter: "The Message Queue"</FONT> -<BR><FONT COLOR="#CC0000">//// For details please see the guide at</FONT> -<BR><FONT COLOR="#CC0000">//// http://www.cs.wustl.edu/~schmidt/ACE.html</FONT> -<BR><FONT COLOR="#CC0000">//// AUTHOR: Umar Syyid (usyyid@hns.com)</FONT> -<BR><FONT COLOR="#CC0000">//// and Ambreen Ilyas (ambreen@bitsmart.com)</FONT> -<BR><FONT COLOR="#CC0000">/////////////////////////////////////////////////////////////////////////////////////////////////////////////</FONT> - -<P><FONT COLOR="#CC0000">//Example 2</FONT><FONT COLOR="#000099"></FONT> - -<P><FONT COLOR="#000099">#include</FONT><FONT COLOR="#006600"> "ace/Message_Queue.h"</FONT> -<BR><FONT COLOR="#000099">#include</FONT><FONT COLOR="#006600"> "ace/Get_Opt.h"</FONT> -<BR><FONT COLOR="#000099">#include</FONT> "<FONT COLOR="#006600">ace/Malloc_T.h"</FONT> -<BR><FONT COLOR="#000099">#define</FONT> <FONT COLOR="#663366">SIZE_BLOCK -1</FONT> - -<P>class Args{ -<BR>public: -<BR>Args(int argc, char*argv[],int& no_msgs, ACE_Message_Queue<ACE_NULL_SYNCH>* -&mq){ -<BR> ACE_Get_Opt get_opts(argc,argv,"h:l:t:n:xsd"); -<BR> while((opt=get_opts())!=-1) -<BR> switch(opt){ -<BR> case 'n': -<BR> <FONT COLOR="#FF0000"> //set the number of messages we -wish to enqueue and dequeue</FONT> -<BR> no_msgs=ACE_OS::atoi(get_opts.optarg); -<BR> ACE_DEBUG((LM_INFO,"Number of Messages %d \n",no_msgs)); -<BR> break; - -<P> case 'h': -<BR> <FONT COLOR="#FF0000">//set the high water mark</FONT> -<BR> hwm=ACE_OS::atoi(get_opts.optarg); -<BR> mq->high_water_mark(hwm); -<BR> ACE_DEBUG((LM_INFO,"High Water Mark %d msgs \n",hwm)); -<BR> break; -<BR> case 'l': -<BR> <FONT COLOR="#FF0000"> //set the low water mark</FONT> -<BR> lwm=ACE_OS::atoi(get_opts.optarg); -<BR> mq->low_water_mark(lwm); -<BR> ACE_DEBUG((LM_INFO,"Low Water Mark %d msgs \n",lwm)); -<BR> break; -<BR> default: -<BR> ACE_DEBUG((LM_ERROR, "Usage -n<no. messages> -h<hwm> --l<lwm>\n")); -<BR> break; -<BR> } -<BR> } - -<P>private: -<BR> int opt; -<BR> int hwm; -<BR> int lwm; -<BR>}; -<BR> -<BR> - -<P>class QTest{ -<BR>public: -<BR>QTest(int argc, char*argv[]){ -<BR><FONT COLOR="#FF0000"> //First create a message queue of default -size.</FONT> -<BR> if(!(this->mq_=new ACE_Message_Queue<ACE_NULL_SYNCH> ())) -<BR> ACE_DEBUG((LM_ERROR,"Error in message queue initialization \n")); -<BR> -<BR> <FONT COLOR="#FF0000">//Use the arguments to set the water marks -and the no of messages</FONT> -<BR> args_ = new Args(argc,argv,no_msgs_,mq_); -<BR> } -<BR>int start_test(){ -<BR> for(int i=0; i<no_msgs_;i++){ -<BR> <FONT COLOR="#FF0000">//Create a new message block of data buffer -size 1</FONT> -<BR> ACE_Message_Block * mb= new ACE_Message_Block(SIZE_BLOCK); -<BR> -<BR><FONT COLOR="#FF0000"> //Insert data into the message block using -the rd_ptr</FONT> -<BR> *mb->wr_ptr()=i; -<BR> -<BR> <FONT COLOR="#FF0000">//Be careful to advance the wr_ptr</FONT> -<BR> mb->wr_ptr(1); - -<P><FONT COLOR="#FF0000"> //Enqueue the message block onto the message -queue</FONT> -<BR> if(this->mq_->enqueue_prio(mb)==-1){ -<BR> ACE_DEBUG((LM_ERROR,"\nCould not enqueue on to mq!!\n")); -<BR> return -1; -<BR> } -<BR> -<BR> ACE_DEBUG((LM_INFO,"EQd data: %d\n",*mb->rd_ptr())); -<BR> } -<BR> <FONT COLOR="#FF0000">//Use the iterators to read</FONT> -<BR> this->read_all(); - -<P> <FONT COLOR="#FF0000">//Dequeue all the messages</FONT> -<BR> this->dequeue_all(); -<BR> return 0; -<BR> } - -<P>void read_all(){ -<BR> ACE_DEBUG((LM_INFO,"No. of Messages on Q:%d Bytes on Q:%d \n", -mq_->message_count(),mq_->message_bytes())); -<BR> ACE_Message_Block *mb; - -<P> <FONT COLOR="#FF0000">//Use the forward iterator</FONT> -<BR> ACE_DEBUG((LM_INFO,"\n\nBeginning Forward Read \n")); -<BR> ACE_Message_Queue_Iterator<ACE_NULL_SYNCH> mq_iter_(*mq_); -<BR> while(mq_iter_.next(mb)){ -<BR> mq_iter_.advance(); -<BR> ACE_DEBUG((LM_INFO,"Read data %d\n",*mb->rd_ptr())); -<BR> } -<BR> -<BR> <FONT COLOR="#FF0000">//Use the reverse iterator</FONT> -<BR> ACE_DEBUG((LM_INFO,"\n\nBeginning Reverse Read \n")); -<BR> ACE_Message_Queue_Reverse_Iterator<ACE_NULL_SYNCH> -<BR> mq_rev_iter_(*mq_); -<BR> while(mq_rev_iter_.next(mb)){ -<BR> mq_rev_iter_.advance(); -<BR> ACE_DEBUG((LM_INFO,"Read data %d\n",*mb->rd_ptr())); -<BR> } -<BR> -<BR> } - -<P>void dequeue_all(){ -<BR> ACE_DEBUG((LM_INFO,"\n\nBeginning DQ \n")); -<BR> ACE_DEBUG((LM_INFO,"No. of Messages on Q:%d Bytes on Q:%d \n", -mq_->message_count(),mq_->message_bytes())); -<BR> ACE_Message_Block *mb; - -<P><FONT COLOR="#FF0000"> //dequeue the head of the message queue -until no more messages are left</FONT> -<BR> for(int i=0;i<no_msgs_;i++){ -<BR> mq_->dequeue_head(mb); -<BR> ACE_DEBUG((LM_INFO,"DQd data %d\n",*mb->rd_ptr())); -<BR> } -<BR> } - -<P>private: -<BR> Args *args_; -<BR> ACE_Message_Queue<ACE_NULL_SYNCH> *mq_; -<BR> int no_msgs_; -<BR>}; -<BR> -<BR> - -<P>int main(int argc, char* argv[]){ -<BR> QTest test(argc,argv); -<BR> if(test.start_test()<0) -<BR> ACE_DEBUG((LM_ERROR,"Program failure \n")); -<BR> -<BR>} - -<P> <A HREF="ex03.html">Next Example</A> -</BODY> -</HTML> |