package com.joelhooks.pipingthemachine.common.view.components
{
import mx.modules.ModuleBase;
import mx.utils.UIDUtil;
import org.puremvc.as3.multicore.interfaces.IFacade;
import org.puremvc.as3.multicore.utilities.pipes.interfaces.IPipeAware;
import org.puremvc.as3.multicore.utilities.pipes.interfaces.IPipeFitting;
import org.puremvc.as3.multicore.utilities.pipes.plumbing.JunctionMediator;
public class PipeAwareModule extends ModuleBase implements IPipeAware
{
/**
* Standard output pipe name constant.
*/
public static const STDOUT:String = 'pipe/standard/output';
/**
* Standard input pipe name constant.
*/
public static const STDIN:String = 'pipe/standard/input';
/**
* Standard log pipe name constant.
*/
public static const STDLOG:String = 'standardLog';
/**
* Standard shell pipe name constant.
*/
public static const STDSHELL:String = 'standardShell';
/**
* A read-only unique identifier for this module.
*/
protected var _GUID:String;
/**
* Constructor.
* <P>
* In subclass, create appropriate facade and pass
* to super.</P>
*/
public function PipeAwareModule( facade:IFacade )
{
super();
this.facade = facade;
if(!this._GUID)
this._GUID = UIDUtil.createUID()
}
/**
* public getter for this module's GUID property
* @return
*
*/
public function get GUID():String
{
return this._GUID;
}
/**
* Accept an input pipe.
* <P>
* Registers an input pipe with this module's Junction.
*/
public function acceptInputPipe( name:String, pipe:IPipeFitting ):void
{
facade.sendNotification( JunctionMediator.ACCEPT_INPUT_PIPE, pipe, name );
trace(name, pipe)
}
/**
* Accept an output pipe.
* <P>
* Registers an input pipe with this module's Junction.
*/
public function acceptOutputPipe( name:String, pipe:IPipeFitting ):void
{
facade.sendNotification( JunctionMediator.ACCEPT_OUTPUT_PIPE, pipe, name );
trace(name, pipe)
}
protected var facade:IFacade;
}
}