3 Documentation for the Simulator/DOVE demo
5 Purposes: 1) To show how the event service can be used to as a medium to
6 transport monitoring events including data.
7 2) To show how objects implemented in Java can access/can be accessed
9 3) To show the feasability of the DOVE framework as mentioned in
10 http://www.cs.wustl.edu/~schmidt/dove.html and
11 http://www.cs.wustl.edu/~schmidt/DOVE_and_LifeCycleService.ps.gz
12 4) To serve as a visual demonstration tool for scheduling and event
13 service configurations and applications.
15 Application: Using the Event Service as distribution media, event
16 consumers and event suppliers are needed. The central
17 element in the Event Service is a so called, event channel.
18 The event channel transports events from suppliers to
19 consumers. Filtering can be activated.
20 The mapping to DOVE is the following:
21 Event Channel - DOVE Agent
23 and/or DOVE MIB - Monitor/Event Consumer
24 Event Supplier - Monitored Application (here
25 an object supplying recorded scheduling
26 and dummy information)
27 Logging Supplier - Monitored Application (here an object supplying
28 creation times and updating a flag to record
29 actual EC arrival and dispatching times in
30 the scheduling information data structure
31 viewed by the browser)
32 Dual EC Supplier - Monitored Application (here an object supplying
33 separate Navigation and Weapons data sets
34 in separate generating threads, which use
36 viewed by the browser)
39 The events contain structs with avionics information.
40 They are generated by the monitored application and are
41 consumed by the DOVE Browser, a JAVA applet or application running
42 on a different machine and/or location. The collected metrics are
43 displayed in the Browser.
45 When an event arrives from the event supplier, a consumer inspects
46 the data field in the event. The field is a CORBA::Any, so
47 no assumptions can be made about the kind of data in the event.
49 A C++ Supplier pushes events containing a
50 navigation or weapons struct to the Event Service.
51 The latency and other machine metrics are read from
52 a file, which contains recorded scheduling information.
53 The Event Service dispatches the events to any number of
54 DOVE Browsers/MIBs which are implemented using JAVA/C++.
55 The DOVE Browser extracts the data of the structs and dispatches
56 it to various Visualization Components.
59 For more information refer to:
60 $TAO_ROOT/docs/releasenotes/index.html
65 * ACE/TAO environment,
66 * Visibroker 3.2+ for Java
69 - the file make.bat has been expanded for use on NT
71 - the file ss has been moved one level up and it got
72 renamed to "start_services". So use it to start the
73 naming and event service.
75 - it is no longer required to start the scheduling service
77 - the file make.bat has been expanded and refined for use on NT
78 The following make targets are defined:
79 make clean - removes all class files and idl generated java files
80 make realclean - updates idl files, does a make clean
81 make vb - makes the browser, using visibroker for java
82 make vbjava - remakes only the java files using vbjc
83 make jdk - makes the browser, using jdk
84 (the demo does not currently work with jdk)
88 * DOVE Browser (implemented in Java using Visibroker 3.2/3.3 for Java)
90 * Event Supplier, can be seen as a monitored object, called
91 DOVE Application (implemented in C++ using TAO)
93 * Logging Supplier, can be seen as a monitored object, called
94 DOVE Application (implemented in C++ using TAO) - rather than
95 providing canned simulation data, allows the actual EC arrival and
96 dispatching information to be recorded in the scheduling data
98 * Dual EC Supplier, can be seen as a monitored object, called
99 DOVE Application (implemented in C++ using TAO) - provides a paired
100 event and scheduling services for control over event prioritization.
102 * DOVE MIB, storing event data on persistent storage and keeping
103 track of statistical data (implemented in C++ using TAO)
107 NavWeap.idl - IDL definition of the Weapons and Navigation structures
108 README - this readme file
111 (in directory $TAO_ROOT/orbsvcs/tests/Simulator/Event_Supplier/)
112 DualEC_Sup.cpp - Dual EC Event Supplier
113 DualEC_Sup.h - Dual EC Event Supplier class definitions
114 Event_Sup.cpp - Event Supplier
115 Event_Sup.h - Event Supplier class definition
116 Logging_Sup.cpp - Event Supplier for EC logging
117 Logging_Sup.h - Event Supplier for EC logging class definition
118 Makefile - Event Supplier Makefile
119 (Event_Con.cpp, Event_Con.h - Event Consumer for testing)
120 svc.conf - helper file
123 (in directory $TAO_ROOT/orbsvcs/tests/Simulator/DOVEBrowser/)
124 AnswerEvent.java - Having my own Events
125 AnswerListener.java - Listener for these Events
126 DataHandler.java - Base class for all Data Handlers
127 DemoCore.java - Core of the Demo to connect Observables
129 DemoObservable.java - Base class for Observables
130 DoubleVisComp.java - Visualization Component
131 (will be a JavaBean) for Doubles
132 DOVEBrowser.java - Wrapper around DemoCore
133 DOVEBrowserApplet.java - Applet wrapper around DemoCore
134 MTQueue.java - synchronized queue for multi-threaded access
135 MTDataHandlerAdapter.java - uses the Adapter and Active Object
136 patterns to provide early demuxing
137 of ORB upcalls onto multiple
138 synchronized queues managed by
140 NS_Resolve.java - Resolving the inital reference
141 to the Naming Service
142 NavWeapDataHandler.java - Specialized Data Handler for
143 Navigation and Weapons data
144 NavigationVisComp.java - Visualization Component
145 (... JavaBean) for Navigation data
146 ObservablesDialog.java - Dialog window for connecting
147 Observables with OBservers
148 Properties.java - constant definitons
149 PushConsumer.java - Event Service Push Consumer
150 PushConsumerFactory.java - Factory for the Consumer
151 Queue.java - Queue for the DoubleVisComp
152 VisComp.java - Base class for the Visualization Components
153 WeaponsVisComp.java - Visualization Component for Weapons
157 (in directory $TAO_ROOT/orbsvcs/tests/Simulator/DOVEMIB/)
158 DOVEMIB.[cpp,h] - Core routines, connection to the
160 Node.[cpp,h] - Nodes used by the AnyAnalyser
161 AnyAnalyser.[cpp,h] - Anaylser for CORBA anys, storing the
162 contained types in persistent storage
163 NodeVisitor.h - base class definition of a Visitor
164 PrintVisistor.[cpp,h] - Able to print a given tree
165 of type nodes, which is
166 generated by the Any analyser
171 Be sure that you have _not_ built with
172 TAO_LACKS_EVENT_CHANNEL_ANY enabled.
174 And, be sure that the following are built:
176 "compile $TAO_ROOT/orbsvcs/orbsvcs"
177 "compile $TAO_ROOT/orbsvcs/Event_Service"
178 "compile $TAO_ROOT/orbsvcs/Naming_Service"
179 "compile $TAO_ROOT/orbsvcs/Scheduling_Service"
183 Then, just run "make" in top level Simulator
184 directory. The DOVEBrowser requires VisiJava's
185 idl2java and vbjc. If they are not on your PATH,
186 or in the default location specified in
187 DOVEBrowser/Makefile, you'll have to specify the
188 location in the "make" invocation. For example:
190 make VISIJAVA_BIN=/usr/local/VisiJava-3.2
193 Open the Event_Sup.dsw workspace found in the
194 Event_Supplier directory in MSVC++ 5.0+ and build
195 the Event_Sup, Logging_Sup, and DualEC_Sup projects.
197 From a console window, change to the DOVEBrowser
198 directory and run "make vb" to build the browser using
199 Visibroker. The first time you do this, you will need to
200 run "make setup" to copy the correct files into the directory.
201 You may also want to do a "make realclean" each time you
202 rebuild in case there were changes to IDL files.
206 Start in the following order on different ORB ports:
210 You can use "start_services" on Unix machines. The
211 script is located in $TAO_ROOT/orbsvcs/tests.
213 Event Supplier (simulation data):
214 Event_Sup -f MLF.dat -m 1000
216 // -m 1000 for 1000 events sent by the supplier
217 // -f MLF.dat to read scheduling data from this file as input
220 Logging Supplier (live latency and latency jitter data):
221 Logging_Sup -f MLF.dat -m 1000
223 // -m 1000 for 1000 events sent by the supplier
224 // -f MLF.dat to read operation names from this file as input
227 Dual EC Supplier (live latency and jitter data over two channels):
228 DualEC_Sup -f MLF.dat -m 1000
230 // -m 1000 for 1000 events sent by the supplier
231 // -f MLF.dat to read operation names from this file as input
235 (also supported: vbj DOVEBrowser -nameserviceior <IOR>
236 vbj DOVEBrowser -nameserviceport <port>
237 vbj DOVEBrowser -dualECdemo)
242 cd /visigenic/vbroker/lib
245 "setting the Naming Service IOR in the DOVEBrowser.html file"
246 appletviewer DOVEBrowser.html
251 DOVEMIB -f myfile -m 100
253 // -m 100 for storing the next 100 events
254 // -f <name of the file in which it will be stored>