[Home]InformationPacket

FlowBasedProgramming | RecentChanges | Preferences

An InformationPacket (IP) is a structured chunk of data that is used in FlowBasedProgramming to contain data. It has a lifetime, from creation to destruction, and may only be owned by one FBP Process? at a time, or be in transit between processes.

In JavaFBP, C#FBP and FlowBase (DavidBennett's C# implementation), a packet has a content which may be any object, and also may have attributes and chains attached to it. It also has a type, which must be one of:

In the case of OPEN and CLOSE, the contents will be a string denoting the name (see Fig. 12.7 in http://www.jpaulmorrison.com/fbp/tree.htm).

Is an IP required to be (or should it be) an immutable ValueObject?

    There was a young man who said: "God,
    I find it exceedingly odd
    That this sycamore tree continues to be
    When there's noone about in the quad." 

To which came the rejoinder:

    God answered: "It isn't so odd.
    I am always about in the quad.
    So this sycamore tree continues to be
    Ever watched by, Yours Faithfully, God." 

So you need a God who will look after all objects to make sure they don't disappear... (BTW "quad" is short for "quadrangle") --pm

IPs (or their handles) travel across inter-process connections in Stream?s, where the stream is produced and consumed asynchronously. Thus typically not all the Stream has to exist at the same moment in time, but it can still be regarded as a single entity, with well-definable attributes, such as "time of creation of first IP", "total number of IPs", etc.

Stream?s may be subdivided into substreams by various types of signal IPs, one interesting type being a BracketIP?.

IPs can also be linked into TreeIPs, where the root of the tree (or its handle) is what travels from process to process. In this case, non-root IPs are only owned indirectly by processes. Trees may be mapped onto structures of substreams, and vice versa.

IPs resemble Linda's "tuples" (see LindaLanguage) in that they exist in a space of their own, like TupleSpace. However, unlike in Linda, these data objects are not retrieved associatively, but travel across inter-process connections. Therefore the "downstream" process knows when no more IPs will arrive. Also connections can be checked by the software to make sure that no IPs are still in transit.


FlowBasedProgramming | RecentChanges | Preferences
This page is read-only - contact owner for a password | View other revisions
Last edited January 17, 2008 3:38 pm by PaulMorrison (diff)
Search: