Composite test application for I3. More...
Public Member Functions | |
void | initializeApp (int stage) |
App initialization - should be overwritten by application. | |
void | initializeI3 () |
Application I3 initialize - should be overwritten by application. | |
void | deliver (I3Trigger &trigger, I3IdentifierStack &stack, cPacket *msg) |
Delivers packets coming from I3 - should be overwritten by application. | |
void | handleTimerEvent (cMessage *msg) |
Handles timers - should be overwritten by application. | |
void | createMessage () |
Public Attributes | |
int | myIndex |
cMessage * | sendPacketTimer |
Static Private Attributes | |
static int | index = 0 |
Composite test application for I3.
This tests the ability of I3 to realize service composition in which the receving node decides the routing of a packet. First, all nodes insert their own trigger. Then, node 0 creates an packet containing an empty sentence (""), and sends it to I3 with an identifier stack containing the triggers of service nodes 1, 2, 3, 4 and then node 0. I3 then routes the packet to each of those triggers in that order. Each service node adds some words to the sentence ands sends it back to I3 with the same identifier stack it received. When it returns to node 0 it displays the sentence it received and starts again.
Definition at line 43 of file I3Composite.cc.
void I3Composite::createMessage | ( | ) |
Definition at line 80 of file I3Composite.cc.
Referenced by deliver(), and handleTimerEvent().
{ I3CompositeMessage *cmsg = new I3CompositeMessage(); cmsg->sentence = ""; I3Identifier id0("Composite 0"), id1("Composite 1"), id2("Composite 2"), id3("Composite 3"), id4("Composite 4"); I3IdentifierStack stack; stack.push(id0); stack.push(id4); stack.push(id3); stack.push(id2); stack.push(id1); sendPacket(stack, cmsg); }
void I3Composite::deliver | ( | I3Trigger & | trigger, | |
I3IdentifierStack & | stack, | |||
cPacket * | msg | |||
) | [virtual] |
Delivers packets coming from I3 - should be overwritten by application.
trigger | Application trigger to which the packet was sent | |
stack | Identifier stack passed from I3 | |
msg | Arriving message |
Reimplemented from I3BaseApp.
Definition at line 110 of file I3Composite.cc.
{ I3CompositeMessage *cmsg = check_and_cast<I3CompositeMessage*>(msg); switch (myIndex) { case 0: { string final = "Final sentence: " + cmsg->sentence; getParentModule()->bubble(final.c_str()); delete msg; createMessage(); return; } case 1: getParentModule()->bubble("Adding 'He pounds'"); cmsg->sentence += "He pounds "; break; case 2: getParentModule()->bubble("Adding 'his fists'"); cmsg->sentence += "his fists "; break; case 3: getParentModule()->bubble("Adding 'against'"); cmsg->sentence += "against "; break; case 4: getParentModule()->bubble("Adding 'the posts'"); cmsg->sentence += "the posts "; break; default: delete msg; return; } sendPacket(stack, cmsg); }
void I3Composite::handleTimerEvent | ( | cMessage * | msg | ) | [virtual] |
Handles timers - should be overwritten by application.
msg | Timer to be handled |
Reimplemented from I3BaseApp.
Definition at line 101 of file I3Composite.cc.
{ if (myIndex == 0) { // only the first node getParentModule()->bubble("Starting chain!"); createMessage(); } delete msg; }
void I3Composite::initializeApp | ( | int | stage | ) | [virtual] |
App initialization - should be overwritten by application.
I3 related commands should go in initializeI3.
stage | Initialization stage passed from initialize() |
Reimplemented from I3BaseApp.
Definition at line 60 of file I3Composite.cc.
void I3Composite::initializeI3 | ( | ) | [virtual] |
Application I3 initialize - should be overwritten by application.
Reimplemented from I3BaseApp.
Definition at line 66 of file I3Composite.cc.
{ if (myIndex == 0) { sendPacketTimer = new cMessage("packet timer"); scheduleAt(simTime() + 50, sendPacketTimer); } ostringstream os; os << "Composite " << myIndex; I3Identifier identifier(os.str()); insertTrigger(identifier); }
int I3Composite::index = 0 [static, private] |
Definition at line 46 of file I3Composite.cc.
Referenced by initializeApp().
Definition at line 48 of file I3Composite.cc.
Referenced by deliver(), handleTimerEvent(), initializeApp(), and initializeI3().
cMessage* I3Composite::sendPacketTimer |
Definition at line 49 of file I3Composite.cc.
Referenced by initializeI3().