SDD Java API Release 2.3.0

sdd2.2.0 | sdd2.1.0 | sdd2.0.0 | sdd2.0.0b6 | sdd2.0.0b5

9/8/2006 
Changes for 2.3.0:

SDD Java API Release 2.2.0

sdd2.3.0 | sdd2.1.0 | sdd2.0.0 | sdd2.0.0b6 | sdd2.0.0b5

2/24/00 

This release contains two tools that can help to integrate SDD with an existing system:

  1. ItsFrame.c, a library of C functions to send a stream of arbitrary data types over a socket connection to an ItsFrameReceiver. This standardizes and streamlines the necessary interprocess communication to pass data from a C program to the SDD java library.
  2. SddTranslator, a program that can be configured to read a stream of arbitrary data types and translate them into an equivalent SDD stream. When combined with a data source that uses ItsFrame.c, SddTranslator allows the creation and configuration of SDD streams without any java programming.  SddTranslator is found in the its.app.trans package, along with several example configuration files.

A new section in the SDD Software Manual describes how to use these components to get an SDD stream up and running.

SDD Java API Release 2.1.0

sdd2.3.0 | sdd2.2.0 | sdd2.0.0 | sdd2.0.0b6 | sdd2.0.0b5

10/29/99

Overview

This release adds several new features to both transmitters and receivers to simplify the job of working with SDD streams. Since the last release, a great deal of experience has accumulated with using this software package to implement, modify, and make use of SDD streams, and these new capabilities proved themselves useful in many situations.

SDD Transmitter changes

When designing a new data stream, the frequency of transmission of data frames must be estimated. It's now possible to encode this information in the data stream so that receivers can understand the intended frequency. See the new method SddTransmitter.setTimeout.

The new method SddTransmitter.startPulse can be used to automatically add "pulse" frames to the data stream.  These are zero-length data frames, and they will be sent after a given time elapses with no new data.  These simplify the creation of a stream in which a large data set in the Contents frame is updated infrequently.  Using startPulse also improves any transmitter whose data source might go offline periodically, because it prevents downstream clients from reconnecting needlessly when the data stream is quiet for a while.

The new exceptions MissingContentsException and MissingSchemaException must now be handled when updating current frames.  These exceptions formalize the order in which frames must be created.

The SddTransmitter class now parses data frames before sending them.  This feature can be disabled if an application-specific data frame format is being used.

As always, SddTransmitter automatically generates the serial numbers that identify Schema, Contents, and Data frames. However, the Schema and Contents serial numbers are now stored in a properties file generated by SddTransmitter, so that if the program is restarted and no actual change has occured in the Schema or Contents, the same serial numbers can be used. This gives any receiver of the stream the knowledge that a change in a serial number always indicates a change in the Schema or Contents. The API reveals this new behavior only by an additional parameter in the SddTransmitter constructor that allows the programmer to name the properties file.

Potentially hundreds of clients can connect to an SDD Transmitter or a Generic Redistributor. When a client goes away, the server notices its absence the next time it attempts to send data to the client. This works unless the data stream is down and there is no new data for a long period of time. The server-side connections are now monitored to determine when clients have disappeared, which they may do automatically due to their reconnection logic. This increases the long-term reliability of a Transmitter or Redistributor.

SDD Receiver changes

The SddReceiver base class now monitors the timeout value which may be present in an SDD stream, and sets its client socket timeout accordingly. When this amount of time has elapsed without receiving any new data, a new connection to the server is built. Formerly, the timeout value was always set at 30 seconds. This default value has changed to 90 seconds. These changes are intended to reduce the chance that a connection will be rebuilt unnecessarily. The SDD protocol ensures that no harm is done when this does occur, and the reconnection behavior is desirable because it is the only way to detect certain types of network failures. Please note that the reconnection feature is still configurable, and may even be disabled, via the method ClientConnection.setTimeout.

When SddReceiver builds a ContentsData object for an incoming data frame, it now strips single quotes from quoted strings. This has always been the behavior for tables originating in the contents frame, and the functionality is now the same no matter where the ContentsData object was built. To print data contained by a ContentsData object, the new printRowString method automatically handles different output formats.

Some confusion was caused by a warning message that could be generated by the FrameQueue object when more than 100 frames were waiting to be processed. This warning message is now better documented and configurable; see the method FrameQueue.setWarningLimits. The message helps developers of SDD Receiver programs determine how the processing time they require relates to the incoming data rate.

The BadTypeException is no longer thrown by methods in the ItsFrame class.  This exception arose if the "type" field of an ITS Frame was not among the handful of pre-defined, generic frame types.  With the elimination of this rule, it is now possible to receive frames with application-specific values in the "type" field, if necessary. 

