package com.joelhooks.pipingthemachine.common.view
{
import com.ericfeminella.collections.HashMap;
import org.puremvc.as3.multicore.utilities.pipes.interfaces.IPipeFitting;
import org.puremvc.as3.multicore.utilities.pipes.plumbing.Junction;
import org.puremvc.as3.multicore.utilities.pipes.plumbing.JunctionMediator;
import org.puremvc.as3.multicore.utilities.pipes.plumbing.TeeSplit;
/**
* Adds properties and methods for managing connections of a JunctionMediator
* mostly related to managing memory with dynamically loaded and unloaded
* modules.
*
* @author joel
*/
public class ManagedJunctionMediator extends JunctionMediator
{
public function ManagedJunctionMediator(name:String, junction:Junction)
{
super(name, junction);
}
protected var connectionPool:HashMap = new HashMap();
public function addConnectionToPool(input:IPipeFitting, output:IPipeFitting, contextId:String):void
{
this.connectionPool.put(contextId, {input:input,output:output});
}
public function removeConnectionFromPool(contextId:String):void
{
if(junction.hasPipe(contextId))
junction.removePipe( contextId );
if(connectionPool.containsKey(contextId))
{
var input:IPipeFitting = this.connectionPool.getValue(contextId).input;
var output:IPipeFitting = this.connectionPool.getValue(contextId).output;
if(output is TeeSplit)
TeeSplit(output).disconnectFitting(input);
input.disconnect();
this.connectionPool.remove(contextId);
}
}
}
}