summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlut <lut@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-12-17 19:13:31 +0000
committerlut <lut@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-12-17 19:13:31 +0000
commit860d1c700077097fa7a15ac69a480632782f6d8e (patch)
tree0feee42728eea982c3c8af12364c3df845090fc8
parent9cd67f94a80e1ae7ebb2e6fddc5ea83c8f1304f0 (diff)
downloadATCD-860d1c700077097fa7a15ac69a480632782f6d8e.tar.gz
ChangeLogTag: 2003-12-17 Tao Lu <lu@tango.dre.vanderbilt.edu>
-rw-r--r--TAO/CIAO/ChangeLog6
-rw-r--r--TAO/CIAO/examples/Hello/step-by-step.html161
2 files changed, 167 insertions, 0 deletions
diff --git a/TAO/CIAO/ChangeLog b/TAO/CIAO/ChangeLog
index 45bf2b715e2..428bf877268 100644
--- a/TAO/CIAO/ChangeLog
+++ b/TAO/CIAO/ChangeLog
@@ -1,3 +1,9 @@
+2003-12-17 Tao Lu <lu@tango.dre.vanderbilt.edu>
+
+ * examples/Hello/step-by-step.html:
+
+ Added this html file for explaination of the step by step tutorial.
+
Tue Dec 16 18:25:01 2003 Tao Lu <lu@tango.dre.vanderbilt.edu>
* docs/tutorial/Hello/README:
diff --git a/TAO/CIAO/examples/Hello/step-by-step.html b/TAO/CIAO/examples/Hello/step-by-step.html
new file mode 100644
index 00000000000..2e57821ccca
--- /dev/null
+++ b/TAO/CIAO/examples/Hello/step-by-step.html
@@ -0,0 +1,161 @@
+<!--//$Id$ -->
+<!--Made by lut <lu@dre.vanderbilt.edu>-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>Step-By-Step of How to build a CIAO application</title>
+</head>
+
+<body
+ text = "#000000"
+ link = "#000fff"
+ vLink= "#ff0f0f"
+ aLink = "#0000ff"
+ bgColor = "#ffffff">
+
+<hr>
+<h2>Simple <a href="http://www.dre.vanderbilt.edu/CIAO">CIAO</a> tutorial</h2>
+<hr>
+<b>Note:</b>
+<li><a href="http://www.dre.vanderbilt.edu/cosmic">CoSMIC</a> tools are not used in this tutorial.</li>
+<li>This is only a <em>GENERAL</em> way of building up a CIAO application. The user could always change the process in his own way. For example: the IDL file content, the project structure etc.</li>
+<li>To download the code please refer to the CVS repository @ $CIAO_ROOT/examples/Hello</li>
+<li>If you just want to try the example you could jump to the <em>Make</em> then the <em>Run</em> section.</li>
+<hr>
+
+<h2>Example Description</h2>
+This Hello example is contructed in the following ways:
+<li>1. There are 2 components in the system: Sender and Receiver</li>
+<li>2. The Sender will send out the timeout event to the Receiver.</li>
+<li>3. Upon receiving the timeout event, the Receiver will go and fetch data from the Sender. </li>
+<hr>
+
+<h2>Step-By-Step</h2>
+<hr>
+<ul><h3>Hello_Base</h3>
+<li>1. Write an IDL file (Hello_Base.idl) which contains all the interfaces and events common to all the components. The reason we do this is becuse the generated lib of this idl file will be linked in by all the components in the system. To reduce the size of the component lib we have to include only the necesary part. In this example, we have an eventtype <code>timeout</code> and an interface <code>message</code>, which are used by both the Sender and the Receiver, so we put both of them in Hello.idl.</li>
+
+<li>2. Use <code>$CIAO_ROOT/bin/generate_component_mpc.pl -n Hello_Base</code> to generate the <a href="http://downloads.ociweb.com/MPC/MakeProjectCreator.pdf">MPC</a> file for ITS_Base. Note: There are only 2 projects in the mpc file, Hello_stub and Hello_svnt.</li>
+
+<li>3. Open the mpc file and follow the instructions below</li>
+<ul>For the project <code>Hello_Base_svnt</code>:
+ <li>Change the parent prject from <code>ciao_svnt</code> to <code>ciao_server.<code></li>
+ <li>Delete the <code>IDL_Files</code> and <code>CIDL_Files</code> part.</li>
+ <li>Delete all the files in the <code>Source_File</code> part except <code>Hello_BaseS.cpp.</code></li>
+</ul>
+
+<li>4. Follow the instruction from the output of the last step, use the perl script (generate_export_file.pl) to generate the Export files.</li>
+</ul>
+
+<hr>
+
+<ul><h3>For Every Components</h3>
+
+<li>1. Use: <br>
+<ul>
+<code>$CIAO_ROOT/bin/generate_component_mpc.pl -p Hello_Base Sender <br>
+ $$CIAO_ROOT/bin/generate_component_mpc.pl -p Hello_Base Receiver
+</code><br></ul>
+Note:
+<ul>
+<li>I have different directories for Hello_Base/Sender/Receiver respectively.</li>
+<li>For the <code>_exec</code> part of the mpc file(I user Sender here as an exmaple):</li>
+<ul>
+ Add <code>SenderEI.idl</code> to the <code>IDL_Files</cdoe> <br>
+ Add <code>SenderEIC.cpp</code> to the <code>Source_Files</cdoe>
+</ul>
+
+<li>For every <code>_stub</code> project, add:<br>
+ <code>"libs += Hello_Base_stub"</code><br>
+
+</ul>
+
+<li>2. Use the export script to generate the export files(3 files per compoennt).</li>
+
+<li>3. Write an idl file for every compoent. Here you can put the component specific IDL definitions in this file. In this example we have a interface <code>trigger</code> specific to the Sender.</li>
+
+<li>4. Write the EI.idl file for every component. This file defines the local interfaces for the component.
+ <br>Note: This file could be ignored if one wants to.(For example: $CIAO_ROOT/docs/tutorial/Hello.) In some cases this file must NOT be used. Please see the discussion about this issue at <a href="http://deuce.doc.wustl.edu/bugzilla/show_bug.cgi?id=1672">bugzilla</a>.</li>
+
+<li>5. Write the CIDL file for every component.</li>
+
+<li>6. Write <code>_exec.h</code> and <code>_exec.cpp</code> files which actually implement the compnent.</li>
+<br>
+Writing all those files could be troublesome to a new CCM user. The best way of learning this is to read the example source code. If you are familliar with CORBA programming, it should not take too much time before you can delcare yourself as a CIAO programmer.
+
+<hr>
+
+<h3>The Entry Point</h3>
+After both components are implemented we still need a small program to initialize the process. In Sender.idl there is a Sender specific interface with a single method in it created for this purpose. Hence I created a TAO application called starter. The starter will call on a sepcial trigger interface on the Sender to get the whole process started. The starter program should collocate with Sender because it reads in the ior of the Sender. Please see the the last part of <code>Hello/Sender/Sender.mpc</code> file for detial.
+
+<hr>
+
+<h3>Make</h3>
+<li>Go to the top directory of your workspace and do:<br>
+ <code>$ACE_ROOT/bin/mwc.pl</code>(use -type option if you are on Windows)</li>
+<li>Look at the generated Makefile(*inx) , Solution/workspace file(Windows) and you got it.</li>
+
+<hr>
+
+<h3>Assemble</h3>
+Now we can step forward to build the assembly. Here we are going to build the simplest case only, which is 1 Receiver and 1 Sender. If you are interested in CIAO you could try 1 Sender wich multiple Receiver. However, you need to change the Sender.idl to make it <em>pulishes</em> timeout event instead of <em>emits</em> event.
+
+<br>
+
+<li>1. Make a new directory with name <em>descriptors</em> in your workspace</li>
+<li>2. Construct the <em>CIAO_Installation_Data.ini</em> file. You can use <code>uuidgen</code> to generate the UUIDs</li>
+
+<li>3. For every component generate the <em>.csd</em> and <em>.ssd</em> files. Follow the example carefully and make sure that you use the right UUIDs</li>
+
+<li>4. Write the <em>.cad</em> file which describes the assembly. You can choose to use <a href="http://www.dre.vanderbilt.edu/~lu/CADML">CADML</a> to generate the file.
+<br>
+Note: Please pay attention to the inter-relationship among different files, especially the relationship between the <em>.cad</em> file and <em>idl</em> file.
+</li>
+
+<hr>
+<h3>Run</h3>
+Finally you are ready to test the application you have made.
+<br><br>
+1. Run the example with a single CIAO_Daemon
+<ul>
+In <code>./descriptors</code> directory: <code>./run_test_default.pl</code> dose the following for you.
+<li>1. <code>${CIAO_ROOT}/tools/Daemon/CIAO_Daemon -ORBEndpoint iiop://localhost:20000 -n ${CIAO_ROOT}/tools/ComponentServer/ComponentServer </code></li>
+<li>2. <code>${CIAO_ROOT}/tools/Assembly_Deployer/Assembly_Manager -o ior -c test.dat</code></li>
+<li>3. <code>${CIAO_ROOT}/tools/Assembly_Deployer/Assembly_Deployer -k file://ior -a default.cad</code></li>
+<li>4. <code>../Sender/starter</code> Note: you can repeat this step.</li>
+</ul>
+<br>
+
+2. Run the example with 2 CIAO_Daemons but on the same machine.
+<ul>
+ In <code>./descriptors</code> directory: <code>./run_test_remote.pl</code> dose the following for you.
+ <li>1. <code>${CIAO_ROOT}/tools/Daemon/CIAO_Daemon -ORBEndpoint iiop://localhost:20000 -n ${CIAO_ROOT}/tools/ComponentServer/ComponentServer </code></li>
+ <li>2. <code>${CIAO_ROOT}/tools/Daemon/CIAO_Daemon -ORBEndpoint iiop://localhost:12000 -n ${CIAO_ROOT}/tools/ComponentServer/ComponentServer </code></li>
+ <li>3. <code>${CIAO_ROOT}/tools/Assembly_Deployer/Assembly_Manager -o ior -c test.dat</code></li>
+ <li>4. <code>${CIAO_ROOT}/tools/Assembly_Deployer/Assembly_Deployer -k file://ior -a remote.cad</code></li>
+ <li>5. <code>../Sender/starter</code> Note: you can repeat this step.</li>
+</ul>
+
+
+<br>
+
+3. Run the example with 2 CIAO_Daemons on two different hosts.
+<ul>
+ In <code>./descriptors</code> directory:<br>
+ Here you have to open the <em>remote.dat</em> and fill in the right URL for your hosts. You can change the port number as well, of course you will have to use the corresponding right address in your -ORBEndpoint option in the following step1 and 2.
+
+ <li>1. On host "Default" <code>${CIAO_ROOT}/tools/Daemon/CIAO_Daemon -ORBEndpoint iiop://URL:20000 -n ${CIAO_ROOT}/tools/ComponentServer/ComponentServer </code></li>
+ <li>2. On host "Remote" <code>${CIAO_ROOT}/tools/Daemon/CIAO_Daemon -ORBEndpoint iiop://URL:12000 -n ${CIAO_ROOT}/tools/ComponentServer/ComponentServer </code></li>
+ For step 3 and step4 it doesn't matter where they are executed.
+ <li>3. <code>${CIAO_ROOT}/tools/Assembly_Deployer/Assembly_Manager -o ior -c test.dat</code></li>
+ <li>4. <code>${CIAO_ROOT}/tools/Assembly_Deployer/Assembly_Deployer -k file://ior -a remote.cad</code></li>
+ Step5 must be executed on the same host where the Sender is deployed. If you are using my <em>remote.cad</em> file then the host is the <code>Default</code> one.
+ <li>5. <code>../Sender/starter</code> Note: you can repeat this step.</li>
+</ul>
+
+<br>
+If you are interested you could try to deploy multiple instances of the Receiver.
+<hr>
+<b>Email: </b><a href="mailto:"</a<ADDRESS>ciao-users@cse.wustl.edu</ADDRESS>
+</body>
+</html>