2016-12-05 8 views
0

後の特定のノードから新しいメッセージを生成します。私は、コードのこの作品使用しています条件

void Txc13::initialize() 
{ 
// Module 0 sends the first message 
if (getIndex() == 0) { 
    // Boot the process scheduling the initial message as a self-message. 
    TicTocMsg13 *msg = generateMessage(); 
    scheduleAt(0.0, msg); 
} 
} 
TicTocMsg13 *Txc13::generateMessage() 
{ 
    // Produce source and destination addresses. 
    int src = getIndex(); // our module index 
    int dest = 8; 
    char msgname[20]; 
    sprintf(msgname, "tic-%d-to-%d", src, dest); 
    // Create message object and set source and destination field. 
    TicTocMsg13 *msg = new TicTocMsg13(msgname); 
    msg->setSource(src); 
    msg->setDestination(dest); 
    return msg; 
} 

をそして、それは私がシミュレーションを開始、0のgetIndex()値で起動メッセージを生成し、宛先ノード8に到達します。 最初のメッセージがノード8に到達すると、新しいメッセージがノード2で開始し、ノード4に到達するという別のメッセージを生成します。同じシミュレーションでこれを行うことは可能ですか?

+0

シナリオでは、ノード0はノード8にメッセージを送信します。ノード2にどのように通知されますか、ノード8はこのメッセージを受け取りましたか? –

+0

私はそれがわかります実際の例ではなく、私が理解しようとしているのは、新しいメッセージを作成するために他のノードを指し示すことができることです。たとえば、2つの異なるノードからメッセージを同時に送信するにはどうすればいいですか? – Jorge

答えて

0

@ jerzy-dが提案するように、node8がメッセージを受信したときにノード2がメッセージの送信を開始できるように、ノード間で何らかの帯域外通信が必要です。これを行う最も簡単な方法は、メッセージを生成して別の機能に送信する機能を除外することです。メッセージが最終目的地に到着すると、次にノード番号2の次のメッセージを送信するノードがランダムに表示され、NODE2へのポインタが取得され、そのノードのメッセージジェネレータメソッドが呼び出されます。

+0

thats what I'm try、どのようにノードを指すことができますか? – Jorge

関連する問題