Up to
DwarfMiddlewareTutorial, forward to
DwarfMiddlewareTutorialLesson8, back to
DwarfMiddlewareTutorialLesson6
Lesson 7: Sending and Receiving Events
In this lesson, you will how services can communicate with events.
Build time receiver and sender
Run
make install
in
(top build directory)/src/tutorials/middleware/lesson7
. This will install two new binaries,
TimeSender
and
TimeReceiver
. It will also install two new service descriptions:
TimeSender | TimeReceiver |
<service name="TimeSender" isTemplate="true">
<ability name="senddate" type="TimeOfDay">
<connector protocol="PushSupplier"/>
</ability>
</service>
|
<service name="TimeReceiver" isTemplate="true">
<need name="receivedate" type="TimeOfDay"
minInstances="1" maxInstances="3">
<connector protocol="PushConsumer"/>
</need>
</service>
|
Note the two new communication protocols,
PushSupplier
and
PushConsumer
. A
PushSupplier
sends events, a
PushConsumer
receives them.
Try it out
In one terminal, run the
TimeSender
. In another, run the
TimeReceiver
. The two services will start communicating, showing this image in DIVE:
The
TimeSender
will periodically send an event:
16:49:38.378 00000 10 TimeSender.cpp 119 TimeSender_impl : preparing event
16:49:38.378 00000 10 TimeSender.cpp 127 TimeSender_impl : getting time
16:49:38.378 00000 10 TimeSender.cpp 138 TimeSender_impl : sending event
16:49:39.387 00000 10 TimeSender.cpp 119 TimeSender_impl : preparing event
16:49:39.388 00000 10 TimeSender.cpp 127 TimeSender_impl : getting time
16:49:39.388 00000 10 TimeSender.cpp 138 TimeSender_impl : sending event
And the
TimeReceiver
will receive it:
got event with time of day: 16:49:38
got event with time of day: 16:49:39
Debugging the events
In DIVE, click on the
sendstrings
ability of the
TimeSender
. Then click on "View Events".
A new window will appear, allowing you to see the events sent by the
TimeSender
.
Note that for this, DIVE creates its own little debugging service that itself subscribes to the events sent by the
TimeSender
. You will see this it you click on "Update" in DIVE.
Exercise 7.1 How many
TimeReceivers
does one
TimeSender
connect to?
Exercise 7.2 How many
TimeSenders
does one
TimeReceiver
connect to? What happens if you change
maxInstances
?
How it works
Up to
DwarfMiddlewareTutorial, forward to
DwarfMiddlewareTutorialLesson8, back to
DwarfMiddlewareTutorialLesson6
--
AsaMacWilliams - 12 Nov 2003