I'm using SDF stars, with multiin and multiout ports.  What I want is for
each message on each input port to be copied to each output port.  So I'm
doing the following:

------------------------CODE------------------------------------------
        setup {
            //get total number of messages on all input ports and assign
that number of delays to output ports
            PortHole *p;
            MPHIter nextp(input);
            int totMsg = 0;
            while ((p = (SDFPortHole *)nextp++) !=0 ) { 
                totMsg += p->numXfer(); 
            }
            output.setSDFParams(int(totMsg), int(totMsg)-1);
        }
        go {
            PortHole *pin;
            MPHIter nexti(input);
            Envelope pktIn;
            int iout = 0;
            
            //LOOP THROUGH EACH INPUT PORTHOLE
            while ((pin = (SDFPortHole*)nexti++) !=0)  {
                PortHole *pout;
                MPHIter nexto(output);

                //LOOP THROUGH EACH MESSAGE ON THAT INPUT PORTHOLE
                for (int imsg = 0; imsg < pin->numXfer(); imsg++)  {
                    ((*pin)%imsg).getMessage(pktIn);

                    // operate on input message and put in CopiedData;
                    ........


                    //LOOP THROUGH EACH OUTPUT PORTHOLE AND SEND EACH
MESSAGE
                    while ((pout = (SDFPortHole *)nexto++) !=0)  {
                        // send modified message to output
                        Envelope pktOut(*CopiedData);
                        (*pout)%iout << pktOut;
                        iout++;
                    }  //while

                }  //for

            }  //while

        }  //go

--------------------END CODE------------------------------------------

If I have 2 input stars, one that is sending 3 messages, and one that is
sending one message, I get the following output:

Star1 message3
Star2 message1
Star1 message2
Star2 message1
Star1 message1
Star2 message1

But I only want to see the one message from Star2 once.  So I want the
output to be:

Star1 message3
Star1 message2
Star1 message1
Star2 message1

How can I change the code to achieve this?  Maybe I don't understand the
scheduler well enough.  Any help would be appreciated.

Thanks

Beth Savoy
Corning, Inc
(607) 974-8813

----------------------------------------------------------------------------
Posted to the ptolemy-hackers mailing list.  Please send administrative
mail for this list to: [EMAIL PROTECTED]

Reply via email to