Over 10 years of community discussion and knowledge are maintained here as a read-only archive.
<?xml version="1.0"?><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <![CDATA[ import org.puremvc.as3.multicore.utilities.pipes.interfaces.IPipeMessage; import org.puremvc.as3.multicore.utilities.pipes.messages.Message; import org.puremvc.as3.multicore.utilities.pipes.plumbing.Junction; import org.puremvc.as3.multicore.utilities.pipes.plumbing.Pipe; import org.puremvc.as3.multicore.utilities.pipes.plumbing.PipeListener; private var j:Junction = new Junction(); public function pipeTest():void { // Each Core has listeners to receive messages // Each Core has pipes to send messages var coreA:PipeListener = new PipeListener( this, coreAGotMessage ); var coreAoutpipe:Pipe = new Pipe(); var coreB:PipeListener = new PipeListener( this, coreBGotMessage ); var coreBoutpipe:Pipe = new Pipe(); // MXML is aware of the pipes coming out of each core and into the junction // declared outside of coreA/coreB trace( 'Junction.registerJunctionInPipe', j.registerPipe( 'fromCoreA', Junction.INPUT, coreAoutpipe )); trace( 'Junction.registerJunctionInPipe', j.registerPipe( 'fromCoreB', Junction.INPUT, coreBoutpipe )); // MXML is aware of the pipes going into each core and out of the junction // declared outside of coreA/coreB trace( 'Junction.registerJunctionOutPipe', j.registerPipe( 'toCoreA', Junction.OUTPUT, coreA )); trace( 'Junction.registerJunctionOutPipe', j.registerPipe( 'toCoreB', Junction.OUTPUT, coreB )); j.addPipeListener( 'fromCoreA', this, onMessageFromCoreA ); j.addPipeListener( 'fromCoreB', this, onMessageFromCoreB ); // Core B has an outpipe and sends a message via this pipe coreBoutpipe.write( new Message( 'Hello from core B' ) ); // Core A has an outpipe and sends a message via this pipe coreAoutpipe.write( new Message( 'Hello from core A' ) ); } // MXML handles messages on a pipe and writes them to another pipe private function onMessageFromCoreA( msg:IPipeMessage ):void { j.sendMessage( 'toCoreB', msg ); } private function onMessageFromCoreB( msg:IPipeMessage ):void { j.sendMessage( 'toCoreA', msg ); } /** * CoreA implements this message handler * @param msg */ private function coreAGotMessage( msg:IPipeMessage ):void { trace( 'Core A got message', msg.getType() ); } /** * CoreB implements this message handler * @param msg */ private function coreBGotMessage( msg:IPipeMessage ):void { trace( 'Core B got message', msg.getType() ); } ]]> </mx:Script> <mx:Button label="SendMessages" click="pipeTest()"/></mx:Application>