Further performance gains have been realized in the SDD receiver.  The receiver's most time-consuming task, creation of a ContentsData object, is now 2 to 5 times faster, which means less of a delay before the application can process incoming real-time data.  Also, a thread-safety problem has been resolved, enabling multiple receivers to be in use within the same program.

Changes to enable creation of SDD Operators

An SDD Operator is simply a program that receives an SDD stream, modifies it in some way, and then makes it available as a new stream. Writing one of these involves combining SddReceiver and SddTransmitter objects in a single program. As frames are received in the callbacks from SddReceiver, they are modified or augmented in some way, and then passed to corresponding SddTransmitter methods. The following methods have been added to make it easier to transform a stream in this way:

Note that it is necessary to make a copy of a data stream's Schema object before modifying it, because the Schema object is continually used to guarantee the integrity of incoming data.

New example programs and utility classes

its.app.SddFilter illustrates how to write an SDD Operator, and provides a generic facility for filtering on any value in any data stream.


 

SDD Java API Release 2.0.0

sdd2.3.0 | sdd2.2.0 | sdd2.1.0 | sdd2.0.0b6 | sdd2.0.0b5

3/7/99

Overview

This release contains a new SddTransmitter base class to ease the process of creating a new SDD stream. The API documentation has been improved, and the public interface to the SDD classes is more strictly defined and easier to understand. A new example application, called SddFlash, is an excellent tool for working with SDD streams.

Applications ready to run: the its.app package

SddFlash is a flexible tool for general-purpose use of existing data streams. See the document "Creating an SDD Receiver" for details on using SddFlash.

Formerly known as either "Fanout" or "GenericRedistributor", the standard application for receiving and transmitting an SDD stream is now called Redistributor.

The bin directory

This directory contains Redistributor.exe and SddFlash.exe, two applications that have been packaged into a Windows-specific format for easier usage. They can be invoked directly and can be copied from one machine to another without worrying about librar ies or the classpath variable. In order to run them, the Microsoft Java VM must be present. If Internet Explorer 4.0 has been installed, it will be there, otherwise, the standalone Java VM is available from http://www.microsoft.com/java. Of course, th e same applications can still be invoked from its.zip with other implementations of the Java VM. SddFilter.pl is another new program in the bin directory; see "Creating an SDD Receiver" for a description of how to use it.

The doc directory

An all new set of API documentation is accessible here via "index.html". In addition, two short overview documents have been written: "Creating an SDD Transmitter" and "Creating an SDD Receiver".

Package reorganization

Programs written against previous versions of the SDD API will need some minor changes to compile with SDD 2.0.0b7. The following packages are no longer present: its.protocol.frame, its.protocol.sdd, and its.io. The classes they contained have been mov ed to the its.backbone.frame and its.backbone.sdd packages. All the "import" statements at the beginning of .java files should be examined and changed accordingly.

New Receiver programming model

For greater ease of use, the event registration and callback scheme formerly used by SddReceiver and ItsFrameReceiver has been deprecated and will be removed in the next release. Instead, a simpler mechanism is in place which provides notification only t hrough calling methods which can be implemented by a subclass. Programmers should now extend SddReceiver rather than create an instance of it. See the documentation for its.backbone.sdd.SddReceiver for more details.

SDD and firewalls

System administrators may configure firewall software to prevent connections to unknown port numbers, thereby preventing SddReceiver from making a connection to an SDD stream. This circumstance can now be detected: the NoRouteToHostException is now thro wn from the SddReceiver constructor. This will require a small change to any code that creates an SddReceiver object, to handle the new exception.

ErrorLogger

The its.util.ErrorLogger class is now used by the SDD API to give any status messages, warnings, and error messages. However, in order for the messages to be visible on the console or appear in a log file, an instance of ErrorLogger must be created by th e application. See the Redistributor application for an example of how to do this. Enabling the log file is very important for applications that intend to keep running for a long time.

SDD Java API Release 2.0.0 beta 6

sdd2.3.0 | sdd2.2.0 | sdd2.1.0 | sdd2.0.0 | sdd2.0.0b5

09/02/98

Overview

In this release, SDD parsing functionality is enabled in the receivers. The receiver will exit if it detects a poorly-formed schema or contents frame. This is an important step towards enabling creation of SDD transmitters for new data sources.

Bugs fixed

Other changes

 

SDD Java API Release 2.0.0 beta 5

sdd2.3.0 | sdd2.2.0 | sdd2.1.0 | sdd2.0.0 | sdd2.0.0b6

03/1/98


[ITS UW Logo] ITS Backbone | Current Software Library | Software Archive | Supporting Documents | ITS UW Home Page | SmartTrek Home Page