Over 10 years of community discussion and knowledge are maintained here as a read-only archive.
function disconnectInputPipe(name:String):Void; function disconnectOutputPipe(name:String):Void;
what I don't quite understand is how the Pipes objects are supposed to find each other without using the facade
Another thing I found puzzling were the Message objects. Why are those necessary? I understand that we're adding the priority and queue system, but why not just extend the core Notification object class?
var header:Object = { operation:'blur', type:'gaussian', xAmount:'20', yAmount:'100' };var body:Object = BitmapData(myImage);var message:Message = new Message( Message.NORMAL, header, body );
What would you see as the advantages or disadvantages of Pipes over a Singleton-based system like LICS?
In order to avoid coupling between modules, it is essential that the inter-core notification names, and any classes used to carry information between them, are kept completely separate. They should be viewed as a system level set of classes, rather than on a module by module basis.
LICS is a simpler solution, and one you might want to use in a small application where you will control all of the cores that are used.
From a framework vendor perspective, I must consider it axiomatic that a modular application may use modules written by third-party vendors. That means that the application vendor and the module vendor may (read: should) be completely unaware of each others' notification namespace and unable to disturb a core by triggering a notification that it shouldn't. This is why Pipes uses Messages rather than Notifications. It ensures that the inter-core messaging is decoupled from the intra-core messaging. It allows us to expose a a core's communication protocol as a set of custom message classes which can have whatever properties we want them to and to control the flow and processing of those messages based on metadata. As you pointed out, communication between cores may be more complex than the notes bouncing around inside a core.
Would you be at all concerned about performance issues with a Singleton-based approach? In other words, would you be worried that the Router singleton, or its equivalent, would become too massive/too cumbersome as more cores are added?