Although the Infopipe abstraction is being developed elsewhere in the Infosphere project, we include a short summary here to make the document more self-contained.
Infopipes are the software components, which link information producers to consumers, for building information flow-centric applications. Each infopipe consists of an input end, a processing middle, and an output end. The input consumes information and relays it to the middle. The middle is designed to work as a filter or an event handler, and its result is passed to the output, which then produces information. Infopipes can be combined, allowing developers to construct information flow-centric applications.
In order for developers to build distributed applications easily, the Infopipe Toolkit contains components, such as the Infopipe stub generator, Infopipe runtime system services to support QoS, and software supporting Infopipe composition. In this experimental implementation of the Infopipe system, we mainly focus on the Infopipe stub generator and support the Infopipe runtime system minimally only for the Infopipe stub generator.
The Infopipe stub generator is similar to RPC stub generators. The infopipe is defined by an explicit specification of the syntax, the semantics, and the Quality of Service (QoS) requirements of the information flow. Given the specification of an infopipe, it generates the appropriate code for the parsing and generation of information flow.
Figure 1 illustrates an infopipe that works as a filter or an event handler. You can see that the consumer-end of the infopipe captures information and the filtered information is generated at the producer-end. At the middle of the infopipe, it works as a filter or an event handler. Figure 2 illustrates an example of the Infopipe composition; with this, more complex functions can be implemented by using infopipes.
Figure 1: Infopipe as Filter or Event Handler
Figure 2: Infopipe Composition for More Complex Function
Figure 3 illustrates the Infopipe stub. A part of the captured information is somehow passed from the consumer-end to the processing middle and the result of it is passed to the producer-end to generate new information flow. Stub works at the both of between the consumer-end and the processing middle and between the processing middle and the producer-end.
Figure 3: Infopipe and its Stub