Delphi Planet
  Bringing you Delphi news and information



 

Home
Books
Delphi Links
About The Planet


 
 

OpenWire 2.7 Beta1

The purpose of the OpenWire project is to introduce unified easy way to transfer data among different VCL/CLX components. This is very similar to the way the products as LabView and HP VEE work. As example to have a sine wave generator which streams out to a chart and to a filter, and then the filter streams into another chart and a file logger, as well as to a serial communication sending the data to another system.

OpenWire is free Open Source project.

OpenWire uses streams in order to transfer the data. Each stream is a connection between one output and one or multiple inputs.

  • Each component can have one or more inputs and/or outputs.

  • Each Input or Output is called Pin. I.E. there are IputPins and OutputPins.

  • Each OutputPin can stream specific format data to compatible format InputPins.

  • Each type of data has its own data specification.
The data specification is a unique data type identification. As example the integer data type has one type of data specification and the String data has a different one. A OutputPin can be specified as being able to stream one or many types of data. As example an OutputPin which sends file names, streams data which is at the same time streaming and file name. Any InputPin accepting strings will be able to accept this type of data, and any Pin accepting file names will be able to accept it too.

Each Pin is a property cloned from TOWPin.
The InputPin is inherited from TOWPin and the are called TOWSinkPin.
The OutputPin is inherited from TOWPin and the are called TOWSourcePin.
The InputPin and OutputPin are responsible for implementing one or many stream specific inerface(s). The interface has a unique GUID specified for that type of stream.
The InputPin and OutputPin have data specification which describes what type of data types (interfaces) it can accept (connect to).
The data specification for a certain data type contains in the TPinType object.
The TPinType contains one or more entries of type TGUID.
The TGUID is used to determine the type of data - it’s in fact the GUID of the interface being able to connect to that type of data.

There is a handshaking mechanism involved during the connection of 2 Pins. Only compatible data type Pins can be connected. Otherwise the connection is rejected. There are property editors which are allowing you to connect the Pins. You can connect 2 Pins at run time as well.

OpenWire 2.x adds StatePins. StatePins can be connected together by creating hidden objects named StateDispatchers(States). The StatePins share one and the same state. If a the state of one of the StatePins changes all the connected StatePins are changing to the same state. StatePins can be connected to one SourcePin, and/or to multiple SinkPins.

Read more