summaryrefslogtreecommitdiff
path: root/docs/tutorials/011/combine.shar
diff options
context:
space:
mode:
Diffstat (limited to 'docs/tutorials/011/combine.shar')
-rw-r--r--docs/tutorials/011/combine.shar489
1 files changed, 0 insertions, 489 deletions
diff --git a/docs/tutorials/011/combine.shar b/docs/tutorials/011/combine.shar
deleted file mode 100644
index 53cf2f988a2..00000000000
--- a/docs/tutorials/011/combine.shar
+++ /dev/null
@@ -1,489 +0,0 @@
-#!/bin/sh
-# This is a shell archive (produced by GNU sharutils 4.2).
-# To extract the files from this archive, save it to some FILE, remove
-# everything before the `!/bin/sh' line above, then type `sh FILE'.
-#
-# Made on 2000-03-19 15:00 EST by <jcej@chiroptera.tragus.org>.
-# Source directory was `/home/jcej/projects/ACE_wrappers/docs/tutorials/011'.
-#
-# Existing files will *not* be overwritten unless `-c' is specified.
-#
-# This shar contains:
-# length mode name
-# ------ ---------- ------------------------------------------
-# 442 -rw-rw-r-- hdr
-# 48 -rw-rw-r-- bodies
-# 869 -rw-rw-r-- page01.pre
-# 164 -rw-rw-r-- page02.pre
-# 174 -rw-rw-r-- page03.pre
-# 127 -rw-rw-r-- page04.pre
-# 2691 -rw-rw-r-- page05.pre
-# 707 -rw-rw-r-- page06.pre
-# 351 -rw-rw-r-- page02.pst
-# 365 -rw-rw-r-- page03.pst
-# 129 -rw-rw-r-- page04.pst
-#
-save_IFS="${IFS}"
-IFS="${IFS}:"
-gettext_dir=FAILED
-locale_dir=FAILED
-first_param="$1"
-for dir in $PATH
-do
- if test "$gettext_dir" = FAILED && test -f $dir/gettext \
- && ($dir/gettext --version >/dev/null 2>&1)
- then
- set `$dir/gettext --version 2>&1`
- if test "$3" = GNU
- then
- gettext_dir=$dir
- fi
- fi
- if test "$locale_dir" = FAILED && test -f $dir/shar \
- && ($dir/shar --print-text-domain-dir >/dev/null 2>&1)
- then
- locale_dir=`$dir/shar --print-text-domain-dir`
- fi
-done
-IFS="$save_IFS"
-if test "$locale_dir" = FAILED || test "$gettext_dir" = FAILED
-then
- echo=echo
-else
- TEXTDOMAINDIR=$locale_dir
- export TEXTDOMAINDIR
- TEXTDOMAIN=sharutils
- export TEXTDOMAIN
- echo="$gettext_dir/gettext -s"
-fi
-touch -am 1231235999 $$.touch >/dev/null 2>&1
-if test ! -f 1231235999 && test -f $$.touch; then
- shar_touch=touch
-else
- shar_touch=:
- echo
- $echo 'WARNING: not restoring timestamps. Consider getting and'
- $echo "installing GNU \`touch', distributed in GNU File Utilities..."
- echo
-fi
-rm -f 1231235999 $$.touch
-#
-if mkdir _sh32588; then
- $echo 'x -' 'creating lock directory'
-else
- $echo 'failed to create lock directory'
- exit 1
-fi
-# ============= hdr ==============
-if test -f 'hdr' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'hdr' '(file already exists)'
-else
- $echo 'x -' extracting 'hdr' '(text)'
- sed 's/^X//' << 'SHAR_EOF' > 'hdr' &&
-<HTML>
-<HEAD>
-X <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-X <META NAME="Author" CONTENT="James CE Johnson">
-X <TITLE>ACE Tutorial 011</TITLE>
-</HEAD>
-<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#000FFF" VLINK="#FF0F0F">
-X
-<CENTER><B><FONT SIZE=+2>ACE Tutorial 011</FONT></B></CENTER>
-X
-<CENTER><B><FONT SIZE=+2>Passing non-trivial data through an ACE_Message_Queue</FONT></B></CENTER>
-X
-X
-<P>
-<HR WIDTH="100%">
-SHAR_EOF
- $shar_touch -am 03191459100 'hdr' &&
- chmod 0664 'hdr' ||
- $echo 'restore of' 'hdr' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'hdr:' 'MD5 check failed'
-cf10a170c9ca8512b7051526e2dcf83c hdr
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'hdr'`"
- test 442 -eq "$shar_count" ||
- $echo 'hdr:' 'original size' '442,' 'current size' "$shar_count!"
- fi
-fi
-# ============= bodies ==============
-if test -f 'bodies' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'bodies' '(file already exists)'
-else
- $echo 'x -' extracting 'bodies' '(text)'
- sed 's/^X//' << 'SHAR_EOF' > 'bodies' &&
-PAGE=2
-message_queue.cpp
-task.h task.cpp
-data.h
-SHAR_EOF
- $shar_touch -am 0124155199 'bodies' &&
- chmod 0664 'bodies' ||
- $echo 'restore of' 'bodies' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'bodies:' 'MD5 check failed'
-db3ba3829b49952c833adb921acd3d3f bodies
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'bodies'`"
- test 48 -eq "$shar_count" ||
- $echo 'bodies:' 'original size' '48,' 'current size' "$shar_count!"
- fi
-fi
-# ============= page01.pre ==============
-if test -f 'page01.pre' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'page01.pre' '(file already exists)'
-else
- $echo 'x -' extracting 'page01.pre' '(text)'
- sed 's/^X//' << 'SHAR_EOF' > 'page01.pre' &&
-<P>
-In the previous tutorial we learned how to put text into a message queue.
-While that may be useful, it isn't very exciting or realistic. In most
-cases you'll need to move complex data structures between your threads.
-<P>
-In this tutorial I'll expand the previous by moving not only a text string
-but also a more complex object. In the next tutorial I'll change things
-again so that we move the complex object a bit more efficiently.
-<P>
-A simple abstract for a simple tutorial:
-<UL>
-In this tutorial, we put some data into the blocks of the message queue.
-We copy the data from a Data object into the block and put it on the
-queue. The block is then dequeued by the thread which picks it up and
-processes it. This tutorial is very similar to the previous
-one with the extra touch being population of the blocks with data.
-</UL>
-(Abstract by Kirthika, as always.)
-SHAR_EOF
- $shar_touch -am 03191459100 'page01.pre' &&
- chmod 0664 'page01.pre' ||
- $echo 'restore of' 'page01.pre' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'page01.pre:' 'MD5 check failed'
-58768929bbe513a9fa2302b1fe3170be page01.pre
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'page01.pre'`"
- test 869 -eq "$shar_count" ||
- $echo 'page01.pre:' 'original size' '869,' 'current size' "$shar_count!"
- fi
-fi
-# ============= page02.pre ==============
-if test -f 'page02.pre' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'page02.pre' '(file already exists)'
-else
- $echo 'x -' extracting 'page02.pre' '(text)'
- sed 's/^X//' << 'SHAR_EOF' > 'page02.pre' &&
-We'll look first at <A HREF="message_queue.cpp">main()</A>. A large part of this is
-the same as before, so I've only commented the changes.
-<P>
-X
-<HR WIDTH="100%">
-SHAR_EOF
- $shar_touch -am 03191459100 'page02.pre' &&
- chmod 0664 'page02.pre' ||
- $echo 'restore of' 'page02.pre' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'page02.pre:' 'MD5 check failed'
-ccd60d44cf4f9730aa16ff042f324c8e page02.pre
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'page02.pre'`"
- test 164 -eq "$shar_count" ||
- $echo 'page02.pre:' 'original size' '164,' 'current size' "$shar_count!"
- fi
-fi
-# ============= page03.pre ==============
-if test -f 'page03.pre' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'page03.pre' '(file already exists)'
-else
- $echo 'x -' extracting 'page03.pre' '(text)'
- sed 's/^X//' << 'SHAR_EOF' > 'page03.pre' &&
-X
-Our Task object <A HREF="task.h">declaration</a> and <A HREF="task.cpp">definition</a>.
-X As with message_queue.cpp,
-I've only commented the changes.
-<P>
-X
-<HR WIDTH="100%">
-SHAR_EOF
- $shar_touch -am 03191459100 'page03.pre' &&
- chmod 0664 'page03.pre' ||
- $echo 'restore of' 'page03.pre' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'page03.pre:' 'MD5 check failed'
-e99896d191834752e7e07317af06ea0c page03.pre
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'page03.pre'`"
- test 174 -eq "$shar_count" ||
- $echo 'page03.pre:' 'original size' '174,' 'current size' "$shar_count!"
- fi
-fi
-# ============= page04.pre ==============
-if test -f 'page04.pre' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'page04.pre' '(file already exists)'
-else
- $echo 'x -' extracting 'page04.pre' '(text)'
- sed 's/^X//' << 'SHAR_EOF' > 'page04.pre' &&
-X
-Before we go further, let's look at this <A HREF="data.h">Data</A> object
-that's causing all the fuss.
-X
-<P>
-<HR WIDTH="100%">
-SHAR_EOF
- $shar_touch -am 03191459100 'page04.pre' &&
- chmod 0664 'page04.pre' ||
- $echo 'restore of' 'page04.pre' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'page04.pre:' 'MD5 check failed'
-4fe23822fef63921fa81cbf97e25bd5e page04.pre
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'page04.pre'`"
- test 127 -eq "$shar_count" ||
- $echo 'page04.pre:' 'original size' '127,' 'current size' "$shar_count!"
- fi
-fi
-# ============= page05.pre ==============
-if test -f 'page05.pre' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'page05.pre' '(file already exists)'
-else
- $echo 'x -' extracting 'page05.pre' '(text)'
- sed 's/^X//' << 'SHAR_EOF' > 'page05.pre' &&
-X
-Let's take a look at this new program's output:
-X
-<P>
-<HR WIDTH="100%">
-<PRE>
-[jcej@chiroptera 011]$./message_queue 4 2
-(12108|1024) Task ctor 0xbffff9c8
-(12108|2050) Task 0xbffff9c8 starts in thread 2050
-(12108|1025) Task 0xbffff9c8 starts in thread 1025
-(12108|1024) DataBase ctor 0xbffff9c0
-(12108|1024) Data ctor 0xbffff9c0 for message 0
-(12108|1024) Block ctor 0x8052d08
-(12108|1024) Data dtor 0xbffff9c0
-(12108|1024) DataBase dtor 0xbffff9c0
-(12108|1024) DataBase ctor 0xbffff9c0
-(12108|1024) Data ctor 0xbffff9c0 for message 1
-(12108|1024) Block ctor 0x8052e00
-(12108|1024) Data dtor 0xbffff9c0
-(12108|1024) DataBase dtor 0xbffff9c0
-(12108|1024) DataBase ctor 0xbffff9c0
-(12108|1024) Data ctor 0xbffff9c0 for message 2
-(12108|1024) Block ctor 0x8052ef8
-(12108|1024) Data dtor 0xbffff9c0
-(12108|1024) DataBase dtor 0xbffff9c0
-(12108|1024) DataBase ctor 0xbffff9c0
-(12108|1024) Data ctor 0xbffff9c0 for message 3
-(12108|1024) Block ctor 0x8052ff0
-(12108|1024) Data dtor 0xbffff9c0
-(12108|1024) DataBase dtor 0xbffff9c0
-(12108|1024) Block ctor 0x80530e8
-(12108|1025) Block 0x8052d08 contains (This is message 0.)
-(12108|1025) DataBase ctor 0xbf9ffe20
-(12108|1025) Data ctor 0xbf9ffe20
-(12108|1025) DataBase instance 0xbf9ffe20
-(12108|1025) I am a Data object for message 0
-(12108|1025) Block dtor 0x8052d08
-(12108|1025) Data dtor 0xbf9ffe20
-(12108|1025) DataBase dtor 0xbf9ffe20
-(12108|1025) Block 0x8052e00 contains (This is message 1.)
-(12108|1025) DataBase ctor 0xbf9ffe20
-(12108|1025) Data ctor 0xbf9ffe20
-(12108|1025) DataBase instance 0xbf9ffe20
-(12108|1025) I am a Data object for message 1
-(12108|1025) Block dtor 0x8052e00
-(12108|1025) Data dtor 0xbf9ffe20
-(12108|1025) DataBase dtor 0xbf9ffe20
-(12108|1025) Block 0x8052ef8 contains (This is message 2.)
-(12108|1025) DataBase ctor 0xbf9ffe20
-(12108|1025) Data ctor 0xbf9ffe20
-(12108|1025) DataBase instance 0xbf9ffe20
-(12108|1025) I am a Data object for message 2
-(12108|1025) Block dtor 0x8052ef8
-(12108|1025) Data dtor 0xbf9ffe20
-(12108|1025) DataBase dtor 0xbf9ffe20
-(12108|1025) Block 0x8052ff0 contains (This is message 3.)
-(12108|1025) DataBase ctor 0xbf9ffe20
-(12108|1025) Data ctor 0xbf9ffe20
-(12108|1025) DataBase instance 0xbf9ffe20
-(12108|1025) I am a Data object for message 3
-(12108|2050) Task close 0xbffff9c8
-(12108|1025) Block dtor 0x8052ff0
-(12108|1025) Data dtor 0xbf9ffe20
-(12108|1025) DataBase dtor 0xbf9ffe20
-(12108|1025) Task close 0xbffff9c8
-(12108|1024) Task dtor 0xbffff9c8
-(12108|1024) Block dtor 0x80530e8
-(12108|1024) Application exiting
-[jcej@chiroptera 011]$
-</PRE>
-<HR WIDTH="100%">
-<P>
-Other than being more verbose because of the Data object, this shows us
-the same thing we've seen before.
-<P>
-SHAR_EOF
- $shar_touch -am 03191459100 'page05.pre' &&
- chmod 0664 'page05.pre' ||
- $echo 'restore of' 'page05.pre' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'page05.pre:' 'MD5 check failed'
-b95ed571240b8383db0e0c0b07d04971 page05.pre
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'page05.pre'`"
- test 2691 -eq "$shar_count" ||
- $echo 'page05.pre:' 'original size' '2691,' 'current size' "$shar_count!"
- fi
-fi
-# ============= page06.pre ==============
-if test -f 'page06.pre' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'page06.pre' '(file already exists)'
-else
- $echo 'x -' extracting 'page06.pre' '(text)'
- sed 's/^X//' << 'SHAR_EOF' > 'page06.pre' &&
-So, this time we stuffed an object into the message queue instead of just text
-data. Each time required two object constructions (and subsequent destructions)
-and two "deep" copy operations on the object. There might actually be times when
-this is OK for your application but I prefer to keep those things down to a
-minimum. In the next tutorial I'll show you a way to do that.
-<P>
-X
-<UL>
-<LI><A HREF="Makefile">Makefile</A>
-<LI><A HREF="block.h">block.h</A>
-<LI><A HREF="data.h">data.h</A>*
-<LI><A HREF="message_queue.cpp">message_queue.cpp</A>
-<LI><A HREF="task.cpp">task.cpp</A>
-<LI><A HREF="task.h">task.h</A>
-</UL>
-X
-* data.h hasn't changed at all from Tutorial 7 so I didn't devote a
-X page to it.
-SHAR_EOF
- $shar_touch -am 03191459100 'page06.pre' &&
- chmod 0664 'page06.pre' ||
- $echo 'restore of' 'page06.pre' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'page06.pre:' 'MD5 check failed'
-17d64bbe275773a80d7d767e04e0474c page06.pre
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'page06.pre'`"
- test 707 -eq "$shar_count" ||
- $echo 'page06.pre:' 'original size' '707,' 'current size' "$shar_count!"
- fi
-fi
-# ============= page02.pst ==============
-if test -f 'page02.pst' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'page02.pst' '(file already exists)'
-else
- $echo 'x -' extracting 'page02.pst' '(text)'
- sed 's/^X//' << 'SHAR_EOF' > 'page02.pst' &&
-<HR WIDTH="100%">
-<P>
-The new trick here is the use of copy() to copy our abstract data object
-into the message block memory. Notice that it's OK to let the Data object
-go out of scope at that point since we've got a separate copy. If you've
-got something with a non-trivial ctor/dtor then this won't work. We'll address
-that in the next tutorial.
-SHAR_EOF
- $shar_touch -am 03191459100 'page02.pst' &&
- chmod 0664 'page02.pst' ||
- $echo 'restore of' 'page02.pst' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'page02.pst:' 'MD5 check failed'
-89fa13e74842bc65092e0e6f61fdd889 page02.pst
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'page02.pst'`"
- test 351 -eq "$shar_count" ||
- $echo 'page02.pst:' 'original size' '351,' 'current size' "$shar_count!"
- fi
-fi
-# ============= page03.pst ==============
-if test -f 'page03.pst' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'page03.pst' '(file already exists)'
-else
- $echo 'x -' extracting 'page03.pst' '(text)'
- sed 's/^X//' << 'SHAR_EOF' > 'page03.pst' &&
-<HR WIDTH="100%">
-<P>
-Notice how we had to create a temporary Data object to copy the stuff out
-of the message block? Again, if there were non-trivial ctor/dtors involved
-then this wouldn't work at all.
-<P>
-Again, like <A HREF="../010/page01.html">Tutorial 10</A> we've skipped
-<i>THR_DETACHED</i> because we <i>wait()</i> for the threads to exit
-X elsewhere.
-SHAR_EOF
- $shar_touch -am 03191459100 'page03.pst' &&
- chmod 0664 'page03.pst' ||
- $echo 'restore of' 'page03.pst' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'page03.pst:' 'MD5 check failed'
-1005245771b0756716fa87dfdf966155 page03.pst
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'page03.pst'`"
- test 365 -eq "$shar_count" ||
- $echo 'page03.pst:' 'original size' '365,' 'current size' "$shar_count!"
- fi
-fi
-# ============= page04.pst ==============
-if test -f 'page04.pst' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'page04.pst' '(file already exists)'
-else
- $echo 'x -' extracting 'page04.pst' '(text)'
- sed 's/^X//' << 'SHAR_EOF' > 'page04.pst' &&
-<HR WIDTH="100%">
-<P>
-Ok, no mysterious magic on this one. Just a simple object and derivative
-that report their existence.
-<P>
-SHAR_EOF
- $shar_touch -am 03191459100 'page04.pst' &&
- chmod 0664 'page04.pst' ||
- $echo 'restore of' 'page04.pst' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'page04.pst:' 'MD5 check failed'
-777ab8789fb82b1e280b9e127983c4b0 page04.pst
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'page04.pst'`"
- test 129 -eq "$shar_count" ||
- $echo 'page04.pst:' 'original size' '129,' 'current size' "$shar_count!"
- fi
-fi
-rm -fr _sh32588
-exit 0