Reo Primitives Clause Samples

Reo Primitives. Reo is a coordination language which is based on a calculus of channels [13, 14, 19, 30]. By using Reo specifications, complex component connectors can be organized in a network of channels and build in a compositional manner. The simplest connectors in Reo are a set of channels with well-defined behavior supplied by users. Reo can be used as a coordination language for concurrent processes or as a ”glue language” for compositional construction of connectors that orchestrate component instances in a component based system. The empha- sis in Reo is on connectors and their composition only, not on the entities that connect to, communicate and cooperate through these connectors. Reo uses a simple notion of channels and can model any kind of peer-to-peer communica- tion. The only requirements for a channel used in a Reo network are that the channel should have two channel ends, called as sink or source ends, and a well-defined semantics which constraints or relates the flow of data through these ends. At a source end data items enter the channel by performing corresponding write operations. Data items are received from a channel at its sink end by performing corresponding read operations. Reo allows for an open ended set of channel types with user defined semantics. Some primitive channels relevant for this thesis are shown in Figure 3.1 by their graphical representations. Every synchronous or FIFO channel has a source and a sink end. A synchronous channel (abbreviated by Sync) has no buffer and accepts a data item through its source end if and only if it can simultaneously dispense it through its sink. A FIFO1 channel is represented graphically by a small box in the middle of an arrow. Writing a data item at the source end of a FIFO1 is enabled as long as the buffer is empty. The effect of writing d is that d will be stored in the buffer. Reading at the sink end is enabled if the buffer is full, in which case the data item is taken off from the buffer. FIFO channels with two or more buffer cells can be produced by composing several FIFO1 channels [30]. A lossy synchronous channel (abbreviated as LossySync) is similar to synchronous chan- nel, except that it always accepts all data items through its source end. If it is possible for it to simultaneously dispense the data item through its sink (e.g. there is a take operation pending on its sink) the channel transfers the data item, otherwise the data item is lost. For a 3.1. Reo: A Channel Based Coordination La...