LIGHTSTREAMER CHANGELOG
Lightstreamer Server
SDK for JMX Extensions
SDK for Java Adapters
SDK for .NET Adapters
SDK for Adapter Remoting Infrastructure
SDK for HTML Clients
SDK for Flash Clients
SDK for Flex Clients
SDK for Silverlight Clients
SDK for iOS Clients
SDK for Android Clients
SDK for BlackBerry Clients
SDK for Windows Phone Clients
SDK for Java ME Clients
SDK for Java SE Clients
SDK for .NET Clients
SDK for Generic Clients
Lightstreamer Server
4.1.1 build 1513.1.15
(Compatible with the deployment structure of the previous version)
(Compatible with configuration files for the previous version)
Released on 10 Jan 2013

Fixed a bug that could have caused data inconsistency or system vulnerability issues in some client environments and under particular coinditions.

4.1 build 1513.1.14
(Compatible with the deployment structure of the previous version)
(Compatible with configuration files for the previous version)
Released on 9 Aug 2012

Fixed the handling of uncommon pathnames in the utility scripts for using the Server as a service under Windows.

Fixed the documentation of the <license_path> configuration element with the extensions introduced in build 1513.1.4

Enlarged the "SNAPSHOT" thread pool (devoted to dispatching of snapshot contents) so as to match the number of available processors, if greater than 10.

Fixed a bug, introduced in version 3.6, which affected subscriptions by the HTML Client Library to items in MERGE mode in case their snapshots was also requested; the update representing the snapshot could have been notified as not being a snapshot by the library.

Fixed a bug in the RelativeFileAppenders$RollingFileAppender implementation: the <FileNamePattern> specified in the <rollingPolicy> were interpreted relative to the launch directory instead of being interpreted relative to the log configuration file location as them should have been. Now the paths specified in the <FileNamePattern> elements are correctly interpreted. On the other hand note that the <File> element was already correctly interpreted and thus its handling is not changed.

4.1 build 1513.1.12
(Compatible with the deployment structure of the previous version)
(Compatible with configuration files for the previous version)

Introduced the support for dinamically reconfiguring the maximum frequency of currently subscribed items, that can be leveraged by client libraries.

Introduced the optional "randomize" attribute for both the <default_keepalive_millis> and <max_idle_millis> configuration elements, that can be used in particular scenarios; see the descriptions in the configuration file.

Fixed a bug in the handling of the <allowed_domain> setting, by which the check could have been avoided by purposedly altering the Html Client Library.

Clarified how resampling works for the LightstreamerMonitorText and LightstreamerMonitorTAB loggers configuration.

4.0.3 build 1513.1.11
(Compatible with the deployment structure of the previous version)
(Compatible with configuration files for the previous version)
Released on 6 Apr 2012

Adopted java 7 as the recommended SDK runtime environment and as the factory setting in the launch scripts.

Added the <max_streaming_millis> configuration flag; see the configuration file for details.

Fixed a bug, introduced in version 4.0, affecting polling sessions; under particular conditions of slowness, poll requests could have returned immediately even with no data available, thus causing an unneeded increase of the overall frequency of requests.

Fixed a bug affecting polling sessions; under particular conditions of fastness, poll requests could have returned with no data even if data were available, thus causing data delivery to be delayed.

Fixed the supplied scripts for running the Server as a Windows service, which, under some conditions, could have failed to correctly install the service.

4.0.2 build 1513.1.9
(Compatible with the deployment structure of the previous version)
(Compatible with configuration files for the previous version)

Fixed an issue with potential conflicts regarding proxy settings when a trial license is used; if proxy settings are supplied in order to access the LS trial license validation server, they could also affect connections performed by the Adapters.

4.0.2 build 1513.1.8
(Compatible with the deployment structure of the previous version)
(Compatible with configuration files for the previous version)
Released on 6 Dec 2011

Fixed a bug introduced in version 4.0 which could have caused an html client to receive wrong data in case of issues with the use of XHR during a polling session. The error was serious, but the triggering environmental conditions were very rare.

Fixed a potential race condition which could have led to an internal thread deadlock. A high rate of socket disconnections (about 100 per second) was the only triggering scenario observed.

Changed, from 6666 to 6600, the factory setting for the port to be used for accessing the HTML-based JMX interface; in fact, access to port 6666 could be restricted by some browsers because of conflicts with known protocols.

4.0.1 build 1513.1.4
(Compatible with the deployment structure of the previous version)
(Compatible with configuration files for the previous version)

Extended license configuration support by allowing to specify multiple <license_path> elements, so that, at any moment in the Server life, at least one should refer to a valid license.
Slightly changed the log upon license refusal.

4.0.1 build 1513.1.3
(Compatible with the deployment structure of the previous version)
(Compatible with configuration files for the previous version)
Released on 20 Jul 2011

Fixed a bug that could have caused read failures on TLS/SSL connections upon long requests.

4.0 build 1513.1.1
(Compatible with the deployment structure of the previous version)
(Compatible with configuration files for the previous version)
Released on 8 Jul 2011

Fixed and changed the timestamp format on the audit logs. COMPATIBILITY NOTE: existing and new audit log lines can coexist with no problems.

Introduced the execute permission flags for launch scripts also in the zip version of the package.

4.0 build 1513
(No longer compatible with the deployment structure of the previous version; see the compatibility notes below)
(No longer compatible with configuration files for the previous version; see the compatibility notes below)
Released on 7 Jun 2011

Wholly revised the implementation of the logging subsystem, which is no longer based on log4j, but rather on the "logback" libraries. This has consequences:

  • on the libraries to be deployed in the "lib" folder;
  • on the launch scripts, which have to point to the new libraries;
  • on the configuration file, where the new mandatory <logback_properties> element is needed;
  • on the logging configuration file, which has to be in the logback format.

COMPATIBILITY NOTE: existing deployment structures have to undergo all the above changes in order to run the new Server. In particular, this applies to the configuration of the Java Service Wrapper utility, if used, which should specify the new libraries (though the new configuration is not shown, as we now suggest and include a different tool for the same purpose, as specified in a separate point below).
Converting an existing configuration file so that the same log is generated by the new Server implies several steps; you can see the comments in the new Server log configuration file and compare the new file with the old one for hints. Possible steps are:

  • converting the log4j syntax into the logback syntax; note, for instance, that file appender properties are now defined through filters and that the pattern for dates may need quotes; unfortunately, we cannot point you to a complete guide;
  • changing the class names of the custom appenders provided by Lightstreamer;
  • reconfiguring LightstreamerMonitorText and LightstreamerMonitorTAB;
  • in order to address FATAL level log, look for ERROR log with a "FATAL" marker;
  • replace any reference to the custom TRACE#com.lightstreamer.log4j.TraceLevel level with DEBUG level; in fact, the Server now uses DEBUG level for that log; note that internal log previously issued at DEBUG level is now issued at TRACE level.
COMPATIBILITY NOTE: It is possible that some configuration detail cannot be ported exactly. This implies that there may remain a few layout differences between an old and a new log file; even using the default configuration file, note that all TRACE log is now issued as DEBUG log.
Moreover, some ready-made appenders and filters may no longer be available and some custom appenders, loggers or filters may not be portable in a natural way.

Introduced the support for compression in responses, through the "gzip" HTTP content encoding. See <use_compression> and <compression_threshold>. For the web server support, see the tags with the same names, but inside the <web_server≶ element.
Extended the adoption by default of HTTP 1.1 and chunked encoding in responses, in order to allow for compression. Introduced the <use_http_11> configuration element, in addition to <use_chunked_encoding>, for finer control.
Improved the management of HTTP 1.1 specific request details, including the support for chunked encoding and gzip or deflate compression on the incoming request body. This requires that HTTP 1.1 is configured for responses, through <use_http_11>.
Changed the suggested settings for both HTTP 1.1 and chunked encoding in responses, to force using them.

Modified the behavior of the unfiltered COMMAND mode; now edition-related frequency limits are applied to single keys. As a consequence, the order of updates related with different keys may be inverted in some cases. COMPATIBILITY NOTE: if existing clients need that the order of the updates is preserved even across different keys, the new <preserve_unfiltered_command_ordering> configuration flag can be used to restore the previous behavior.

Improved the management and revised the format of the produced audit log files; see README.TXT in the "audit" folder for details.
Improved the search for a suitable file for writing audit log; if necessary, it may be created in the configuration directory. However, the availability of an audit log file is now required on startup. COMPATIBILITY NOTE: if writing audit logs currently fails, the configuration should be fixed, otherwise the Server won't start.

Addressed a compatibility issue with Android Browser and Skyfire on Android.

Addressed a compatibility issue with Silverlight on Windows Phone.

Revised the syntax of the <user_agent> element under <content_length>. See the new <special_case> element. COMPATIBILITY NOTE: Existing <user_agent> elements have to be converted.
Revised the syntax regarding the <use_chunked_encoding> configuration flag; it was inside the <content_length> element, while now it must be defined at the same level. COMPATIBILITY NOTE: An existing <use_chunked_encoding> setting should be moved. However, the old syntax is still recognized.

Revised the support for launching the Server as a service under Windows. The Java Service Wrapper utility has been dismissed in favour of the NSSM tool. The new tool also supports 64 bit environments. See Lightstreamer/bin/windows/README.TXT for details.

Revised the logging at startup, to ensure that the "LightstreamerLogger.init" and "LightstreamerLogger.license" loggers log all the relevant startup-related log and that error stack traces are only available at DEBUG level.
Changed the suggested logging configuration so that only the aforementioned loggers are associated to the console.

Extended the syntax checks in the main configuration file and the Adapater Set configuration files.

Improved the performances of the internal thread pools.
Fixed a bug that, under particular conditions, could have caused a thread pool to block if all pooled threads had failed with unchecked exceptions.
Changed the default size of the SERVER thread pool, in order to take advantage of multiprocessor machines.

Fixed a bug that could have caused the parsing of the "adapters.xml" files to fail. The bug could be triggered by the use of long multiline parameter values.

Improved the checks for unexpected behavior of the NIO selector implementation.
Dismissed the use of synchronous sockets as a recovery for asynchronous socket initialization issues; a thread pool related with this case has also been dismissed.

Extended the Monitoring Data Adapter. The UPDATES.TOTAL_IN and UPDATES.TOTAL_OUT fields in the monitor_statistics item and the STARTUP_TIME field in the monitor_identification item are now available; see the documentation in the General Concepts document for details.

Revised and extended the supplied Monitor Console with information on the total number of inbound and outbound events since the server startup and with the server startup time; the same changes have been applied to the Monitor Demo.

Removed a few external libraries, no longer needed.

Increased from 2 to 5 seconds the suggested setting for the probe time.

Changed and renamed the logo image supplied by the Server. The suggested error page (namely, ErrorPage.html under the "conf" folder) has changed consequently. COMPATIBILITY NOTE: an existing deployment in which the supplied ErrorPage.html (or a custom error page based on the supplied logo) is configured (see the <error_page> configuration element) should be updated.

4.0 a4 build 1495
(May not be compatible with the deployment structure of the previous version; see the compatibility notes below)
(No longer compatible with configuration files for the previous version; see the compatibility notes below)
(May not be compatible with custom applications which take advantage of the included Monitoring Data Adapter; see the compatibility notes below)
Made available as a prerelease on 4 Feb 2011

Discontinued the support for java 1.4 SDK and runtime environment. Java 1.5 or later is now required. COMPATIBILITY NOTE: installations of the Server still based on a java 1.4 JVM have to be upgraded. Existing Adapters compiled with a java 1.4 SDK don't need to be upgraded.

Introduced a new optional thread pool specifically devoted to the management of the sendMessage requests received from the client. See <messages_pool> in the predeployed adapters.xml for details.

Improved the checks for connections closed on the client side. This allows for faster disposal of resources and subscriptions held by the connections and the related sessions.
The new checks are not based on the keepalives used for streaming connections, hence their effectiveness is not related with the keepalive settings (the keepalives are still useful for the clients).
A new "CHECK" selector type is used for this task.

Revised the configuration elements for the handling of streaming and polling connections:

  • The mandatory <max_keepalive_millis> has been introduced; it replaces <max_idle_millis> for the streaming case; if <max_idle_millis> hadn't been defined, the value previously set for <max_still_millis> should be used.
  • <max_idle_millis> is now mandatory and only related to the polling case; if it hadn't been defined, the value previously set for <max_still_millis> should be used.
  • <max_still_millis> has been dismissed; in relation to the streaming case only, the new mandatory <default_keepalive_millis> has to be defined in its place.
COMPATIBILITY NOTE: the configuration file has to be extended with the new mandatory settings. If the values are assigned as suggested above, nothing will change; moreover, in this case, if <max_still_millis> is left, old Server versions will keep working in the same way.

Revised the syntax for the configuration of external access to JMX. The new <html_adaptor>, <rmi_connector> and <jmxmp_connector> sections now replace the old subelements of the <jmx> section. This allows for extended features introduced in the JMX SDK.
COMPATIBILITY NOTE: the old configuration settings, though no longer documented, are still handled; however, if one of the new sections is introduced, the corresponding old settings must be removed.

Improved the JMX support.
Allowed the configuration of the communication port used by the RMI connector and set, by default, this port as the same port used to access the connector. Previously, a random port was used, which could cause problems with firewalls. Allowed the configuration of the hostname used by the RMI connector for remote access support; this avoids the need to set the "java.rmi.server.hostname" JVM property.
Allowed the configuration of a specific local IP address on which the RMI connector is allowed to operate.
Extended the RMI connector, to also expose the JVM's default JMX agent, which supplies the JVM's platform mbeans.
Added the support for TLS/SSL communication on the RMI connector for Presto and Vivace editions; keystore specification and cipher suites filtering are supported.

Introduced the possibility of suppressing the "Session" MBeans from the JMX support, through the new <disable_session_mbeans> configuration element. This may improve the performances under critical load.

Updated the included libraries for jmx support. A new library has been added.
COMPATIBILITY NOTE: The provided launch script has been extended. Existing custom launch scripts should be extended in a similar way.

Extended https connections management, by adding the support for client TLS/SSL certificates. See <use_client_auth>, <force_client_auth> and <truststore> in the Server configuration file.

Simplified the configuration of the JMXMP port used by the stop script.

Discontinued the support for the <max_load> configuration element.
COMPATIBILITY NOTE: If configured, the related load limit may no longer be applied.

Discontinued the support for the main level <port> and <ssl_port> configuration elements.
COMPATIBILITY NOTE: If configured, they may be ignored by the Server; the settings should be replaced with the equivalent forms based on <http_server> and <https_server>.

Discontinued the support for the main level <backlog>, <listening_interface>, <ssl_backlog>, <ssl_listening_interface> and <keystore> configuration elements, which provide defaults for the various <http_server> or <https_server> compound elements.
COMPATIBILITY NOTE: If configured, they may be ignored by the Server; each setting should be copied into any related compound element in which it is not already overridden.

Introduced the <delta_delivery> configuration element, whose meaning is the opposite of <redundant_delivery>. The latter element has been discontinued.
COMPATIBILITY NOTE: If configured, <redundant_delivery> may be ignored by the Server; <delta_delivery> should be used instead.
Significantly reduced memory usage in case "delta delivery" is disabled.

Introduced the <sendbuf> configuration element, which allows for overriding the small TCP buffer size imposed on streaming connnections.
Optimized the use of TCP buffers on reused connections.

Introduced the <reuse_pump_buffers> configuration element, which allows for control on the per-session memory allocation requirements.
Reduced the overall per-session memory allocation requirements.
Reduced the per-update memory usage.
Improved the performances upon bursts of updates from the Data Adapter.

Optimized the responses to requests from the HTML Client Library. This may reduce delays at connection startup in case of slow clients or network.

Forced the completion of the content-length for most streaming responses before asking for a rebind. This also allows for leaving the connection open and available for reuse by the clients.
Suggested a higher default (namely 500000) for the response content-length.

Fixed a bug in the Monitoring Data Adapter. The PUMP_WAIT.NOTIFY field for the monitor_statistics item also included wait time due to tasks enqueued on a thread pool with no free threads.
Extended the monitor_statistics item by adding the UPDATES.EVENTS_SEC, UPDATES.TOTAL_LOST and POOL.QUEUE_WAIT fields; see the documentation in the General Concepts document for details.
Removed the CLIENTS.LAST_REFUSED_CONN field from the monitor_statistics item.
COMPATIBILITY NOTE: No issue is expected, as the field was never activated.
Removed the PUMP_WAIT.EVAL field from the monitor_statistics item, as the supplied heuristics has never proved better than PUMP_WAIT.SLEEP and PUMP_WAIT.NOTIFY.
COMPATIBILITY NOTE: Custom applications that get this statistics from the special "MONITOR" Data Adapter may need to be changed.

Revised and extended the supplied Monitor Console, with information on the outbound update throughput and on lost updates for unfiltered subscriptions; the same changes have been applied to the Monitor Demo.
Similarly, revised and extended the Internal Monitor log.

Dismissed the <text_monitor> configuration element. The Internal Monitor log can still be suppressed through the logging configuration file.
Provided the new com.lightstreamer.log4j.MonitorLogger logger class to better control the logging; it allows for reducing the frequency and suppressing the log at all; see the inline comment in the log configuration file.
Changed the factory configuration, to activate the "text" style monitor, though with a reduced frequency and on the log file only.
COMPATIBILITY NOTE: If the Internal Monitor log is explicitly disabled (or partially enabled) through <text_monitor> but potentially enabled by the loggers configuration, the latter should be made more restrictive.

Changed the internal default for the <use_protected_js> configuration setting to Y. Note that the factory setting for this flag in the configuration file has always been Y.
COMPATIBILITY NOTE: if the setting for this flag had been commented out, then adding an explicit setting as N would be needed.

Fixed the handling of TLS/SSL sockets, that, in some cases of normal close, might have caused a warning about a refused TLS/SSL renegotiation request to be issued.

Addressed compatibility issues which might have prevented streaming from being supported by iOS clients.

Improved the protection against Data-Adapter-originated memory leaks.

Improved the robustness upon unexpected internal exceptions.

Removed possible misleading log messages about NIO infrastructure not being available.

Added log of session closing. The same logger that reports session opening (i.e. the logger of client requests) is used.

Removed spurious cases of the "Update discarded" message. Also downgraded the message at INFO level, as no malfunctioning is involved.

Improved the logging of issues in TLS/SSL keystore loading.

Added notes in "SSL Certificates.pdf" on converting existing TLS/SSL certificates in PKCS12 format to the JKS format requested by Lightstreamer Server.

Clarified that the provided "stop" script only works after the initialization of the Server has completed.

3.6.1 build 1470
(Compatible with the deployment structure of the previous version)
(Compatible with configuration files for the previous version)
(May not be compatible with custom applications which take advantage of the included Monitoring Data Adapter; see the compatibility notes below)

Introduced decimal digits in the values for the ITEMS.FILTERED_EVENTS_SEC and ITEMS.EVENTS_SEC fields supplied by the Monitoring Data Adapter for the monitor_statistics item.
COMPATIBILITY NOTE: Custom applications that include the special "MONITOR" Data Adapter in their Adapter Set may need to be changed to take into account the new value format.

Discontinued the "session timeout" (i.e. the wait, governed by the <session_timeout_millis> configuration element, done before closing a session) in all cases in which the session termination is caused by an explicit disconnection by the client. This wait causes the count of active session to be higher then real and it was of no benefit in this case.
Introduced a "subscription timeout" (i.e. a wait before unsubscribing from the items currently held by a closing session). This wait is governed by the <session_timeout_millis> and the newly introduced <subscription_timeout_millis> configuration elements. This wait applies to all cases of session closing, including cases in which the session timeout has been discontinued and cases in which it has never been applied.
Suggested a higher default (namely 10000) for the session timeout only.
Revised the session closing process to be more robust. Unchecked exceptions thrown by the Metadata Adapter notification methods can no longer interrupt the closing process.

Added the support for the extensions in the sendMessage client methods.

Fixed a bug that, in case of a burst of sendMessage requests on the same sequence from the web client, might have caused some requests to be logged as duplicated and not enqueued, until a new submission attempt by the client

Fixed a bug that could have caused non ASCII or multiline custom messages supplied to CreditsException to be forwarded to the client in an illegal way, thus possibly causing errors on the client side.

Fixed a bug that, in case a selector had been used for items to be subscribed in an unfiltered mode, would have caused rejected events to be notified to the client as lost events.

Improved the recovery of incorrect "command" field values in updates received from the Data Adapter for items in COMMAND mode.

Extended the factory configuration by setting <rmi_connector_port> to the 8888 port. This setting allows JMX management through tools like jconsole and jvisualvm. See notes in PRODUCTION_SECURITY_NOTES.TXT.

Used INFO level instead of WARN for logging notices on the initial population of selector-related thread pools.

3.6 build 1463.2
(Compatible with the deployment structure of the previous version)
(Compatible with configuration files for the previous version)
Released on 16 Apr 2010

Fixed a bug, introduced with build 1463, which could cause the internal thread pool configured for subscription management to fill up after a SubscriptionException was thrown by a Data Adapter. In particular, all client subscription requests received after the failed one caused an internal thread to block forever.
This did not affect Remote Adapters, as the Proxy Adapter does not make use of SubscriptionException.

3.6 build 1463.1
(Compatible with the deployment structure of the previous version)
(Compatible with configuration files for the previous version)
Released on 14 Apr 2010

Fixed a compatibility issue with Flex Native AS library version 1.2 and 2.0, which was introduced in build 1463, such that any call to sendMessage from the client would have caused the whole library to stop working correctly.

Fixed a compatibility issue with Flex Native AS library version 1.2 and 2.0, which caused, upon the very first call to sendMessage from the client, a 1 second delay before the message processing.

Revised the logging configuration of the included demos.

3.6 build 1463
(Compatible with the deployment structure of the previous version)
(Compatible with configuration files for the previous version)
Released on 16 Feb 2010

Separated the management of external requests into subtasks related with request parsing, authentication, authorization/execution and subscription.
Also separated on different subtasks the authorization/execution details for different tables; hence, compound client requests are now managed in parallel.
Also separated on different subtasks the subscription management for single items; hence, all subscription requests to the Data Adapter are performed in parallel and asynchronously with respect to the client request; this means that the subscription notifications could now reach the client before the Data Adapter "subscribe" call has been issued (note that the "subscribe" outcome has never been notified to the client).

Extended the Adapter Set configuration to define optional thread pools devoted to hosting request management subtasks related to the Adapter Set.
Subtasks related with authentication and with specific Data Adapters in the Adapter Set can also be managed by dedicated thread pools.
See the sample "adapters.xml" file in the predeployed demo for details.
Previously, request management was entirely performed on the "Server" thread pool; this is still the default.
Monitor statistics still aggregate all the optional pools with the "Server" pool.

Introduced multiple NIO selectors devoted to read, write and TLS/SSL handshaking operations instead of one for each operation type. See also the new <selector_max_load> configuration element.
Added new statistics to the monitoring Data Adapter related to IO operations.
See NIO.* in the General Concepts document for details. The new statistics have also been included in the monitor log.

Relieved the bandwidth constraints from the initial part of the session; this speeds up the page startup, unless physical bandwidth constraints are also in place.

Revised the management of client messages. Increased, from 1 to 30 seconds, the internal timeout used to ensure proper ordering of notifyUserMessage calls for web clients; the timeout can be configured through the <missing_message_timeout_millis> element.
A shorter timeout can be specified by web clients with each message.
Moved message related logging to the new LightstreamerLogger.pump.messages subcategory.

Ensured that, upon subscription towards the Data Adapter, the client that causes the subscription receives the update flow exactly as it is sent by the Data Adapter. Previously, the very first updates could have been accumulated into the snapshot before being received (and could have been lost, if the snapshot were not requested). However, this behavior was consistent with the interface specifications, hence it was not a bug.

Removed the limitations posed by <max_buffer_size> for events waiting to be sent to the client, if they belong to a COMMAND mode item snapshot.
Fixed a bug that affected items requested in COMMAND mode, with snapshot and unfiltered dispatching. In that case, the end-of-snapshot notification was not sent to the clients.

Introduced the support for "chunked" transfer encoding in the HTTP response to HTTP/1.1 requests, limited to stream connections.
See the <use_chunked_encoding> configuration element for details.

Discontinued the audit logs generation; audit-related configuration is no longer needed.

Introduced configuration settings which allow some control over the HTTP headers of the provided responses. See <response_http_headers>.

Fixed a bug that might cause the first event received for a MERGE subscription to lose the snapshot flag upon dispatching to a Web client. This caused the isSnapshot method in the UpdateItemInfo object to return false.

Fixed a bug that provoked incorrect http headers on SYNC ERROR responses; the response, however, were still accepted by the clients.

Fixed a bug that might cause a "Content-Length setting of xxx too small ..." message to be issued when not necessary. That could happen in POLLING mode with a very high update rate.

Deprecated the <max_clients> configuration element, which was based on the overall number of connections, in favour of the new <max_sessions> element, which is based on the number of sessions.

Introduced checks on the wait time of tasks on the internal thread pools.
See the new <max_task_wait_millis> configuration element for details.

Added checks for incorrect "command" field values in updates received from the Data Adapter for items in COMMAND mode. Some cases that were discarded are now accepted.

Improved the suggested "ulimit" setting on the Unix/Linux launch script.
Improved the handling of accept errors, like "Too many open files", and avoided the risk of a strict loop of accept attempts in that case.

Reduced the response size for web client control requests.

Fixed a bug in the management of thread pool "max_free" settings: a 0 value was treated as "unlimited" instead of 0.

Extended the support for "connection end" notifications issued to the clients.
In most cases in which an unknown cause were declared, now a specific cause code is supplied.

Used the response completion time instead of the response starting time in the "Date" response HTTP header upon long polling requests.

Revised some error messages.
Reduced the logging for some common IO errors.
Changed the format of requests logging. HTTP POST requests are no longer logged in a HTTP GET syntax.
Added trace log of details for all requests and responses and moved log of details for refused requests to info level.
Extended the trace log of updates received from the Data Adapter.

3.5.1 build 1436
(Compatible with the deployment structure of the previous version)
(Compatible with configuration files for the previous version)

Introduced the support for the Silverlight client SDK.

Disabled the heuristic client availability check for most sessions. After the latest changes in client-side management of the session, too many redundant rebinds would have been needed.

Fixed a bug that might cause old versions of J2SE, .NET and J2ME client libraries to issue syntax error messages upon session closure forced on the Server side.

Fixed a bug that made the recent extension "Addressed a compatibility issue for Flex clients running on Opera or Safari browser..." ineffective.

Fixed a bug on request management triggered by a very small content length setting.

Fixed a bug in the management of unchecked exceptions during streaming.

3.5 build 1428.4
Released on 28 Jan 2009

Addressed a compatibility issue for Flex clients running on Opera or Safari browser, which perform an initial buffering of the response, which could prevent streaming connections from working. This requires Flex client library 1.2 build 47 or greater in order to be effective.

Improved the logging of unexpected exceptions.
Introduced verbose notifications for exceptions thrown by Adapter methods.

Added logging for updates lost upon unfiltered subscriptions (which include RAW mode and ADD/DELETE in COMMAND mode).

Suppressed the "Unexpected empty selected list", "Unexpected empty read on a readable socket" and "Unexpected empty write on a writable socket" warnings for not significant cases.

Revised and extended the DOCS-SDKs\Clustering.pdf document, which provides suggestions about clustering configuration.

3.5 build 1427

Fixed a compatibility issue introduced in build 1422, which caused the Server not to work with java 1.4 SDK.

Fixed a bug that might cause the first event after rebinding to a streaming session to be lost. This could only happen for web clients and for events that happened to be bigger than all the preceding ones.
Also added full support for big events; previously, events bigger than the configured content-length might cause the session to be dropped.

Fixed a bug that might cause a rebind request issued when a session had just timed out to be refused with a "session forcibly closed by the Server" notification. That notification prevented automatic recovery by the client.

Discontinued the partial hiding of the license ClientID, which is returned by the Internal Monitor; the full ClientID is now returned.
Note that the access rights to internal Monitor data can (and should) be configured.
This also fixes a bug triggered by short ClientIDs.

Fixed a bug in the "total subscribed items" count returned by the Internal Monitor. Items for which a SubscrException were thrown by "subscribe" were added and never removed from the count.

Fixed a minor unconformance with the HTTP 1.0 protocol for some HTTP error code responses.

Improved the management of rebind requests from the Web Client Library, to handle duplicated requests that may be issued by some user agents.

Introduced the "LightstreamerLogger.connections.ssl" logging subcategory, to differentiate log related to TLS/SSL activity.

Added full support for the internal monitor client when the Server is configured to run in a cluster. Previously, the internal monitor could only be accessed through the specific address used by external clients.
Extended DOCS-SDKs\Clustering.pdf with details.

3.5 build 1422
Released on 23 Sep 2008

Introduced a basic support for multiple Data Adapters that feed the same client session. A Metadata/Data Adapter Pair can now be generalized to an "Adapter Set", made up of a single Metadata Adapter and one or multiple Data Adapters.
The configuration of an Adapter Set is made possible by an extension of the "adapters.xml" syntax; the <data_provider> element can be included multiple times and the new "name" attribute must be used to uniquely identify the Data Adapters within the Adapter Set. The new <install_dir> element can be used inside the <metadata_provider> and <data_provider> elements in order to relocate and distinguish the installation directories of the various Adapters. See the included deployment examples for details.
The configured name should be used by the clients to identify the Data Adapters that supply the specific requested items. For backward compatibility, a missing name in the configuration file or in a client request defaults to the "DEFAULT" name.
Extended the log in the Adapter initialization phase. Data Adapters are now uniquely identified in the form: AdapterSetName/DataAdapterName

Changed the policy for Data and Metadata Adapter loading. All the configured Adapters are now loaded in parallel, while before they were loaded in sequence. Note, however, that the previous Adapter loading policy was never declared.

Introduced the support for inclusion of the internal monitoring Data Adapter in custom Adapter Sets. See the General Concepts document for documentation on the available items and fields.
Directly accessing the pre-installed "MONITOR" Adapter Set from custom clients is now deprecated. The "MONITOR" Adapter Set is only needed by the pre-installed Monitor Console. The pre-installed "MONITOR" Adapter Set is still needed by the pre-installed Monitor Console.

Extended the Internal Monitor front-end, with information about the local instance of the Server. Similarly, configuration details of the configured server sockets are available through the internal monitoring Data Adapter.
Fixed a bug on the Internal Monitor front-end, which caused the Server address not to be shown after a disconnection and reconnection.

Supported the extension to the "notifyUser", "notifyNewSession", "getItems" and "getSchema" Adapter interface methods.
See the various Adapter interface SDKs for details.

Introduced the <adapters_dir> and <shared_dir> configuration elements, which help deploying the Server with a custom directory structure.

Introduced the <base_url_path> configuration element, to customize the URL path to be used for push requests by web clients (whose default is still /lightstreamer).

Improved the management of sendMessage for Web Clients. The possibility of discarding messages that have come too late has been minimized.

Extended the custom LSProducer log4j appender to accept generic appender configuration elements (but for <layout>).

Fixed a bug that might cause the first update after the snapshot to be filtered if it came very close to the snapshot and the buffer size was 1.
This filtering would have been undesirable if the next update had happened to come after a significant time.

Fixed a bug in the parsing of the "adapters.xml" files; the element values are now trimmed before use.

Fixed a bug that might disturb the slowing algorithm provided by the Web Client Library, which can be enabled by a client page through setSlowingEnabled.

Improved the handling of very frequent pollig requests.
Improved the packet dimensioning heuristics for the case of asynchronous polling with no minimum interpoll time protection set.
Moved the logging of notifications of polling requests from the "LightstreamerLogger.requests" category to the "LightstreamerLogger.requests.polling" subcategory, so that it can be selectively filtered out.
Added on the "LightstreamerLogger.webServer" category the logging of notifications of requests for static resources related to push requests.
Changed the suggested default for the "LightstreamerLogger.webServer", "LightstreamerLogger.connections" and "LightstreamerLogger.requests.polling" to WARN level.

Changed the default configuration setting for <session_timeout_millis>, from 30000 (only useful with very slow clients/networks) to 5000 ms.

Suppressed the error log for TLS/SSL handshake errors caused by the a client side connection reset.

Changed the default installation of the Server in order to host new demos; these include existing HTML and Flash/Flex examples and brand new demos.
Both the pre-deployed Adapter Set and the pre-deployed front-end pages have been extended; the deployment directory structure has also been revised.

3.4.8 build 1398
Released on 6 Mar 2008

Fixed a bug affecting the dispatching of events in the following cases:

  • Items requested in DISTINCT mode with snapshot (only snapshot events could be affected)
  • Items requested in DISTINCT and RAW mode at the same time
  • Items requested in COMMAND and RAW mode at the same time (only non-snapshot ADD and DELETE events could be affected)

In all those cases, the bug might cause some events to be sent with null field values.
Note that the bug always caused the following warning to be logged: "Data type other than String or byte array received in update event"

Fixed a bug that might cause configuration subelements to be missed, in case they were defined immediately after the containing elements, as in <ELEM><SUBELEM>val</SUBELEM></ELEM>.
Commonly used configuration files were not affected, as elements and sublements are usually placed in different lines of text.

Hidden the LS_password argument value from the log of client requests for new sessions.
Added the <show_password_on_request_log> configuration element to override.

Changed the session ID generation algorithm.

3.4.7 build 1395
Released on 11 Feb 2008

Inhibited socket reuse when refusing a request for a new session because of the load shedding mechanism.

Added a configuration element to customize the error page, which is returned upon unexpected request URLs. See <error_page> in lightstreamer_conf.xml and the basic "ErrorPage.html" page added under "conf".

Introduced a simple variable-expansion feature for the Server configuration file. See the introduction comment in lightstreamer_conf.xml.

Fixed a bug which caused a logging operation to throw an exception. This only happened when the DEBUG level or the custom TRACE level were enabled on the LightstreamerLogger.preprocessor category. This also caused the processing of all updates to fail.

3.4.6 build 1393
Released on 4 Jan 2008

Revised and simplified the error page, which is returned upon unexpected request URIs.
Extended the scope of the new <server_tokens> configuration element to some error messages returned by the Server, which still reported the Server version number.

3.4.6 build 1391
Released on 6 Dec 2007

Excluded the logging of the health check requests from the filtering imposed by the <no_logging_ip> configuration element.

3.4.6 build 1390

Added the <server_tokens> configuration element, that allows the Server version number to be excluded from the "Server" HTTP header response.

Improved the checks for incorrect answers from the Data or Metadata Adapter.

3.4.6 build 1389
Released on 22 Nov 2007

Extended the notifications to web clients for sessions closed on the server side to the case of polling, when the closure occurs between two polling requests. In these cases, the Web Client Library version 4.2.2 or newer will no longer try to recover by opening a new session.

Fixed a bug which affected the notifications to web clients for sessions closed on the server side; the bug prevented them from reaching the client in case a rebind had taken place.

3.4.6 build 1387

Fixed a bug which might cause error notifications to web clients (intended for the onServerError event handler) to fail and issue a javascript error.

3.4.6 build 1385
Released on 15 Nov 2007

Changed the format of the included build.number file.

Introduced the notification to the clients of the name of the server socket which handles a session request (the name is the one assigned through the <http_server> or <https_server> configuration element).

Introduced a special /lightstreamer/healthcheck request that can be used by load balancers to test the responsiveness of each Server instance in a cluster. See the <healthcheck> configuration element for details.

Fixed a compatibility issue with Nokia Browser, which prevented some client requests from being received by the Server.

3.4.5 build 1383

Changed the policy for the management of the conversion of update event field values to a transferrable format. See the new <force_early_conversions> configuration element for details.

Fixed a compatibility bug that, under particular configuration settings, could lead to a "NoSuchMethodError" in the startup phase if JDK 1.4 were used, thus causing the Server startup to fail.

3.4.5 build 1382

Fixed a bug related to the management of unexpected conditions from the NIO library. In case the "Unexpected empty read/write on a readable/writable socket; forcing a 50 ms pause" message was issued, the pause might be significantly longer.

3.4.5 build 1380

Changed the default configuration for the events_pool_size and pump_pool_size configuration elements. Now each pool starts with one thread for each available processor.

3.4.5 build 1376

Removed a compatibility issue with Flex player under Internet Explorer, which prevented HTTPS connections to Lightstreamer Server from working.

3.4.5 build 1375

Removed redundand calls to the wantsTablesNotification API.

3.4.5 build 1374

Upgraded the included log4j library to the latest version (1.2.15).
The library introduces a new TRACE level, which is not used and should not be confused with the TRACE#com.lightstreamer.log4j.TraceLevel custom level.

Added a check to prevent possible browser-originated duplicated messages upon sendMessage calls issued by web clients.
The check is effective since Web Client Library version 4.2 build 1320.

Introduced a configuration flag to suppress the use of special notifications in order to send unchanged fields to the clients.
See the <redundant_delivery> Server configuration element for details.

Revised and extended the TRACE level logging of request management problems.

3.4.4 build 1369

Added the support for the customization of the choice of a suitable cipher suite operated by the Server upon each new HTTPS connection. See the <remove_cipher_suites> Server configuration element for details.

Removed some elements not related with the supported editions from the default Server configuration file and from this changelog.

3.4.4 build 1364

Fixed a bug on the management of TLS/SSL connections that might cause the writing of very long fields to fail and the whole connection to be closed.

3.4.4 build 1361

Added a workaround for a problem with native Flex clients running under IE, which might cause the start of the streaming to be delayed.
The library for native Flex clients is still to be released at this moment.

3.4.4 build 1360

Revised and extended the implementation of the HTTP protocol, though it is still based on HTTP 1.0 version.
Introduced the "LightstreamerLogger.connections.http" logger, which reports at WARN level each case in which an HTTP header is ignore because of a protocol implementation limitation. It is assumed that no client actually uses those header values. The default configuration of the logger hides such notifications.

Slightly improved the estimation of real bandwidth for text mode connections.

3.4.4 build 1355

Extended the text client interface in order to let the client ask for Server capabilities (see the LS_report_info querystring parameter).

3.4.3 build 1353

Fixed a bug which might cause the initial license check to fail when in the presence of some unusual network interfaces.

3.4.3 build 1352

Changed the policy for the allocation of the IO buffers. The buffers are now allocated in heap space rather than in native space. The IO buffers are usually small (about 1 KB).

3.4.3 build 1351

Revised some details in the text output protocol syntax; forced the use of \r\n as the line separator in the answers to control requests, instead of a system dependent line separator. This ensures better compliance with the protocol documentation in "Network Protocol Tutorial.pdf", with no impact on the existing client libraries.
Fixed some mistakes in the documentation of the various error notifications.

3.4.3 build 1350

Fixed a bug in the embedded Monitor Console that could prevent log lines filtering in case of high logging activity.

3.4.3 build 1347

Added the support for native Flex clients. See the "flex_crossdomain_enabled" element in the Server configuration file for a detailed comment.
The library for native Flex clients is still to be released at this moment.

3.4.3 build 1345

Removed the dependencies on Sun's proprietary APIs.
This required changing the BASE64 enconding/decoding implementation.
This also required changing the user-agent specified in the connection to the proxy if proxy authentication is needed in order to access the Trial License Server.

3.4.3 build 1344

Fixed a bug (that was introduced in build 1321) which might cause the Server to enqueue in an incorrect order events for the same item coming from the Data Adapter within the same millisecond.
The bug only affects events notified by the Data Adapter through any of the "update" methods; the "smartUpdate" methods, available when the SmartDataProvider interface is implemented, are handled correctly.
The bug may also affect events coming within a larger time interval, in case the System.currentTimeMillis implementation precision is broader than one millisecond. For instance, on some Windows systems, the precision is about 15 ms.

3.4.3 build 1340

Introduced a workaround for Sun's bug 6403933 (about NIO implementation), which might cause 100% CPU usage for short intervals in Linux. It replaces a simpler workaround, that forced the NIO thread to sleep for 50 ms in those cases.

3.4.3 build 1337

Fixed a bug in the support for the internal Load Test Toolkit, which, on some machines, might cause errors of a few milliseconds in the measured times; this might even lead to small negative latencies.

3.4.3 build 1336

Fixed an error in the MetadataProviderAdapter javadoc: the getUserSessions method is deprecated.

3.4.3 build 1334

Fixed a bug affecting the management of the HTTP requests with the HEAD method.

Added an embedded limited license for unregistered use.

Revised the log messages related to license check.

3.4.3 build 1331

Improved the protection of the pages supplied by the Server in order to carry user data. See the <use_protected_js> and <allowed_domain> elements in the Server configuration file.
Note: the configuration for the new <use_protected_js> element set in the default Server configuration file assumes Web Client Library version 4.2 build 1309 or above on the client side; in order to support previous versions, just remove the new configuration element.

Fixed a bug on the management of RAW mode and unfiltered dispatching when a maximum frequency limit is imposed by the Edition. This kind of service is no longer refused, but rather it is supported subject to the frequency limit. Note that this may cause significant data latency if the source update frequency is higher than the frequency limit imposed by the Edition.

3.4.2 build 1325

Removed a compatibility issue introduced on version 3.4.2 build 1323 that prevented the Server from running on a 1.4 JVM.

3.4.2 build 1324

Improved security and vulnerability prevention.

3.4.2 build 1323

Fixed a bug that might cause a javascript error on the client in case of unlicensed client version.

Added extensions to the web interface in order to support the new 4.2 Web Client Library. The thick client interface has not changed.

Upgraded the internal monitor pages to Web Client Library version 4.2.
Viewing the internal monitor with the current production, development or demo license may be no longer allowed. The old internal monitor pages can be restored by replacing lib/ls-monitor.jar with the old one.

3.4.1 build 1322

Revised the internal locking strategy, in order to minimize synchronization requirements for the processing of Data Adapter update notifications.

3.4 build 1321

Fixed a bug that affected items requested in COMMAND mode: the end-of-snapshot notification to the client could be delayed until the first update was produced by the Data Adapter.

3.4 build 1320

Fixed a bug that prevented the correct loading of a configuration file starting with a comment node.

3.4 build 1316

Introduced suitable configuration flags for the sizing of the internal thread pool devoted to the management of the client requests. See the sample configuration file for details.

3.4 build 1313

Improved the encoding of special characters in the push stream in order to use less bytes for typical JSON-style data values.

Fixed a bug that might cause the available bandwidth not being completely used in case of polling with an unlimited bandwidth granted to the session.

3.4 build 1309

Extended the logging in case of problems in trial license check.

Moved the native libraries to a single "native" directory, under "lib".

3.4 build 1308

Extended the sample Metadata Adapters (i.e. FileBasedProvider and LiteralBasedProvider)in order to support the configuration, in adapters.xml, of the allowed subscription modes for the various items, inquired by the Kernel through the "modeMayBeAllowed" method.
The default behaviour is still to allow any mode for any item, but this is not recommended, because the Server does not support more than one mode out of MERGE, DISTINCT and COMMAND for the same item. In such a case, the Server would just manage each item in the mode specified by the first Client request it receives for the item.

3.4 build 1307

Tested the compatibility with the new Java 1.6 release.

Extended the support for production licenses on all platforms, if java 1.6 is used to run the Server.

3.4 build 1306

Added the support for production licenses on the x86_64 processors, running either Windows or Linux.

Addressed a compatibility issue with Opera browser, gaining a slight improvement on client-side performances.

3.4 build 1305

Added the <events_pool_size> and <pump_pool_size> configuration elements, that allow the thread pools devoted to the management of the events flow to be sized, based on the number of processors.
The default size of these thread pools has been changed from 10 to 1.

3.4 build 1300

Fixed a bug that prevented the Server to communicate the <request_limit> configuration setting to the web clients for an early check of the length of the requests.

3.4 build 1299

Improved the heuristic strategy adopted by the Server in order to identify connections kept open by intermediate proxies but closed on the client side.

3.4 build 1298

Introduction of Server 3.4 - Web Client 4.1 release.

SDK for JMX Extensions
4.0 build 1513.1.3
(Compatible with Server since 4.0)
(Compatible with custom managers for the previous version)
Released on 20 Jul 2011
4.0 build 1513.1.1
(Compatible with Server since 4.0)
(Compatible with custom managers for the previous version)
Released on 8 Jul 2011
4.0 build 1513
(Compatible with Server since 4.0)
(Compatible with custom managers for the previous version)
Released on 7 Jun 2011

Deprecated the "getQueueStageIOPush" method in the "Load" Mbean, as the "IOPush" thread pool has been dismissed. COMPATIBILITY NOTE: No issue can arise, as the method will just return always 0.

Fixed an error in the count returned by the getCumulFilteredEvents function in the Session MBean for items requested in filtered COMMAND mode; the overall count for the session (i.e. the CumulFilteredEvents property) was correct.

4.0 build 1495
(Compatible with Server since 4.0 a3)
(Compatible with custom managers for the previous version)
Made available as a prerelease on 4 Feb 2011

Extended the AdapterSetMBean to report the current usage of the newly introduced optional thread pool for client message management.

Extended the StreamMBean to report the filtered and lost events cumulated on all the sessions.

Added the support for the dynamic descriptions of the available MBeans and their properties and operations (i.e. the MBeanInfo). The returned description texts may contain HTML markup.

Put a factory limit on the length of the text that can be returned by the UserAgent property in each Session MBean.

Fixed a bug in getExtraWaitMillis in LoadMBean. The returned count also included wait time due to tasks enqueued on a thread pool with no free threads.
Extended the LoadMBean by adding the getAveragePoolQueueWait property, which reports the average wait of tasks submitted for execution by an internal thread pool.

3.6.1 build 1470
(Compatible with Server since 3.6.1)
(May not be compatible with custom managers for the previous version; see compatibility notes below)

Changed from Long to Double the type of various properties that represent averages per second (for instance, inbound events per second). The change involves the Session, Stream and DataAdapter MBeans.
COMPATIBILITY NOTE: Custom managers that use these properties may need to be changed.

Revised, extended and completed the counters of requests, connections and sessions in the Resource MBean; the properties that were still unimplemented are now managed, but some of them have been renamed and some have been dismissed.
COMPATIBILITY NOTE: Custom managers already predisposed for the use of the still-to-be-implemented properties may need to be changed.
Completed the Resource MBean, by supplying the username related properties, previously unimplemented.

Revised, implemented and extended the methods for consulting the Server configuration elements from the Server MBean; the "getConfigFile" method has become an operation.
COMPATIBILITY NOTE: Custom managers already predisposed for the use of "getConfigFile" may need to be changed.
Completed the Server MBean by implementing the "stop" operation.
Fixed an incorrect management of the disableIP and disableHostname operations in the Server MBean; the currently active connections pertaining to clients being disabled are now closed as well, as stated in the documentation.

Revised, extended and completed the counters of the different types of requests in the Session MBean; the properties, that were still unimplemented, are now managed, but some of them have been renamed.
COMPATIBILITY NOTE: Custom managers already predisposed for the use of the still-to-be-implemented properties may need to be changed. Revised and implemented the counters of lost and filtered events in the Session MBean; the get-by-item operations have been extended.
COMPATIBILITY NOTE: Custom managers already predisposed for the use of the mentioned get-by-item operations may need to be changed.
Revised and extended the counters of subscribed items and fields; new methods that disaggregate different client subscription requests of the same item have been provided, while the old methods that yielded aggregate results have been deprecated.
Completed the Session MBean, by supplying all the remaining session related properties that were unimplemented.

3.6 build 1463.2
(Compatible with Server since 3.6)
(Compatible with custom managers for the previous version)
Released on 16 Apr 2010
3.6 build 1463.1
(Compatible with Server since 3.6)
(Compatible with custom managers for the previous version)
Released on 14 Apr 2010
3.6 build 1463
(Compatible with Server since 3.6)
(Compatible with custom managers for the previous version)
Released on 16 Feb 2010

Added the "getCurrentNIOWriteQueue", "getCurrentNIOWriteQueueWait", "getTotalPoolQueue", "getActiveNIOWriteSelectors" and "getTotalNIOSelectors" methods in the "Load" MBean. See the javadocs for details.

Added the "Adapter Set" MBeans, one for each installed Adapter Set.
Added queue reports for the new optional Data Adapter specific thread pools in the "Data Adapter" MBeans. Queue reports for the new optional Adapter Set specific thread pools are available in the new "Adapter Set" MBeans.
See the javadocs for details.

Fixed the implementation of the "getMaxSessions" / "setMaxSessions" methods on the Server MBean. They now modify the <max_sessions> configuration element, rather than the deprecated <max_clients>.

Fixed a bug in the total subscribed items count returned by the ResourceMBean.
Items for which a SubscrException was thrown by "isSnapshotAvailable" were not added but then removed.

Revised the deployment of the MBeans documentation; see the "doc" directory.

3.5.1 build 1436
(Compatible with Server since 3.5)
(Compatible with custom managers for the previous version)
3.5 build 1428.4
(Compatible with Server since 3.5)
Released on 28 Jan 2009

Fixed a documentation error. The getNewLostEvents, getMaxLostEvents, getNewFilteredEvents and getMaxFilteredEvents methods on the SessionMBean are not implemented yet.

3.5 build 1427
(Compatible with Server since 3.5)

Discontinued the partial hiding of the license ClientID, which is returned by the ServerMBean; the full ClientID is now returned.

Fixed a bug in the total subscribed items count returned by the ResourceMBean and in the "Subscribed" and "SubscribedButFailed" items reported by a DataAdapterMBean. Items for which a SubscrException were thrown by "subscribe" were added and never removed.

3.5 build 1422
(Compatible with Server since 3.5)
Released on 23 Sep 2008

As a consequence of the introduction of the Adapter Sets, extended the search pattern of the "DataAdapterMBean" instances. See the DataAdapterMBean javadoc for details.
Removed the (still not implemented) "getMetadataAdapter" and "getDataAdapter" methods in the SessionMBean; replaced them with the "getAdapterSet" method.

Implemented the "getUsername" and the new "getAdapterSet" methods of the SessionMBean.

Removed the (still not implemented) "TopMaxFrequency" and "SlowingFactor" settings.

Removed the MonitorProvider.txt documentation file. As a consequence of the new support for including the monitoring Data Adapter in custom Adapter Sets, accessing monitor data through the "MONITOR" Adapter Set is now deprecated.

3.4.8 build 1398
(Compatible with Server since 3.4)
Released on 6 Mar 2008
3.4.7 build 1395
(Compatible with Server since 3.4)
Released on 11 Feb 2008
3.4.6 build 1393
(Compatible with Server since 3.4)
Released on 4 Jan 2008
3.4.6 build 1391
(Compatible with Server since 3.4)
Released on 6 Dec 2007

Improved the supplied documentation.

3.4.6 build 1389
(Compatible with Server since 3.4)
Released on 22 Nov 2007
3.4.6 build 1385
(Compatible with Server since 3.4)
Released on 15 Nov 2007
3.4.5 build 1373
(Compatible with Server since 3.4)

Added suitable documentation for the monitoring statistics which the Server makes available to external clients.

3.4.4 build 1366
(Compatible with Server since 3.4)

Revised the getDelayMillis method of the Load MBean.

Revised the documentation of the getQueueStageHTTPAccept and getQueueStageHTTPSAccept methods of the Load MBean, which was not correct since version 3.4.

3.4 build 1298
(Compatible with Server since 3.4)

Current version upon introduction of Server 3.4 - Web Client 4.1 release.

SDK for Java Adapters
4.1.1 build 1513.1.15
(Compatible with Server since 4.1)
(Compatible with code developed with the previous version)
(Compatible with the deployment structure of the previous version)
Released on 10 Jan 2013

Fixed a typo in the documentation of the init method of both adapters, where "adapter_conf.id" was reported instead of "adapters_conf.id".

4.1 build 1513.1.14
(Compatible with Server since 4.1)
(Compatible with code developed with the previous version)
(Compatible with the deployment structure of the previous version)
Released on 9 Aug 2012
4.1 build 1513.1.12
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)
(Compatible with the deployment structure of the previous version)
4.0.3 build 1513.1.11
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)
(Compatible with the deployment structure of the previous version)
Released on 6 Apr 2012
4.0.2 build 1513.1.8
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)
(Compatible with the deployment structure of the previous version)
Released on 6 Dec 2011
4.0.1 build 1513.1.3
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)
(Compatible with the deployment structure of the previous version)
Released on 20 Jul 2011
4.0 build 1513.1.1
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)
(Compatible with the deployment structure of the previous version)
Released on 8 Jul 2011
4.0 build 1513
(Compatible with Server since 4.0)
(May not be compatible with code developed with the previous version; see the compatibility notes below)
(May not be compatible with the deployment structure of the previous version; see the compatibility notes below)
Released on 7 Jun 2011

Removed from the classpath the log4j jar and added the slf4j/logback jars. COMPATIBILITY NOTE: If any existing Adapter uses log4j, ensure that the log4j jar is included among the adapter-related libraries or under the "shared/lib" folder. If any existing Adapter includes the slf4j/logback jars, ensure that no conflicts arise.
As a consequence, log4j-based Adapters can no longer share the configuration with the Server, while logback-based Adapters now can. COMPATIBILITY NOTE: Any existing log4j-based Adapter that leans on the Server configuration file, now has to load its own configuration file; however, the Adapter log can no longer be mixed with Server log. Otherwise, a bridge to logback, like log4j-over-slf4j, can be introduced. For any existing logback-based Adapter, ensure that no configuration conflicts arise.
Replaced the custom FileAppenders with logback-based versions. COMPATIBILITY NOTE: Any existing log4j-based Adapter that leans on the Server configuration file, now has to load its own configuration file. For any existing logback-based Adapter, ensure that no configuration conflicts arise.
Revised the logging by the included demos and revised the deployment according to the above guidelines; the demos still use log4j for their own logging and now only log at console.

Introduced special parameters that are added to the custom ones in the init() call of the Adapters, to supply context information; see the javadocs for details. COMPATIBILITY NOTE: If existing adapters already require that custom parameters with the same names are configured, they should be changed, in order to use different names. However, as long as they are configured, the custom values will still be received.
Simplified the deployment of the included examples, by taking advantage of the new information.

Extended the documentation of getItems to show a few use cases.

4.0 a4 build 1495
(Compatible with Server since 4.0 a2)
(May not be compatible with code developed with the previous version; see compatibility notes below)
Made available as a prerelease on 4 Feb 2011

Extended the MetadataProvider interface. An extended version of the "notifyUser" method has been added, in which a fourth argument carries client identification information reported in the client TLS/SSL certificate, when available.
The extended version is invoked in place of the base version only when requested through the new <use_client_auth> configuration flag; this is not the default case. Note that the Moderato edition does not support https connections; as a consequence, the new method will never be invoked.
COMPATIBILITY NOTE: existing Metadata Adapter source code has to be extended before a recompilation (the new version of "notifyUser" can just resort to the base version), unless the Adapter class inherits from one of the supplied FileBasedProvider, LiteralBasedProvider or MetadataProviderAdapter. Anyway, any old Metadata Adapter binaries are guaranteed to run with the new Server, with no need of a recompilation. Only old binaries in which a local overload of "notifyUser" happened to match the new signature might not work properly.

3.6.1 build 1470
(Compatible with Server since 3.6)
(Compatible with code developed with the previous version)

Clarified the allowed format of custom error messages in CreditsException.

3.6 build 1463.2
(Compatible with Server since 3.6)
(Compatible with code developed with the previous version)
Released on 16 Apr 2010
3.6 build 1463.1
(Compatible with Server since 3.6)
(Compatible with code developed with the previous version)
Released on 14 Apr 2010
3.6 build 1463
(Compatible with Server since 3.6)
(may not be compatible with code developed with the previous version; see compatibility notes below)
Released on 16 Feb 2010

Removed the deprecated "getUserSessions" method from the MetadataProvider interface.
COMPATIBILITY NOTE: Adapters that still implement the method should still compile and run, unless they address the method from the MetadataProvider interface. The method will no longer be called; however, if the "kill" command URL is used by the back-end (see the SDK for Generic Client Development), then using a similar method may still be needed, in order to replace the use of "kill" through the use of the new "destroy" command URL.

Added the "HTTP_HEADERS" entry to the "clientContext" Map supplied to notifyNewSession, to match the "httpHeaders" argument of the corresponding notifyUser call.

Relaxed some requirements on Metadata Adapter methods that could not be blocking, as a consequence of the introduction of the parallel management of control requests. See the javadoc for details.

Relieved some requirements on Data Adapter methods that could not be blocking, as a consequence of the introduction of the asynchronous management of the subscriptions. See the javadoc for details.

Clarified in the javadocs how binary AMF objects can be supplied as field values in order to be forwarded to the Flex Client Library.

Suppressed the stack trace from the error log of the unchecked exceptions thrown by Adapter methods whose message starts with "[MILD]"; the prefix is not logged.

Fixed a bug on snapshot management in the predeployed version of the Portfolio Data Adapter example. The example included in the SDK was already correct.

Extended the basic Metadata Adapters provided; both comma and spaces are now allowed as separators for the modes_for_item_family_* configuration parameters.

Revised the deployment of the API documentation; see the "doc" directory.

3.5.1 build 1436
(Compatible with Server since 3.5)
(Compatible with code developed with the previous version)
3.5 build 1428.4
(Compatible with Server since 3.5)
Released on 28 Jan 2009
3.5 build 1422
(Compatible with Server since 3.5)
Released on 23 Sep 2008

Extended the MetadataProvider interface. A third argument has been added to the "notifyUser" method; the argument carries information about the HTTP headers of the originating client request. Also, a third argument has been added to the "notifyNewSession" method; the argument carries various information about the originating client request. Moreover, a new argument, carrying the current session name, has been added to the "getItems" and "getSchema" methods.
Note that this breaks the compatibility of new Metadata Adapters with the old versions of the Server. Old Metadata Adapter source code still compiles with the new interface library only provided that the Adapter class inherits from one of the supplied LiteralBasedProvider or FileBasedProvider.
Anyway, any old Metadata Adapter binaries are supported by the new Server, which just looks for an old version of "notifyUser", "notifyNewSession", "getItems" or "getSchema" method when it can't find a new version. Only old binaries in which a local overload happens to match the new signature may not work properly.

Extended the interface specifications to the basic support for multiple Data Adapters introduced in the Server.
Now, the Metadata Adapter must manage inquiries for items that may pertain to different Data Adapters; however, the interface has not been extended to carry Data Adapter information (this will not be performed until the next major release). Hence, the Metadata Adapter must be able to answer to the inquiries based on the item name only.

Extended the conditions in which an update event, after being passed to the ItemEventListener, can still be used by the Data Adapter.

Revised and extended the included examples.

3.4.8 build 1398
(Compatible with Server since 3.3.1 b1)
Released on 6 Mar 2008
3.4.7 build 1395
(Compatible with Server since 3.3.1 b1)
Released on 11 Feb 2008

Clarified on the javadocs the conditions in which an update event, after being passed to the ItemEventListener, can still be used by the Data Adapter.
Also clarified the conditions in which a custom Metadata Adapter can be used when the LiteralBasedProvider is requested by client API specifications.

3.4.6 build 1393
(Compatible with Server since 3.3.1 b1)
Released on 4 Jan 2008
3.4.6 build 1391
(Compatible with Server since 3.3.1 b1)
Released on 6 Dec 2007
3.4.6 build 1389
(Compatible with Server since 3.3.1 b1)
Released on 22 Nov 2007
3.4.6 build 1385
(Compatible with Server since 3.3.1 b1)
Released on 15 Nov 2007
3.4.4 build 1372
(Compatible with Server since 3.3.1 b1)

Tested the sample Adapters for compatibility with the new version of log4j libraries used for the Server (1.2.15).
Upgraded the JMS example generator to include log4j library version 1.2.15.

3.4.4 build 1364
(Compatible with Server since 3.3.1 b1)

Extended the provided JMS-based StockListDemo Data Adapter example, by adding configuration istructions for the JBoss Messaging JMS provider.

3.4.3 build 1362
(Compatible with Server since 3.3.1 b1)

Extended the reusable Metadata Adapters provided with the SDK.
The new "prefilter_frequency" configuration parameter is now supported.

3.4.1 build 1322
(Compatible with Server since 3.3.1 b1)

Revised and clarified the Data Adapter interface requirements, in order to avoid possible issues due to a lack of synchronization.
See the Data Adapter interface javadocs for details.
Revised the sample StockListDemo Data Adapter source code accordingly.

3.4 build 1309
(Compatible with Server since 3.3.1 b1)

Introduced a new example Data Adapter, named StockListDemo_JMS_DataAdapter, which demonstrates getting data for the StockListDemo front-end from an external generator process, through JMS.

3.3.1 b1 build 1254
(Compatible with Server since 3.3.1 b1)

Current version upon introduction of Server 3.4 - Web Client 4.1 release.

SDK for .NET Adapters
1.7.4462.30217
(Compatible with Adapter Remoting Infrastructure since 1.4)
(Compatible with code developed with the previous version)
Released on 6 Apr 2012

Fixed a bug that affected the special Update method overloads based on the IItemEvent and IIndexedItemEvent interfaces. In case the "robust" version of the Proxy Data Adapter had been in use, the updates could have been discarded.

Improved the extraction of HTTP headers supplied to NotifyUser.

Clarified the API documentation in several points.

1.7.4175.16355
(Compatible with Adapter Remoting Infrastructure since 1.4)
(Compatible with code developed with the previous version)
Released on 7 Jun 2011

Extended the documentation of GetItems to show a few use cases.

1.7.3895.27492
(Compatible with Adapter Remoting Infrastructure since 1.4)
(May not be compatible with code developed with the previous version; see compatibility notes below)
Made available as a prerelease on 4 Feb 2011

Extended the MetadataProvider interface. An extended version of the "NotifyUser" method has been added, in which a fourth argument carries client identification information reported in the client TLS/SSL certificate, when available.
The extended version is invoked in place of the base version only when requested through the new <use_client_auth> Server configuration flag; this is not the default case. Note that the Moderato edition does not support https connections; as a consequence, the new method will never be invoked.
COMPATIBILITY NOTE: existing Remote Metadata Adapters code has to be extended before a recompilation (the new version of "NotifyUser" can just resort to the base version), unless the Adapter class inherits from one of the supplied LiteralBasedProvider or MetadataProviderAdapter.
Anyway, old Remote Metadata Adapters hosted by old versions of the .NET Adapter SDK still run with the new version of Lightstreamer Server and the Proxy Adapter, as long as the <use_client_auth> Server configuration flag is not leveraged.

Clarified the allowed format of custom error messages in CreditsException.

1.6.3624.26503
(Compatible with Adapter Remoting Infrastructure since 1.3)
(May not be compatible with code developed with the previous version; see compatibility notes below)
Released on 16 Feb 2010

Discontinued the support for .NET version 1.1; version 2.0 or greater is now required. All 1.1 related resources have been removed and the deployment tree has been simplified.
COMPATIBILITY NOTE: existing adapters compiled for .NET 1.1 have to be ported to 2.0 in order to take advantage of the upgraded libraries. The StockListDemo example deployment has been ported to 2.0 as well.

Added the "REQUEST_ID" property to the "httpHeaders" IDictionary supplied to NotifyUser and to the clientContext IDictionary supplied to NotifyNewSession, so that the ids for corresponding calls match (only available if Server Adapter Interface 3.6 or higher is in use).

Changed the API documentation format. Now HTML documentation is provided.
This significantly increases the size of the package.

Introduced common base classes for the various Exception classes defined in the Metadata Adapter and Data Adapter namespaces.

Added a new Remote Adapter example. Binaries, source code and deployment examples for the Portfolio Demo are now provided.

Extended the included StockListDemo Adapter Set example; modified the sample deployment of the Proxy Adapters in the "Deployment_LS(robust)" subdirectory in order to use new RobustNetworkedMetadataProvider included in Adapter Remoting Infrastructure version 1.3.

Revised the namespace names in the included StockListDemo example.
Renamed the example directory.

Fixed an outdated compatibility note in DotNet Adapters.pdf

Fixed the obsolete version number stored in the "strong name" server version.

1.5.3331.32630
(Compatible with Adapter Remoting Infrastructure since 1.2.1)
Released on 24 Feb 2009

Introduced a simple internal keepalive mechanism on the connections towards the Proxy Adapters, in order to prevent intermediate network nodes from dropping some connection due to inactivity.

Extended the Close method of the MetadataProviderServer and DataProviderServer classes, to also close the involved connections.

Fixed a bug that might provoke redundant calls to the handleException exception handler after Close had been invoked.

1.5.3168.20853
(Compatible with Adapter Remoting Infrastructure since 1.2)
Released on 23 Sep 2008

Extended the IMetadataProvider interface, according to the corresponding extensions on the Server Adapter Interface 3.5.
Note that this breaks the compatibility of new Remote Metadata Adapters with the old versions of Lightstreamer. However, old Remote Metadata Adapters run by old versions of the .NET Adapter SDK still run with the new version of Lightstreamer Server and the Proxy Adapter.

Extended the interface specifications, so that the basic support for multiple Data Adapters introduced in the Server since 3.5 is taken into account.
Now, a Remote Metadata Adapter must manage inquiries for items that may pertain to different Data Adapters; however, the interface has not been extended to carry Data Adapter information (this will not be performed until the next major release). Hence, the Remote Metadata Adapter must be able to answer to the inquiries based on the item name only.

Revised the API documentation.

Revised the deployment details of the included example.

Extended the included StockListDemo Adapter Set example; added an alternative deployment of the Proxy Adapters that uses the new RobustNetworkedDataProvider included in Adapter Remoting Infrastructure version 1.2 (see the "Deployment_LS(robust)" subdirectory).

Extended the log of the initialization phase.

1.3.2960.18717
(Compatible with Adapter Remoting Infrastructure since 1.1)
Released on 11 Feb 2008

Revised the API documentation.

1.3.2893.27841
(Compatible with Adapter Remoting Infrastructure since 1.1)
Released on 6 Dec 2007

Removed the burst.cs source file from the sample source files in DotNetStockListDemo\src_data_adapter; the example was not part of the StockListDemo Data Adapter.

1.3.2837.24089
(Compatible with Adapter Remoting Infrastructure since 1.1)
Released on 9 Oct 2007

Removed the deployment case based on the "piped" mode from the Remote StockListDemo Adapter example included. Only the standard "socket" mode is now shown.

1.3.2819.29975
(Compatible with Adapter Remoting Infrastructure since 1.1)

Removed a locale-dependent date formatting in the provided StockListDemo example, which might cause compatibility issues with some of the provided example clients.

1.3.2798.29601
(Compatible with Adapter Remoting Infrastructure since 1.1)

Simplified the LiteralBasedProvider.cs sample code.

1.3.2795.18928
(Compatible with Adapter Remoting Infrastructure since 1.1)

Improved the custom adapter initialization through the MetadataProviderServer and DataProviderServer classes, by using empty hashtables as the default to be supplied for the adapters Init call.
Added checks for null item lists or field lists returned by GetItems or GetSchema.

1.3.2747.24605
(Compatible with Adapter Remoting Infrastructure since 1.1)

Added a version of the library identified with a "strong name".
This, among other benefits, makes it possible to register the DLL in the Global Access Cache.
See the SDK README.TXT for details.

1.3.2746.18556
(Compatible with Adapter Remoting Infrastructure since 1.1)

Fixed a bug that prevented the use of null values in the update events; actually, they are allowed, though just considered as missing fields.

1.3.2725.16801
(Compatible with Adapter Remoting Infrastructure since 1.1)

Fixed a bug in the Adapter initialization phase, which might cause an Adapter with a slow Init() method to be used before Init() termination.

Propagated to Start() any exceptions thrown in the Init() method; previously, they were notified to the custom asynchronous exception handler.

Added a DEBUG level log for all request, reply and notify lines (see the sample exe.config configuration files).

1.3.2641.18418
(Compatible with Adapter Remoting Infrastructure since 1.1)

Extended the Server abstract class, which offers the support for custom Remote Server main programs. Custom exception handling is now possible.
Revised the StockListDemo sample code and sample deployment, in order to add the demonstration of a sample custom server.

1.2.2613.30708
(Compatible with Adapter Remoting Infrastructure since 1.1)

Revised and clarified the Data Adapter interface requirements, in order to avoid possible issues due to a lack of synchronization.
See the Data Adapter interface documentation for details.
Revised the sample StockListDemo Data Adapter source code accordingly.

1.1.2488.16523
(Compatible with Adapter Remoting Infrastructure since 1.0)

Current version upon introduction of Server 3.4 - Web Client 4.1 release.

SDK for Adapter Remoting Infrastructure
1.4.2 build 52
(Compatible with Server Adapter Interface since 4.0)
(Compatible with Remote Servers for the previous version)
Released on 9 Aug 2012

Revised the low level log of the Proxy Adapters, to allow for suppressing the log of real-time messages while logging the requests and replies from the Remote Server; see com.lightstreamer.adapters.remote in the Server log configuration file.
Fixed a typo in the com.lightstreamer.adapters.remote logger description.

1.4.2 build 51
(Compatible with Server Adapter Interface since 4.0)
(Compatible with Remote Servers for the previous version)
Released on 6 Apr 2012

Introduced new configuration properties to let the RobustNetworkedMetadataProvider return a custom error notification to the client upon a request for a new session when the remote server is currently unavailable; see "notify_user_disconnection_code" and "notify_user_disconnection_msg" in "conf\sockets(robust)\adapters.xml".

Introduced new configuration properties to let the RobustNetworkedDataProvider manage a custom item which carries notifications about the availability of the remote server; see "remote_adapter_status" in "conf\sockets(robust)\adapters.xml".

Added checks on the correct configuration of the Proxy Adapters; in fact, wrongly setting a notify port on a Proxy Metadata Adapter could lead to wrong behavior.

Improved the extraction of HTTP headers supplied by the "NUS"/"NUA" request.

Added log to detect issues caused by obsolete Remote Servers

1.4.1 build 48
(Compatible with Server Adapter Interface since 4.0)
(Compatible with Remote Servers for the previous version)
Released on 7 Jun 2011

Ported the provided Proxy Adapters to "logback" for logging. The Adapters still lean on the Server deployment for logging configuration and for the required libraries.
Refer to the Server for configuration changes related with the porting.

Introduced the "missing_connection_timeout_millis" parameter for the socket-based Proxy Data Adapter; see the sample adapter configuration files for details.

Introduced the logging of incoming and outcoming messages at DEBUG level.

1.4 build 43
(Compatible with Server Adapter Interface since 4.0 a1)
(may not be compatible with Remote Servers for the previous version; see compatibility notes below)
Made available as a prerelease on 4 Feb 2011

Extended the protocol with the "NUA" request, an extended version of the "NUS" request in which an added field carries client identification information reported in the client TLS/SSL certificate, when available.
The extended version is invoked in place of the base version only when requested through the new <use_client_auth> configuration flag; this is not the default case.
COMPATIBILITY NOTE: existing Remote Servers don't need to be extended as long as the <use_client_auth> configuration flag is not leveraged.

Extended the protocol with the "NUA" request, an extended version of the "NUS" request. The extension is related with https connections; as a consequence, it is not used by the Proxy Adapter in Moderato edition.
COMPATIBILITY NOTE: as the new request is never issued in Moderato edition, existing Remote Servers don't need to be extended.

Addressed the case in which the timeout on the requests to the remote Adapters is very high and a very high number of subscriptions occurs. In this case, memory usage issues could have been experienced.

1.3 build 42
(Compatible with Server Adapter Interface since 3.6)
(Compatible with Remote Servers for the previous version)
Released on 16 Feb 2010

Introduced the RobustNetworkedMetadataProvider, a new version of the Proxy Metadata Adapter which includes the management of the unavailability of the Remote Metadata Adapter. See the sample configuration file under the SDK's conf/sockets(robust) directory for details.

Added the "REQUEST_ID" property to the http headers supplied to Notify User and to the client context supplied to Notify New Session, so that the ids for corresponding calls match.

Fixed a bug on the management of the connection_recovery_timeout_millis setting for the Robust Data Adapter.

Improved Adapter closing management.
Limited redundant communication error notifications.
Forced an immediate error on all pending requests at adapter closing; this may increase the error notifications in the log.
Fixed a bug that prevented communication error checks on the write side.

Supported a negative timeout setting for no timeout checks on requests to the Remote Server.

1.2.1 build 38
(Compatible with Server Adapter Interface since 3.5)
Released on 24 Feb 2009

Introduced a simple keepalive mechanism on the connections towards the Remote Server, in order to prevent intermediate network nodes from dropping some connection due to inactivity.

Dismissed the use of the "eos_count_limit" and "eos_sleep_time" parameters for the networked versions of the Proxy Adapters, in which retries on end-of-stream errors are no longer performed.

1.2 build 37
(Compatible with Server Adapter Interface since 3.5)

Fixed a bug which could cause a Proxy Data Adapter not to close itself when only one of the connections to the Remote Adapter was closed and the Remote Adapter did not close the other one as a consequence.

Fixed a bug which prevented the correct use of the "eos_sleep_time" parameter.

1.2 build 36
(Compatible with Server Adapter Interface since 3.5)
Released on 28 Jan 2009

Revised and extended the protocol documentation. Added forgotten notes about recent extensions.

1.2 build 34
(Compatible with Server Adapter Interface since 3.5)
Released on 23 Sep 2008

Extended the "Notify User", "Notify New Session", "Get Items" and "Get Schema" methods on the Metadata Provider Protocol, according to the corresponding extensions on the Server Adapter Interface 3.5. All new arguments have been added on the end.
Note that this breaks the compatibility of new Remote Servers with the old versions of Lightstreamer Server. However, old Remote Servers are still supported by the new Lightstreamer Server as long as the Proxy Adapter is not upgraded; in fact, the new Lightstreamer Server still supports older Proxy Adapters.

Extended the protocol specifications, so that the basic support for multiple Data Adapters introduced in the Server since 3.5 is taken into account.
Now, a Remote Metadata Adapter must be aware that it may have to manage inquiries for items that may pertain to different Data Adapters; however, the Metadata Adapter communication protocol has not been extended to carry Data Adapter information (this will not be performed until the next major release). Hence, the Remote Metadata Adapter must be able to answer to the inquiries based on the item name only.

Introduced the RobustNetworkedDataProvider, a new version of the Proxy Data Adapter which includes the management of the unavailability of the Remote Data Adapter. See the sample configuration file under the SDK's conf/sockets(robust) directory for details.

Removed caching of the "Get Items" and "Get Schema" calls results. This can be considered as a bug fix, since returning different values upon subsequent calls of "Get Items" or "Get Schema" with the same arguments is allowed.
This may cause an increase of "Get Items" and "Get Schema" calls to the Remote Server, though this is limited to calls with the same user name.

Changed the order of opening of the server sockets for the Networked Proxy Data Adapters. The NotifySocket is now opened first. This fixes a bug in the Remote .NET Server, which could lead to a race condition.

Changed the name and format of the included build and version number files.

Extended the log of the initialization phase.

1.1 build 25
(Compatible with Server Adapter Interface since 3.3.1)
Released on 9 Oct 2007

Improved internal cache management of user profile data.

1.1 build 24
(Compatible with Server Adapter Interface since 3.3.1)

Revised some exception messages.

1.1 build 23
(Compatible with Server Adapter Interface since 3.3.1)

Tested the Proxy Adapter for compatibility with the new version of log4j libraries used for the Server (1.2.15).

1.1 build 22
(Compatible with Server Adapter Interface since 3.3.1)

Revised the protocol and the protocol documentation. Some update event notifications have been eliminated, as not really different than the "Update by Map" notification. They are still temporarily supported by the Proxy Adapter.

Added examples of Proxy Adapter configuration. Such examples were mistakenly missing until now.

Changed the management of the server sockets used to accept the connections from the Remote Servers. The server sockets are now closed after the Remote Server connections have been established.

Added timeout checks also for the requests performed asynchronously.
This may cause FailureException returned by slow subscribe/unsubscribe requests to be ignored.

1.1 build 21
(Compatible with Server Adapter Interface since 3.3.1)

Improved the performance in case of a burst of subscriptions.

1.1 build 19
(Compatible with Server Adapter Interface since 3.3.1)

Fixed a bug that might cause a misleading exception to be reported in case of high subscription load.

1.1 build 17
(Compatible with Server Adapter Interface since 3.3.1)

Revised the error management for base64 decoding.

1.1 build 16
(Compatible with Server Adapter Interface since 3.3.1)

Improvement on the Adapter performances.

1.1 build 15
(Compatible with Server Adapter Interface since 3.3.1)

Improvement on the Adapter performances.

1.1 build 13
(Compatible with Server Adapter Interface since 3.3.1)

Extended the remoting protocol, in order to enforce the association of each update notification with a specific subscribe request instance.
See the remoting protocol documentation for details.

Fixed a bug that might cause unexpected behavior, in the (unlikely) event of fast subscribe-unsubscribe or unsubscribe-subscribe sequences.

1.0 build 12
(Compatible with Server Adapter Interface since 3.3.1)

Improved the initialization phase, to manage the case in which the Remote Adapter produces update events before any subscription (this may make sense in some cases, though the updates are ignored).

1.0 build 10
(Compatible with Server Adapter Interface since 3.3.1)

Current version upon introduction of Server 3.4 - Web Client 4.1 release.

SDK for HTML Clients
5.0.1 build 1446.15
(Compatible with Server since 4.1)
(Compatible with code developed with the previous version)
Released on 10 Jan 2013

Improved compatibility with Opera Browser.

5.0.1 build 1446.13
(Compatible with Server since 4.1)
(Compatible with code developed with the previous version)
Released on 9 Aug 2012

Fixed an issue with an internal hidden iframe that had a small border left; in particular conditions, this could have caused the whole PushPage to become larger than expected and possibly a scrollbar to appear.

5.0.1 build 1446.12
(Compatible with Server since 4.1)
(Compatible with code developed with the previous version)

Extended the functionality of the setRequestedMaxFrequency method to allow for modification of the maximum frequency setting for a currently subscribed table, with no need for a resubscription.

5.0 build 1446.9
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)
Released on 6 Apr 2012

Fixed a bug in "getPushPages", which did not return any result.

Fixed a bug, introduced in build 1446, which might have caused a spinning icon to be shown by IE7 and IE8 during streaming.

5.0 build 1446.6
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)
Released on 6 Dec 2011

Changed an internal default timeout related to xhr requests.

5.0 build 1446.5
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)

Relaxed the checks on item and field names that were introduced on version 5.0 b1 build 1413.

Improved compatibility with Sony Bravia TV browser.

5.0 build 1446.3
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)
Released on 8 Jul 2011

Improved compatibility with Firefox 5.0 and newer and Chrome 11 and newer where timeouts of inactive tabs are delayed and executed at maximum once per second. See https://bugzilla.mozilla.org/show_bug.cgi?id=633421 and http://code.google.com/p/chromium/issues/detail?id=66078

5.0 build 1446
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)
Released on 7 Jun 2011

Introduced official support for HTML5 offline web applications (see Web Client Dev.pdf for details).

Introduced IE9 streaming support.

Introduced a new, faster and lighter, stream-sense algorithm that completely replaces the previous one.

Added the forEachChangedField public methods to the UpdateItemInfo and VisualUpdateItemInfo classes.
See the JSDocs for details.

Added the setNodeTypes and setRootNode methods to the ScreenTableHelper class.
See the JSDocs for details.

Introduced support to update any property of a cell (previously only the content of a cell were updated); accordingly extended cellOverwrite, cellScroll and cellMetapush methods of PushPage.
See the JSDocs for details.

Fixed a bug introduced on build 1413 in the handling of XHR response that may lead to a wrong execution order. The bug was theorically possible on most browsers but was only seen on Chrome.

Fixed a bug on the cellOverwrite, cellScroll and cellMetapush methods of PushPage that required'em to be called specifiying the node type to be used.

Fixed a bug that may prevent Opera 10.x from creating an engine after a page reload.

Fixed a bug that may produce unexpected exceptions during the re-binding of streaming sessions. In such cases the connection to the server may be lost; anyway the client was able to open a new connection after such events.

Removed limitations in the use of setPushedHtmlEnabled, the same screen table can now be used with both setPushedHtmlEnabled set to true and to false provided that in between the associated Table instance is removed from the "running" state.
See the JSDocs for details.

Introduced partial support to AMD loaders as described by CommonJS (e.g.: RequireJS).

Changed the default for the setTimeoutForReconnect method of the Policy class from 15000 to 3000 ms.

Deprecated the setBufferedStreamingHandled method of the Policy class as the associated feature was removed in favor of the new stream-sense algorithm. Calling the method has now no effects.

Improved the notification of closing sessions to the Server, so that unused sessions are discarded as soon as possible.

5.0 b1 build 1413
(Compatible with Server since 4.0 a4)
(Compatible with code developed with the previous version)
Made available as a prerelease on 4 Feb 2011

Renamed the SDK folder under DOCS-SDKs, from sdk_client_web to sdk_client_html.

Removed the setClearOnAdd limitations on DynaScrollTable objects. It is now possible to call setClearOnAdd(false) on those tables, thus permitting to keep in the view of a DynaScrollTable updates pertaining to a previous subscription and/or updates manually added through the showValues method before the actual subscription.

Added the getSchema and getGroup public methods to the Table class.
Added the getUnderlyingSchema method to the NonVisualTable and MultiDynaMetapushTable classes.
See the JSDocs for details.

Improved the heuristic slowing algorithm. If a streaming session has been downgraded to a "slow" polling session, upon a polling connection failure, a new "slow" polling session will be initiated instead of a new streaming session.

Fixed an uncompliance in the internal use of cookies that might have caused compatibility issues (only noticed with the "Django" web framework).

Fixed a bug on the production of remote log lines: the build number was not sent correctly to the server.

Fixed a bug that may prevent a client from connecting to the server if the connection effort is performed while the server is offline.

Made the setAttribute and setRemoteAttribute methods of VisualUpdateInfo compliant with http://www.w3.org/TR/CSS1/#color-units when used to set "color" or "backgroundColor". The short hex form (eg #FF2) and rgb percentile (eg rgb(10%,100%,5%) ) were not supported.

Added the caret to the non-alphanumeric characters allowed in item and field names.
Introduced a strict check on the characters used for item and field names (alphanumeric, underscores, dots and caret are permitted). The restriction was documented but not actually checked. COMPATIBILITY NOTE: client code was not supposed to use characters other than the allowed ones; nevertheless, any client code making use of unallowed characters might have been accepted by the library and might have been working, whereas now it would no longer be accepted, unless the item name convention were fixed.

Fixed an incorrect management of the Table lifecycle that was introduced in version 4.4 build 1396. In case the client had been disconnected or waiting for the first connection the Table would have been considered as not running, hence:

  • a call to showValues would have been refused with an exception;
  • a call to setMaxDynaRows or similar methods would have been ineffective until the establishment of the connection;
  • for a newly added table, the clearing-on-add operation would have been postponed until the establishment of the connection.

Allowed the use of underscore characters in sequence names on sendMessage.
Extended sendMessage, by introducing a special processing for the "UNORDERED_MESSAGES" sequence name; see the JSDocs for details.
COMPATIBILITY NOTE: as the underscore character was not allowed in sequence names, no conflicts with existing code can arise.
Fixed a bug that caused the onAbort invocations upon sendMessage requests that had not been managed after the end of the session to be issued in wrong order.
Fixed a bug that caused timeouts of 0 supplied to sendMessage to be refused.

Changed the Server identification message when the Server is still to be accessed; "Lightstreamer Server" is now used in place of "Streaming Server".

Fixed the resume of the possible Engine state transitions (in the documentation for "onStatusChange").

Removed pre-installed TIBCO General Interface demos.

4.4.1 build 1396.4
(Compatible with Server since 3.6)
(Compatible with code developed with the previous version)
Released on 14 Apr 2010

Fixed a bug, introduced in build 1396, which caused notifications of table removal not to be notified to the Server. If any table had been removed, the involved subscriptions would have remained active and the related updates would have been reaching the client until the final session closure.
Note that table removals while the session is still active also happen when a non-master Pushpage is closed and when rows are dynamically deleted from a MultiMetapush table.

Fixed a bug in showValues, introduced in build 1396, that affected the VisualUpdateInfo object supplied upon the invocation of the onChangingValues callback originated by a showValues call. When getServerValue was invoked on that object, it would return an incorrect value.

Fixed the jsdocs: the documentation of the MessageListener class, introduced in build 1396, was missing.

Clarified in the jsdocs that the global aliases for class names that are not meant to be used directly by custom code are not defined at all.
The change was introduced in build 1396.

4.4 build 1396
(Compatible with Server since 3.6)
(Compatible with code developed with the previous version)
Released on 16 Feb 2010

Improved the interoperability with other javascript libraries, by removing any conflicts on global names; in fact, only the "Lightstreamer" global name is now needed. However, the above is not the default and has to be forced; see "Lightstreamer.avoidLSGlobals" in the JSDocs.

Extended the "sendMessage" function by adding an optional listener argument.
This allows for reception of notifications of the outcome of the request.
Moreover, introduced distinct message sequences, so that only the processing of messages belonging to the same sequence are serialized. The related sequence can be specified for each message through a new optional argument.
Introduced also an optional timeout argument to override the server side <missing_message_timeout_millis> setting.
See the JSDocs for all the details.
Fixed a bug that caused "sendMessage" not to return any value.

Revised the management of the "client errors": now, exceptions are also thrown in case of errors due to wrong arguments supplied to interface methods. See the onClientError JSDocs for details on the various cases.
COMPATIBILITY NOTE: None of the cases that cause an exception to be thrown is expected to occur under correct code.

Revised some error messages and function argument checks.
Suppressed the alerts used to signal compatibility or library loading issues.
An exception is now thrown, to be caught by the browser.
COMPATIBILITY NOTE: These alerts were expected to never show up; still, if a loading issue occurred, the new exception would just replace a subsequent exception in custom code.

Removed some spurious occurrences of a "client alert" complaining for browser related issues in the "setTimeout" processing.

Improved the management of the "push cells" supplied by the page. The related HTML elements are now preserved rather than being replaced.
Extended ScreenTableHelper and cellOverwrite/cellScroll/cellMetapush to manage all types of HTML elements as cells; see the JSDocs for details.

Added the setStatusBarUrlPortion setter (and the corresponding getter) to the Connection class. This allows for customization of the streaming page url, which is put into evidence in the status bar by some browsers, as IE.

Removed some interface methods deprecated since version 4.2 or before.
COMPATIBILITY NOTE: None of these methods is expected to be used in recent client code.

Removed the global aliases for class names that are not meant to be used by custom code directly.
COMPATIBILITY NOTE: Custom code is not expected to use those class names.

Clarified the error codes associated to the possible cases of sessions closing reported in onServerError.

Fixed a bug that might (partially or fully) have prevented the engine migration process from working, if tens of client windows had been active.
In such an overwhelming scenario, unexpected popups could also have shown up; the possibility has now been minimized.
Revised the thread management, in order to improve performances and reduce pauses when many client windows are active Fixed a bug that might have caused a javascript error to be issued upon a window closure, if tens of client windows had been active.

Fixed a bug that might have prevented the engine migration process from working in case pages invoking createEngine and seekEngine had been placed under different folders.
Introduced a workaround for unsuccessful Engine sharing, which, eventually, causes a new non-shared Engine to be opened.

Fixed a bug that caused "addTable" to never return any value.
Fixed the management of table removal. Upon "removeTable" or a new "addTable", if the Engine had been currently disconnected, the clearing wouldn't have taken place despite the clearOnRemove flag and the table pointer wouldn't have been returned.

Fixed "getTable" and "getTables", which could have returned second-level tables related with a MultiMetapush table, which was not the intended behavior.
Fixed a bug in the "getTables": the table ids used as the keys in the returned map were expressed in an encoded form, that could have differed from the original form.

Fixed a bug that caused some getter methods in DynaMetapushTable not to return any value.

Fixed the management of null formatted values in the onChangingValues callback for Scroll and DynaScroll tables, which didn't match the documentation.
Upon a field value that is the same as for the previous update, the value itself is now used as the default formatted value, instead of null; conversely, a null formatted value now means showing the initial cell content instead of copying the value from the previous update. The fix has no effect, unless nulls were explicitly set by custom code as field values or formatted values.
Fixed the management of null formatted values for (non-Dyna) Metapush tables when related with ADD commands. Until a non-null formatted value is supplied for the key, the initial cell content is now shown.
The values returned by RowInfo.getCellValue have been fixed accordingly.

Fixed a bug in the scrolling algorithm for (non-Dyna) Metapush tables. Upon scrolling, some rows could have temporarily remained not refreshed.
Fixed a bug in the sorting algorithm for (non-Dyna) Metapush tables. Some rows could have been ordered incorrectly.
Fixed a bug in the notifications for (non-Dyna) Metapush tables. Some spurious calls to onRowUpdate were possible.

Fixed a bug on Metapush and DynaMetapush tables, which restricted them to be fed by items subscribed to in COMMAND mode; other cases, though tricky, should have been allowed.

Fixed a bug that might have caused very long subscription requests to fail in case the XmlHttpRequest support had not been available.

Fixed the management of Master Push-Page unloading. If the "onbeforeunload" event handler had been implemented to return false in some cases, the embedded Engine would have been destroyed regardless.

Fixed a bug on the obfuscation process that affected the *Descriptor classes.

Fixed a bug that might, in rare cases, have caused wrong, though harmless, requests of the "lsblank.html" page to be issued towards the Server.

Addressed a compatibility issue with IE7 and IE8 that could potentially have caused unexpected problems if many client windows had been active.
Addressed a compatibility issue with IE8 that could have caused the Engine to be destroyed upon a "javascript:...." request on the page address bar; with previous IE versions, the compatibility issue still holds.

Assessed and improved the support for Opera 10.

Improved the efficiency of the search for available push cells in "addTable".
Brought other general internal efficiency improvements.

Improved the efficiency of the client-server communication protocol.
In particular, multiple sendMessage requests can now be handled in batch.
Improved the management of control requests in case XMLHttpRequest is not available for the specific browser.

Removed spurious entries in the GLOBALS section of the JSDocs.
Fixed a missing element reference in the jsdoc for "setServerUrlPath".
Fixed the note on the default handler in "onServerError" and "onClientAlert".
Clarified snapshot behavior for MultiMetapush logic in the JSDocs.

Revised the deployment of the API documentation; see the "doc" directory.

Revised the code of the included demos.
Added an Engine status monitor on all the demos.
Revised the deployment of the demos, by extracting LS libraries in a common directory.

4.3.1 build 1355.3
(Compatible with Server since 3.5)
Released on 24 Feb 2009

Fixed a bug on the Engine migration mechanism which, in some cases, could cause subsequent rebinds or reconnections to fail and not be recovered correctly.

Fixed a bug that could cause unexpected disconnections in case synchronous polling were configured with a high polling timeout.

Fixed a compatibility issue with IE6 affecting access to the Server in https.
The issue, introduced with the previous release, caused the browser to warn for the presence of both "secure and nonsecure items".

Added checks for incorrect values supplied through property setters.

4.3.1 build 1355
(Compatible with Server since 3.5)
Released on 28 Jan 2009

Fixed a bug that affected the case in which a removeTable was immediately followed by an addTable for the same ID. Possible trailing updates for the previous data table were not properly discarded and could be included in the new data table.
This bug was also fixed on the intermediate 1346.1 build, made available on 26 Nov 2008.

Fixed a bug that, upon connection delays affecting rebind requests, might cause onServerError to be invoked with an error code of 30, thus preventing the automatic recovery through a reconnection from taking place.

Fixed the engine migration mechanism. Addressed a race condition which was possible when many pages were involved, particularly under IE, and could cause some pages to issue javascript errors or not to get an engine correctly.

Fixed a bug that might cause some tables not to be subscribed to on IE7 when a lot of tables had to be subscribed to at page startup.

Revised and documented the details of status changes.
Moved the onServerError event notification before the corresponding notification of the status change to DISCONNECTED (which may not occur at all, depending on the actions performed by the onServerError event handler).
See the LightstreamerEngine.onStatusChange JSDocs for details.

Removed any use of http GET in favour of http POST for polling requests and any requests containing user credentials.
This may slightly slow down the connection startup phase.

Improved the Stream-sense mechanism so that, when a polling connection recovers a previous streaming connection attempt, the session related with the streaming connection is closed first.

Addressed a compatibility issue with Opera browser, which might prevent the use of XHR and force the library to use less efficient means.

Removed inefficiencies when reloading a page in Firefox.

Fixed some spurious occurrences of the "The call of createEngine methods after the BODY ...." debug alert.

4.3 build 1348
(Compatible with Server since 3.5)

Removed any use of http GET in favour of http POST for control requests submission. This only concerned recovery attempts after XHR unavailability.

4.3 build 1347
(Compatible with Server since 3.5)

Fixed a bug on the management of the initial cell values; those values were lost when setPushedHtmlEnabled(true) were issued.
Also extended the case in which setPushedHtmlEnabled(false) is issued (or left as the default); now the full HTML initial cell content is preserved.

Done minor improvements on the included demos.

4.3 build 1346
(Compatible with Server since 3.5)
Released on 23 Sep 2008

Extended the Table interface in order to take advantage of the support for multiple Data Adapters on the same session, introduced in Lightstreamer Server with version 3.5. See "setDataAdapter" on the JSDocs for details.
Added error code 17 to the "onServerDeny" event handler to notify request refusal because the requested Data Adapter was not found.

Extended the "onServerDeny" event handler so as to include table information.
Added error code 2 to the "onServerError" event handler to notify request refusal because the requested Adapter Set was not found.
Added error code 29 to the "onServerDeny" event handler to notify special cases previously included in the code 24 case.

Introduced the MultiMetapush tables. See the new "MultiDynaMetapushTable" class and the "setCommandLogic" method for the "NonVisualTable" class in the JSDocs for details. An extension to the field naming conventions is needed for fields from a MultiMetapush table; this applies to many methods where field names/indexes are involved.
Extended the onServerDeny and onLostUpdates event handlers specifically for the MultiMetapush case.

Introduced the setServerUrlPath method, to use a customized URL path for requests to the Server. The same URL path should be configured on the Server through the new <base_url_path> configuration element.

Extended the "createEngine" function in order to make it possible to suppress the default handling of the "status change" event. Previously, it could only be disabled after Engine loading. See the JSDocs for the "PushPage" class for details.

Changed the default for the setPollingInterval method from 500 to 0 ms.
This means that pure "asynchronous polling" (a.k.a. "long polling") will be adopted by default when polling is selected. In other words, by default the polling cycle follow each other with no pauses on the client side, only subjected to pauses on the server side.

Disabled the recovery of streaming connections that are buffered in the initial part when the data flow is finally received.
Added the setBufferedStreamingHandled method in the Policy object to allow the mechanism to be enabled.

Revised the slowing algorithm. In case slow client processing is detected on streaming sessions, switch to smart-polling is now performed. In case slow processing is detected on polling sessions, the polling is slowed down.
The slowing algorithm is now enabled by default.

Fixed a bug on the Engine migration algorithm, which might prevent successful engine recovery in specific cases.
Also improved the algorithm in terms of speed.

Fixed a bug which might prevent session sharing from working correctly when two applications coming from different domains define their own Engine pages with the same name (however, domain restrictions still prevented a Push-page from accessing the wrong Engine page).

Serialized the onEngineReady and onEngineCreation events with data events, so that they cannot be issued before data events coming through the involved Engine instance.

Added checks to ensure that the unsubscription requests to the Server related to closed non-master push-pages are done in short time.

Fixed a bug on the "autoscroll" support for Dyna tables, which affected scroll bar positioning.

Fixed a bug that might cause the setClearOnDisconnected setting not to be honoured.

Fixed a bug on table names handling, which might cause incorrect management for non-alphanumeric table names.

Fixed a bug that might prevent screen table reuse from working correctly.
A second addTable call on the same table ID could throw an exception in case some cell was dynamically removed in the meantime and one of setClearOnAdd/Remove/Disconnected was called with true.

Fixed a bug that might cause wrong subscription requests to be issued to the Server in case of a fast remove-add sequence of the same table.

Fixed a small memory leak after table removal.

Fixed some spurious occurrences of the "createEngine() has already been called" and "Unable to find the Engine" debug alerts.

Fixed an issue with some spurious entries generated in the browser history at Engine loading. This was only observed with multiple Push-Pages on the same frameset.

Extended the client alert messages about exceptions thrown in a custom callback. The exception stack trace, where available, is now included.

Added checks to cross-frame accesses to avoid javascript errors during the browser shutdown transient.

Fixed a bug with no effect on the front-end operation; the bug only happened for some browsers and manifested itself by issuing a request to the Server for the "lsblank.html" page with a wrong path.

Addressed a compatibility problem with Firefox browser that prevents the "SHARE_SESSION" policy on "createEngine" from working when different application instances come from different hosts, despite the domain setting.
The "NEW_SESSION" policy is now automatically applied in those cases.

Addressed a compatibility issue with Firefox 3, which might prevent or delay engine loading upon page refresh.

Addressed a compatibility issue which might affect fading effects on Safari browser.

Addressed a compatibility issue with Safari for the iPhone.

Improved the Engine initialization phase on Safari 3.1.

Addressed a compatibility issue with Internet Explorer 5.5 and Opera 7.54, by which createEngine could only be called in the static part of the page.

Ensured compatibility with the new Opera 9.5 browser (while older library versions are not compatible).
Ensured compatibility with the new Google Chrome browser.

Put a check to avoid sending bandwidth requests on rebinds to a session that is supplied by a Server whose Edition does not allow it.

Changed the "UNLIMITED" constant for "setMaxBandwidth" to "unlimited".
However, the constant is recognized in a case insensitive way.

Limited the cases for the warning about multiple instances of the same application; removed some not significant cases.

Added checks on the supplied engine name in createEngine; if any character is not allowed, a client error is issued.

Extended the support for URLEncoding request values. Any UTF-8 character can now be used in names (e.g. item names, passwords, send message arguments).

Improved the demo front-ends and added new ones.
Removed the demo deployment examples from the "examples" folder as now all demos are pre-deployed into the Server.
Ported the included demos to the new preconfigured Adapters deployment.

4.2.3 build 1329.12
(Compatible with Server since 3.4.6)
Released on 6 Mar 2008

Extended the NonVisualTable in order to better manage items subscribed to in COMMAND mode. See setCommandLogic in the JSDocs for details.
Revised the documentation of UpdateItemInfo, which was not clear about the command logic behaviour.

Revised the documentation of group, schema, item and field descriptors; fixed documentation errors about descriptors for extra fields.

4.2.2 build 1329.9
(Compatible with Server since 3.4.6)
Released on 11 Feb 2008

Fixed a bug that might cause the getTables method on a PushPage object to fail with an exception.

4.2.2 build 1329.7
(Compatible with Server since 3.4.6)
Released on 4 Jan 2008
4.2.2 build 1329.6
(Compatible with Server since 3.4.6)

Fixed a compatibility issue with Internet Explorer 6, which affected cookie management and could prevent multiple application istances from finding an engine to share when "SHARE_SESSIONS" was specified in "createEngine".

4.2.2 build 1329.4
(Compatible with Server since 3.4.6)
Released on 22 Nov 2007

Fixed a bug, introduced in build 1323, which caused the "onClientAlert" and "onServerError" event handlers to be called with wrong values for the arguments.

4.2.2 build 1329.3
(Compatible with Server since 3.4.6)

Revised the implementation of the access to the Master Push-page from a Push-page starting in a newly created popup. Under particular conditions, the access could fail on Internet Explorer.

Reduced the occurrences of the "Unable to find the Engine" debug alert to only signal when the Engine has not been found after a significant time has elapsed since page start.

4.2.2 build 1329.1
(Compatible with Server since 3.4.6)
Released on 15 Nov 2007

Changed the format of the included build.number file.

Changed the management of the case in which an active session is closed on the Server side. The event is now notified to the onServerError event handler; error codes from 30 to 39 have been reserved for these notifications. As a consequence, the default handling is to issue an alert and the status is set to DISCONNECTED, without any recovery attempt.

Added new methods to notify the client of some load balancing details.
See "getSessionServerName" and "getSessionServerAddress" in the JSDocs for the LightstreamerEngine class for details.

Fixed a bug on Safari compatibility management which prevented reconnections after disconnections from working correctly on Safari.

4.2.1 build 1329
(Compatible with Server since 3.4.2)

Addressed a compatibility problem with Opera browser, which prevents the "SHARE_SESSION" policy on "createEngine" from working when different application instances run on different windows. The "NEW_SESSION" policy is now automatically applied in those cases.

4.2.1 build 1328
(Compatible with Server since 3.4.2)

Fixed a bug that prevented full reentrancy support in onClientError and onStatusChange; now any API method can be called from inside any event handler.

4.2.1 build 1323
(Compatible with Server since 3.4.2)

Introduced the "Engine migration" feature, which provides automatic recovery from Engine closure when the SHARE_SESSION policy is used for Engine creation.
This brings a number of consequences, some of which may pose small backward compatibility issues:

  • Upon migration, no call to onEngineCreation is performed; the Engine object supplied to onEngineReady has been automatically configured based on the last available state of the previous object.
    This is limited to the SHARE_SESSION case.
  • The "isMasterPushPage" method has been introduced, to make it possible to identify the Master Push-Page also in case of migration.
    This is not limited to the SHARE_SESSION case.
  • After migration, any page may have become the Master Push-Page, even a page which, on starting, called "seekEngine" rather than "createEngine".
    This is limited to the SHARE_SESSION case.
  • As event handlers for the Engine object are not restored upon migration, they should not be set in onEngineCreation, but only in onEngineReady; handlers that should be specific for the Master Push-Page can be set after testing for "isMasterPushPage".
    This is limited to the SHARE_SESSION case.
  • The Engine object supplied to onEngineCreation and onEngineReady is now a local proxy; it is different than the object that can still be accessed through the deprecated "lsengine_config.js" and "getEngineReference".
    This is not limited to the SHARE_SESSION case.
  • The received Engine object only shows the event handlers locally defined on the Push-Page; the initial value of the handlers is "undefined".
    This is not limited to the SHARE_SESSION case.
  • Any page can now set event handlers for the Engine object and handlers set by different pages are all executed, each in the local Push-Page context; only if no handlers are defined for an event, a default handler is executed in the Engine page context.
    This is not limited to the SHARE_SESSION case.

Removed the documentation of the methods that were deprecated upon introduction of the 4.2 version.

4.2 build 1320
(Compatible with Server since 3.4.2)

Fixed a compatibility issue with Internet Explorer, which could prevent the correct page initialization when the library "js" files were included inside the page body element.

Fixed a bug that, under particular conditions, might cause a call to "onEngineReady" to receive a not fully initialized LightstreamerEngine object.

4.2 build 1319
(Compatible with Server since 3.4.2)

Fixed a compatibility issue with Safari browser, which could bring the focus to the master pushpage when session rebind occurred.

Fixed a bug that could prevent the stream-sense algorithm from behaving correctly with Safari browser.

Added a check to prevent possible browser-originated duplicated messages upon sendMessage calls.
The check is effective since Server version 3.4.4 build 1371.

Extended the setRemoteAlertsOnClientError method to add optional limits on the length and overall number of messages to be sent to the Server.

4.2 build 1318
(Compatible with Server since 3.4.2)

Fixed a bug that might cause some onEngineLost event handler calls to be lost when immediately followed by the subsequent onEngineReady call.

4.2 build 1317
(Compatible with Server since 3.4.2)

Fixed a bug on the management of the ScrollTable, which caused cell value formatting, set through onChangingValues, to be lost upon scrolling.

4.2 build 1316
(Compatible with Server since 3.4.2)

Improved the library startup phase, by eliminating some unnecessary page requests; this also eliminates a problem, related with uneven session requests distribution, observed with some load balancers.

4.2 build 1314
(Compatible with Server since 3.4.2)

Assured the compatibility with the OpenAjax Hub 1.0

4.2 build 1312
(Compatible with Server since 3.4.2)

Added the onClientAlert event handler, which gives the application control over the notification to the user of critical conditions, related to its environment, that prevent the application from working.
See the JSDocs for the PushPage class for details.

4.2 build 1309
(Compatible with Server since 3.4.2)

Added the support for the <use_protected_js> Server configuration element, introduced in Server version 3.4.3.

4.2 build 1308
(Compatible with Server since 3.4.2)

Revised the Server denomination in some error and notification messages.

4.2 build 1307
(Compatible with Server since 3.4.2)

Revised the management of the debug alerts and onClientError notifications in the startup phases.
The initial setting for debug and remote alerts on the Engine page is now inherited from the Master Push-Page.
Error notifications occurring before Engine page or Push-Page initialization are now buffered and sent to the proper listener upon initialization completion.

4.2 build 1306
(Compatible with Server since 3.4.2)

Fixed a bug that limited the StreamSense behaviour under Safari 1.x.

Restricted the "seekEngine" behaviour in order to prevent a Push-Page from linking to an Engine page created by a different instance of the same front-end application if the "onSimilarEngineFound" argument passed to the "createEngine" method was "FAIL" or "NEW_SESSION".
In these cases, it is mandatory that a pointer to a reference Push-Page is provided to "seekEngine", in order to link to a suitable Engine.

4.2 build 1302
(Compatible with Server since 3.4.2)

Added new utility methods to the LightstreamerEngine object.
See "getPushPages" in the JSDocs for lsengine.js and "getWindowReference", "getClassName", "getTables" in the JSDocs for lspushpage.js for details.

Revised the way in which the Engine is added to the front-end.
The "setEngineReference", "loadEngine", "loadEngineMinimal" and "getEngineReference" methods have been deprecated in favour of the new "createEngine" and "seekEngine" methods. The "onEngineCreation" event handler has also been added in support of "createEngine".
This also makes any direct reference to the "lsengine.html" page and to the "lsengine_config.js" configuration file deprecated.
See the JSDocs for lspushpage.js for details.

Revised the way in which conflicts on the Engine page are handled.
This typically applies to situations in which the same Lightstreamer-enabled application is opened twice on the same browser instance. The concept of application name has replaced that of Engine name.
In particular, the "getApplicationName" method now replaces "getEngineName". See also "createEngine" and "seekEngine" in the JSDocs for lspushpage.js for details.

Changed the URLs used for the streaming connections to the Server.
This should make it more evident, when investigating on the current loading activity on the browser, that a streaming connection is in place.

4.1.1 build 1300
(Compatible with Server since 3.3.4)

Improved security and vulnerability prevention.

4.1 build 1290
(Compatible with Server since 3.3.4)

Addressed an issue with Safari browser, in which an ongoing streaming page blocks all page load requests on any parent page (this only affects programmatic requests, not clicking the "refresh" button, for instance).
A typical case is when replacing the main Push Page, which holds the Engine Page as an IFRAME.
Now, calling changeStatus("DISCONNECTED") before requesting the new page load ensures the correct behaviour on all browsers.

4.1 build 1289
(Compatible with Server since 3.3.4)

Fixed an obfuscation bug which prevented the recently addede "onStart" event handler from being visible.

4.1 build 1286
(Compatible with Server since 3.3.4)

Revised and improved the StreamSense algorithm and the various mechanisms for the recovery after unexpected disconnections from the Server.

4.1 build 1284
(Compatible with Server since 3.3.4)

Addressed a compatibility problem with the KHTML browsers (e.g. Safari) that could cause the "getEngineReference" method to return a wrong value when called too early. Now, a null pointer will be returned in these cases, until a correct value could be returned.

4.1 build 1283
(Compatible with Server since 3.3.4)

Overcome a compatibility problem with Opera, that could prevent the full initialization of Pushpages defined as siblings of the Engine page.
In fact, the "onload" event handler may not be called by Opera on such Pushpages.

4.1 build 1281
(Compatible with Server since 3.3.4)

Fixed a bug, introduced with build 1279, that affected the recovery with polling when streaming was not allowed, for applications where long user names were used.

4.1 build 1280
(Compatible with Server since 3.3.4)

Fixed a bug that affected visualization in case of visual tables with holes (i.e. tables with fields for which cells are defined for some but not all rows).

Guaranteed the compatibility with TIBCO General Interface on all browsers.

Added a lookup for the OpenAjax hub services; if found, the "Lightstreamer" prefix is registered.

4.1 build 1279
(Compatible with Server since 3.3.4)

Improved the mechanism of recovery after unexpected disconnections.
If streaming was active, only streaming connection attempts will be tried.

Improved the mechanism of recovery of subscription requests that don't reach the Server. Redundant requests (which may cause error notifies on the Server log) are minimized.

4.1 build 1273
(Compatible with Server since 3.3.4)

Improved the efficiency of the DOM manipulation.

Found an issue about using the full hostname as the domain name in Internet Explorer. The issue was never observed before and might have been introduced by recent upgrades (possibly on the browser side).
The issue has not been solved, as it should not impact production scenarios.
Using the Web Server hostname as a subpart of Lightstreamer Server hostname should be avoided, though page redirections or similar techniques.

4.1 build 1272
(Compatible with Server since 3.3.4)

Fixed a bug that affected push cells that were defined with nested HTML markup, rather than just text, as their initial content. For such cells, the initial content were not correctly preserved at startup. Now, if HTML push is enabled for the related table, the initial content is fully preserved; otherwise, using nested HTML as the initial cell content is no longer supported.

4.1 build 1266
(Compatible with Server since 3.3.4)

Fixed a bug in the cell fading implementation that might, in case of big pages, cause a 100% CPU usage if cell fading were enabled.

4.1 build 1265
(Compatible with Server since 3.3.4)

Addressed an issue with memory allocation in Firefox. A pushing page, continuously changing the cell contents on the screen through a VisualTable subinstance, could cause Firefox to allocate a growing amount of memory.
Now the memory growth is still present, but negligible. No growth of the memory usage has been observed with IE.

4.1 build 1264
(Compatible with Server since 3.3.4)

Fixed a bug on the getTable method of the PushPage class, which might, in some cases, raise a javascript error.

4.1 build 1261
(Compatible with Server since 3.3.4)

Added the "onStart" event handler on all Table objects, in order to notify that a table has been successfully subscribed to through the Server.
It may also notify that the table has been resubscribed to, in case of connection restart.

Addressed an issue with domain setting in Firefox. Setting the domain as being the same as the hostname is now possible. This technique can be used when Lightstreamer Server and the Web Server are on different ports of the same machine.

Addressed a compatibility issue with Opera browser, gaining a slight performance improvement.

4.1 build 1258
(Compatible with Server since 3.3.4)

Fixed a bug that might cause very long subscription requests to be refused.

Fixed a bug on the management of subscription problems that might, in case of slow connections, cause table subscriptions to be performed twice, with the second subscription replacing the first one.

4.1 build 1257
(Compatible with Server since 3.3.4)

Removed trailing compatibility conflicts with some javascript frameworks.

Fixed a bug that might prevent the correct recovery of a ChartTable in case of stream connection recovery.

4.1 build 1255
(Compatible with Server since 3.3.4)

Introduction of Server 3.4 - Web Client 4.1 release.

SDK for Flash Clients
1.1 build 43.165.15
(Compatible with HTML Client SDK version 5.0.1 build 1446.15)
(Compatible with code developed with the previous version)
Released on 10 Jan 2013

Ported to the current HTML Client Library build.

1.1 build 43.165.13
(Compatible with HTML Client SDK version 5.0.1 build 1446.13)
(Compatible with code developed with the previous version)
Released on 9 Aug 2012

Ported to the current HTML Client Library build.

1.1 build 43.165.9
(Compatible with HTML Client SDK version 5.0 build 1446.9)
(Compatible with code developed with the previous version)
Released on 6 Apr 2012

Ported to the current HTML Client Library build.

Rebuilt the included StockList demo; the demo binaries have reduced significantly.

1.1 build 40.165.6
(Compatible with HTML Client SDK version 5.0 build 1446.6)
(Compatible with code developed with the previous version)
Released on 6 Dec 2011

Ported to the current HTML Client Library build.

1.1 build 40.165.3
(Compatible with HTML Client SDK version 5.0 build 1446.3)
(Compatible with code developed with the previous version)
Released on 8 Jul 2011

Ported to the current HTML Client Library build.

1.1 build 40.165
(Compatible with HTML Client SDK version 5.0 build 1446)
(Compatible with code developed with the previous version)
Released on 7 Jun 2011

Introduced IE9 support.

Ported to the current HTML Client Library build.

1.1 build 38.131
(Compatible with HTML Client SDK version 5.0 b1 build 1413)
(Compatible with code developed with the previous version)
Made available as a prerelease on 4 Feb 2011

Renamed the SDK folder under DOCS-SDKs, from sdk_client_flash_flex(js_bridge) to sdk_client_flash.

Ported to the current HTML Client Library build.

1.1 build 36.115.4
(Compatible with Web Client SDK version 4.4.1 build 1396.4)
Released on 14 Apr 2010

Ported to the current Web Client Library build.

1.1 build 36.115
(Compatible with Web Client SDK version 4.4 build 1396)
(Compatible with code developed with the previous version)
Released on 16 Feb 2010

Fixed a bug in the FlashUpdateItemInfo class, which prevented the getNewValue, getOldValue and isValueChanged methods from working if a field name had been supplied instead of a field number.

Revised the code of the included demos.
Added an Engine status monitor on the demos.
Revised the deployment of the demos, by extracting LS libraries in a common directory.

Revised the deployment of the API documentation; see the "doc" directory.

Ported to the current Web Client Library build.

1.1 build 31.74.3
(Compatible with Web Client SDK version 4.3.1 build 1355.3)
Released on 24 Feb 2009

Ported to the current Web Client Library build.

1.1 build 31.74
(Compatible with Web Client SDK version 4.3.1 build 1355)
Released on 28 Jan 2009

Improved the error detection.

Ported to the current Web Client Library build.

1.1 build 27.65
(Compatible with Web Client SDK version 4.3 build 1346)
Released on 23 Sep 2008

Extended the FlashTable interface in order to take advantage of the support for multiple Data Adapters on the same session, introduced in Lightstreamer Server with version 3.5.

Introduced the support for item and field name arrays as an alternative to groups and schema ids, already available in other client SDKs. The FlashTable constructor has been extended and so have been the FlashUpdateItemInfo methods and the FlashTable event handlers. See the JSDocs for details.
Existing code is not affected by the extensions.

Fixed a bug that might cause a javascript exception to be issued upon a change of status invoked by any page, after a page containing a FlashBridge was closed.

Fixed a compatibility issue with Internet Explorer 7, which may prevent the "onStatusChange" event from being received by a non-master Push-page.

Removed a compatibility issue with Safari browser, which might prevent the data from reaching the flash object.

Ported the included examples to the new preconfigured Adapters deployment.
Slightly changed the directory structure of the included examples.

1.0 build 18.48.12
(Compatible with Web Client SDK version 4.2.3 build 1329.12)
Released on 6 Mar 2008

Ported to the current Web Client Library build.

1.0 build 18.48.9
(Compatible with Web Client SDK version 4.2.2 build 1329.9)
Released on 11 Feb 2008

Ported to the current Web Client Library build.

1.0 build 18.48.7
(Compatible with Web Client SDK version 4.2.2 build 1329.7)
Released on 4 Jan 2008

Ported to the current Web Client Library build.

1.0 build 18.48.4
(Compatible with Web Client SDK version 4.2.2 build 1329.4)
Released on 22 Nov 2007

Ported to the current Web Client Library build.

1.0 build 18.48.1
(Compatible with Web Client SDK version 4.2.2 build 1329.1)
Released on 15 Nov 2007

Changed the format of the included JsBuild.number and AsBuild.number files.

Ported to the current Web Client Library build.

1.0 build 18.48
(Compatible with Web Client SDK version 4.2.1 build 1329)

Ported to the current Web Client Library build.

1.0 build 18.47
(Compatible with Web Client SDK version 4.2.1 build 1328)

Fixed a bug that prevented the creation of a Flash bridge dynamically (i.e. after the page had been loaded).

Added a check for the case in which the callbacks installed on the flash object cannot be accessed. This case now stops any operation by the flash object.

Removed a compatibility issue with Opera browser, which prevented the data to reach the flash object.

Ported to the current Web Client Library build.

1.0 build 18.36
(Compatible with Web Client SDK version 4.2 build 1317)

Ported to the current Web Client Library build.

1.0 build 17.32
(Compatible with Web Client SDK version 4.2 build 1313)

Ported to the current Web Client Library build.

1.0 build 17.31
(Compatible with Web Client SDK version 4.2 build 1312)

Ported to the current Web Client Library build.

1.0 build 15.30
(Compatible with Web Client SDK version 4.2 build 1311)

Ported to the current Web Client Library build.

1.0 build 15.28
(Compatible with Web Client SDK version 4.2 build 1309)

Ported to the current Web Client Library build.

1.0 build 15.26
(Compatible with Web Client SDK version 4.2 build 1307)

Ported to the current Web Client Library build.

1.0 build 14.21
(Compatible with Web Client SDK version 4.2 build 1302)

Ported to the current Web Client Library build.

1.0 build 12.19
(Compatible with Web Client SDK version 4.1.1 build 1300)

Ported to the current Web Client Library build.

1.0 build 11.9
(Compatible with Web Client SDK version 4.1 build 1290)

Included in Lightstreamer distribution.

SDK for Flex Clients
2.1 build 93
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)
Released on 10 Jan 2013

Fixed a bug in the management of non-ascii and control characters in field values; for particular values, the bug could also cause nearby characters to be affected.

2.1 build 90
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)
Released on 6 Apr 2012

Improved the robustness in case of connection problems.

2.1 build 88
(Compatible with Server since 4.0)
(May not be compatible with code developed with the previous version; see compatibility notes below)
Released on 7 Jun 2011

Fixed a bug that may generate unexpected DataErrorEvent events from being thrown during very high frequency push of AMF objects. Note that the bug usually occurs if the pushed AMF objects are at least a few KB big.

Changed the default for the timeoutForReconnect property of the ConnectionPolicy class from 15000 to 3000 ms.

Removed deprecated method and classes;
COMPATIBILITY NOTE: if existing code was taking advantage of LSClient's ControlErrorEvent then it should be reimplemented to take advantage of Table's SubscriptionErrorEvent.
If existing code was taking advantage of various getters-setter of the library classes then it should be reimplemented to use properties instead; below a list of removed methods:

  • NonVisualItemUpdateEvent
    • getNumFields (use numFields).
  • ConnectionInfo
    • getServer-setServer (use server).
    • getAdapter-setAdapter (use adapterSet).
    • getPort-setPort (use port).
    • getProtocol-setProtocol (use protocol).
    • getControlPort-setControlPort (use controlPort).
    • getControlProtocol-setControlProtocol (use controlProtocol).
    • getUser-setUser (use user).
    • setPassword (use password).
    • getContentLength-setContentLength (use contentLength).
  • ConnectionPolicy
    • getIdleTimeout-setIdleTimeout (use idleTimeout).
    • getRetryTimeout-setRetryTimeout (use retryTimeout).
    • setKeepaliveInterval-getKeepaliveInterval (use requestedKeepaliveInterval).
    • setPollingInterval-setPollingInterval (use requestedPollingInterval).
    • getTimeoutForStalled-setTimeoutForStalled (use timeoutForStalled).
    • getTimeoutForReconnect-setTimeoutForReconnect (use timeoutForReconnect).
    • isBufferedStreamingHandled-setBufferedStreamingHandled (use bufferedStreamingHandled).
  • Table (NonVisualTable - VisualTable)
    • setRequestedMaxFrequency (use requestedMaxFrequency).
    • setSnapshotRequired (use snapshotRequired).
    • setRequestedBufferSize (use requestedBufferSize).
    • setSelector (use selector).
    • setDataAdapter (use dataAdapter).

Improved the notification of closing sessions to the Server, so that unused sessions are discarded as soon as possible.

2.1 build 83
(Compatible with Server since 4.0 a4)
(Compatible with code developed with the previous version)
Made available as a prerelease on 4 Feb 2011

Renamed the SDK folder under DOCS-SDKs, from sdk_client_flash_flex(native_as) to sdk_client_flex.

Introduced full support for notifications of the processing outcome of messages sent through the "sendMessage" function.
Extended "sendMessage" with the introduction of distinct message sequences, so that only the processing of messages belonging to the same sequence are serialized. Introduced also an optional timeout to override the server side <missing_message_timeout_millis> setting.
Sequence and timeout information can be supplied through the new Message type.
See the AsDocs for all the details.

Fixed a bug related to single requests that are longer than the <request_limit> setting on the server (such requests are refused). The requests were continuosly resent to the server.

Fixed a bug on VisualTables configured as MultiMetapush. After a disconnection and a subsequent reconnection, the table might have contained some rows pertaining to its old life.

Fixed a bug on VisualTables configured as Metapush. After receiving a DELETE command, the table might have contained spurious entries.

Removed the demo examples based on Flex 3 SDK.
Added a new full demo example, showing portfolio management.
Added notifications of session state to the demo examples.

2.0.1 build 76
(Compatible with Server since 3.6)
(May not be compatible with code developed with the previous version; see compatibility notes below)
Released on 14 Apr 2010

Ensured the compatibility with Flex 4 SDK. The library can now be used to build applications with both Flex 3 and Flex 4 SDK.
The only issues were with the HighlightCellItemRenderer class, which is just an external utility that helps adding visual effects to a custom table. The class has been extended with a "bgAlpha" property and a "decorateNewInstance" method.
COMPATIBILITY NOTE: if existing code was taking advantage of HighlightCellItemRenderer by defining a derivated class, then a name conflict might, in principle, arise.
Fixed a documentation bug. Since build 55, the library has been compiled with Flex 3 SDK and compatibility with Flex 2 SDK based applications has been broken; however, compatibility with SDK 2 was still claimed.

Fixed a bug introduced in version 1.2, by which any sendMessage call would have caused the whole library to stop working correctly if Server 3.6 build 1463 had been in use.

Fixed the documentation about error notifications related with sendMessage.
Since version 1.2, a limitation was introduced which caused errors in the Server elaboration of messages to be no longer notified to the (deprecated) ControlErrorEvent. In fact, isSendMessageResponse could no longer return true.
For the same reason, the newly introduced SendMessageErrorEvent could never occur.

Fixed a bug introduced in version 1.2 which caused, upon the very first call to sendMessage, a 1 second delay before the message processing on the Server.

Fixed the documentation of Table and VisualTable: added a reference to SubscriptionEvent.

Introduced new versions of the included StockList demo, for both Flash and AIR runtime, written and compiled with Flex 4 SDK.
Revised the source code of the existing demos.

Added a tutorial to demonstrate the delivery of data in AMF format, possible since build 73.

2.0 build 73
(Compatible with Server since 3.6)
(Compatible with code developed with the previous version)
Released on 16 Feb 2010

Introduced the support for delivery of field values encoded in AMF format.
A suitable flag has been added to the table subscription parameters, so that binary encoding is applied to all the fields for all the items in a table.
The field values can be objects of any type and have to be supplied by the Data Adapter as byte arrays containing the AMF encoded representation.

Introduced properties instead of getters/setters for the attributes of the bean classes ConnectionInfo and ConnectionPolicy.
Properties have also been introduced for the main attributes of VisualTable, NonVisualTable and NonVisualItemUpdateEvent.
The corresponding getters and setters have been deprecated.

Drastically reduced the size of the library swc file. System libraries are now listed in the <external-library-path> and no longer included.
COMPATIBILITY NOTE: no backward compatibility issue should arise, as we expect that code developed with the previous version already manages core library inclusion.

Added the connectionTimeout setting in ConnectionPolicy to fine control the Stream-sense behavior. See the API docs for details.
Improved the Stream-sense behavior in cases of connection problems.

Extended the StatusChangeEvent object to report details of the current session. See sessionServerName and sessionServerAddress in the docs.
Valued the sessionId property also in STALLED mode.
Fixed a bug on the sessionId property, that might not be correctly valued if setBufferedStreamingHandled(true) had been set.

Fixed a bug, introduced in version 1.2, that might cause a very long burst of subscription requests to be refused by the Server with a "request too long" message.

Extended the internal logging to use the Flex logging support. The internal logging interface is still available. See the Logger class ASDocs for details.
Downgraded from ERROR to INFO log notices for events received after unsubscription.

Revised the deployment of the API documentation; see the "doc" directory.

1.2 build 55
(Compatible with Server since 3.5)
(May not be compatible with code developed with the previous version; see compatibility notes below)

Recompiled the library with Flex SDK 3. This breaks the compatibility with Flex SDK 2.
COMPATIBILITY NOTE: Existing applications based on SDK 2 cannot be ported to the new release; they have to be ported to Flex SDK 3 first.

Fixed a bug that caused any polling session to be interrupted and replaced when no updates were available for more than the configured retryTimeout (the default is 5 seconds), unless the idleTimeout had been configured with a lower value. Calling setBufferedStreamingHandled(true) could delay the bug for the first two minutes of session life.

Improved the internal heuristic technique to force connection closing for unresponsive connections, despite Flex runtime limitations.

Revised the deployment of the included demo.
Added a new example, similar to the already included demo, to demonstrate deployment under the Adobe AIR runtime environment.
The demos are now compiled with Flex SDK 3.

1.2 build 54
(Compatible with Server since 3.5)
Released on 24 Feb 2009

Fixed a bug that might cause spurious transitions to STALLED state. In some cases, spurious reconnections could even occur.

Fixed a bug that might cause a session open attempt to resort to polling mode or to fail in case the Metadata Adapter enforces a limit on the number of open sessions. The bug was introduced with the latest version of the library.

Removed internal classes from the "manifest" file.

Suppressed logging of initial preamble used to escape initial buffering of the response.

1.2 build 47
(Compatible with Server since 3.5)
Released on 28 Jan 2009

Addressed a compatibility issue for Opera and Safari browsers; these browsers perform an initial buffering of the response, which could prevent streaming connections from working. This requires Server build 1428.4 or greater in order to be effective.

1.2 build 44
(Compatible with Server since 3.5)

Fixed a bug that might cause a session open to fail when switching between streaming and polling (also because of the Stream-sense algorithm) in case the Metadata Adapter enforces a limit on the number of open sessions.

Extended the StatusChangeEvent object to report LS session ID assigned to a streaming or polling session.

1.2 build 42
(Compatible with Server since 3.5)

Fixed a bug on the management of null values coming from the Server when they are relative to the first update for an item. The bug affected NonVisualTables and might cause the whole first update to be discarded.

Introduced a recovery mechanism to retry unsuccessful connections for sending messages to the Server.
On the other hand, error notifications of unsuccessful processing on the Server are no longer available.

Deprecated ControlErrorEvent in favour of new specific events, namely: SubscriptionErrorEvent for subscription requests, directly associated to the involved Table object; SendMessageErrorEvent, available (though not used yet) for send message requests, which also reports message details.
Fixed a bug which affected the reporting of subscription errors for subtables when MultiMetapush logic was in place.

Introduced the ConnectionDropEvent event to notify cases in which a streaming connection is forcibly closed by the Server (through JMX, for instance).
This case is no longer managed with an automatic reconnection attempt.

Revised and documented the details of status changes.
Removed a temporary status change to DISCONNECTED when opening a new connection while a connection is already open; the status now switches directly to CONNECTING.
See the ChangeStatusEvent ASDocs for details.

Improved the checks for issues during the processing of the various types of requests. Added proper log messages and log categories.
Improved the error handling for the various types of control requests, with request reissuing upon timeouts or other error conditions.
Added checks to reduce redundant recovery requests.

Fixed a bug which prevented a reconnection attempt performed inside the ServerErrorEvent handler from working.

Introduced a special case (code 100) in ServerErrorEvent to notify connection refusal by security error.

Added a configurable history limit to the supplied DataGridAppender for client side log.

Clarified the documentation of the NonVisualItemUpdateEvent methods.

1.1 build 38
(Compatible with Server since 3.5)

Fixed a bug on the management of special characters in the field values, which might cause wrong update processing or suppression of updates in case field values included the '|' character.
Improved the efficiency on the management of special characters in the field values, with significant effects on very long values.

Fixed an issue with delays in update event management. Delays of up to 50 ms are still adopted, to improve efficiency, but longer delays are only possible under heavy load conditions.

Fixed a bug which only affected an explicit "setKeyPolicy(ITEM_IS_KEY)" call on a visual table.

Introduced the "DataErrorEvent" event type, to notify unexpected update event processing problems.

Revised the documentation. Fixed some incorrect links and added forgotten notes in NonVisualItemUpdateEvent pertaining to changes in build 33.
Extended the documentation of the various error notification events.

1.1 build 33
(Compatible with Server since 3.5)
Released on 23 Sep 2008

Extended the Table interface in order to take advantage of the support for multiple Data Adapters on the same session, introduced in Lightstreamer Server with version 3.5. In case a nonexistent Data Adapter is specified, a ControlErrorEvent with the new error code 17 will be issued.

Introduced the MultiMetapush tables. See the new "setMultiMetapush" method for the "VisualTable" class and the new "setCommandLogic" method for the "NonVisualTable" class in the ASDocs for details. An extension to the field naming conventions is needed for fields from a MultiMetapush tables; this applies to many methods where field names/indexes are involved.
Extended ControlErrorEvent and LostUpdatesEvent specifically for the MultiMetapush case.
Extended the "NonVisualTable" class in order to better manage items subscribed to in COMMAND mode. See the new "setCommandLogic" method in the ASDocs for details.

Introduced the getOldFieldValue method in the NonVisualItemUpdateEvent class.
Discontinued the return of the "UNCHANGED" special value from getFieldValue; the current value is always returned, as values can be recognized as being unchanged through the isFieldChanged method.

Added a retry mechanism to handle subscription request problems.
Added a new event, SubscriptionEvent, to provide notifications for successful subscriptions before the actual update flow.

Improved the recovery from connection problems. See the new setRetryTimeout method in the ConnectionPolicy class.

Disabled the recovery of streaming connections that are buffered in the initial part when the data flow is finally received.
Added the setBufferedStreamingHandled method in the ConnectionPolicy class to allow the mechanism to be enabled.

Fixed a bug on the "NonVisualTable" management, which caused the "getItem" method of all "NonVisualItemUpdateEvent" received to return an item index, even when an item name was available.

Fixed a bug on URLEncoding of client requests. Requests with non-alphanumeric names (item names or user names, for instance) might be handled in a wrong way.

Fixed a bug that caused the ControlConnectionErrorEvent not to be issued correctly.

Introduced a logging engine that can be used to print internal client library log. See the com.lightstreamer.as_client.logger.Logger class.

Ported the included examples to the new preconfigured Adapters deployment.
Slightly changed the directory structure of the included examples.

1.0.1 build 24.11
(Compatible with Server since 3.4.4)
Released on 6 Mar 2008

Fixed a bug which might prevent the connection recovery after a Server restart from working. However, the bug only manifested itself on "debug players".

Ensured that any operation on the connection state (e.g. disconnections and new connections) can be performed while handling any event, without conflicts.

1.0.1 build 24.9
(Compatible with Server since 3.4.4)
Released on 11 Feb 2008

Fixed a bug on the setKeyPolicy method of the VisualTable class, which only affected the case in which a number was supplied as either argument.

Fixed a bug that caused "\u" patterns in the field values to be automatically expanded as "\uxxxx" unicode sequences. They should rather be preserved and made visible to custom code.

Fixed a bug that might cause any connection retry to fail after the first attempt to connect to the Server had failed.

1.0.1 build 24.4
(Compatible with Server since 3.4.4)
Released on 4 Jan 2008

Fixed a bug which prevented the notifications for lost events from being correctly forwarded to client code.

Fixed a bug which might cause some update events to be lost in case of a burst of updates from the Server.

Fixed a bug which prevented error responses upon stream or control requests from being correctly notified to client code.
Revised the ControlErrorEvent event class; the reference to the involved Table object is now provided.

1.0 build 24
(Compatible with Server since 3.4.4)
Released on 19 Oct 2007

Improved the included demo, in order to allow Server host, port and protocol to be configured without the need for a recompilation.

1.0 build 23
(Compatible with Server since 3.4.4)

Included in Lightstreamer distribution.

SDK for Silverlight Clients
1.4.4527.28381
(Compatible with Server since 4.1)
(Compatible with code developed with the previous version)
Released on 9 Aug 2012

Introduced the ChangeSubscription method, which allows for modification of the maximum frequency settings for currently subscribed items, with no need for a resubscription; this also introduces a new error code in PushServerException.

Fixed the handling of mocked calls to UnsubscribeTable when a batch is in place.

Fixed a bug which prevented the ForceUnsubscribeTable method from working. This method was provided only as a help for particular cases of error recovery.

1.3.4517.22613
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)

Fixed a memory leak that could have caused a zombie thread to be left after an unsuccessful attempt of connecting to the Server; if the Server had been unreachable for long time for any reason and a loop of attempts had been performed, the leak could have become significant.

1.3.4279.18255
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)
Released on 6 Apr 2012

Fixed a potential bug that may have occurred after a SendMessage call, causing an ObjectDisposedException to be internally issued.

1.3.4168.21501
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)
Released on 7 Jun 2011

Renamed the SDK folder under DOCS-SDKs, from sdk_client_silverlight_(and_wp7) to sdk_client_silverlight. Windows Phone has now its own SDK (sdk_client_windows_phone).

Moved Windows Phone dlls on their own SDK.

Changed the default for the ProbeTimeoutMillis property of the ConnectionInfo class from 15000 to 3000 ms.

Improved the notification of closing sessions to the Server, so that unused sessions are discarded as soon as possible.

1.3.4049.30377
(Compatible with Server since 4.0 a4)
(May not be compatible with code developed with the previous version; see compatibility notes below)
Made available as a prerelease on 4 Feb 2011

Renamed the SDK folder under DOCS-SDKs, from sdk_client_silverlight to sdk_client_silverlight_(and_wp7).

Discontinued the support for Silverlight 2.
COMPATIBILITY NOTE: existing clients compiled for Silverlight 2 have to be ported 3 in order to take advantage of the upgrade.

Introduced new dlls to be used to develop Silverlight application for the Windows Phone 7 operating system. Both StrongName and simple versions are available.

Introduced a new "SendMessage" overload supporting:

  • notifications of the processing outcome of each sent message,
  • distinct message sequences, so that only the processing of messages belonging to the same sequence are serialized,
  • automatic batching of multiple messages.

The new overload also supports an optional timeout to override the server side <missing_message_timeout_millis> setting.
Sequence and timeout information can be supplied through the new MessageInfo type.
See the docs for all the details.

Fixed a bug that may lead the OpenConnection method, in case "Stream-sense" is enabled (by default true), to exit before the library is ready to accept "SubscribeTable" calls. In that case a call to SubscribeTable will throw an unexpected exception.

Fixed a bug that prevented a closeConnection/openConnection call to be executed until a previous call to openConnection was returned.

Forced the use of the default "BrowserHttp" HTTP request creator. In fact, the alternative "ClientHttp" currently does not support streaming. This caused applications that change the default as "ClientHttp" to only work in polling.
COMPATIBILITY NOTE: In applications that need to change the overall HTTP request creator, Lightstreamer library will no longer behave as expected.

Removed ExtendedTableListener, SimpleTableListener and FastItemListener classes and LSClient.subscribeItems and LSClient.subscribeTable overloads using those classes (all of them were previously deprecated)
COMPATIBILITY NOTE: existing clients still using the deprecated classes and methods have to be modified.

Changed the type of the "contentLength" property of the ConnectionInfo class form int to long.
COMPATIBILITY NOTE: existing clients using the contentLength property in methods that require the use of an int have to be modified and recompiled to avoid exceptions.

Removed deprecated properties from ConnectionConstraints, ConnectionInfo, ExtendedTableInfo, SimpleTableInfo and UpdateInfo public classes.
COMPATIBILITY NOTE: existing clients still using the deprecated properties have to be modified.

Made the library CLS Compliant.

Fixed a few typos in the inline documentation.

Introduced new interfaces ILogger and ILoggerProvider that, together with the new static method setLoggerProvider on LSClient, can be used to receive the library logging.

Introduced automatic reconnection and connection status indicator to the Stock-List demo provided as example.

1.2.3624.21130
(Compatible with Server since 3.5.1)
(Compatible with code developed with the previous version)
Released on 16 Feb 2010

Introduced properties in place of fields in the ConnectionInfo and ConnectionConstraints bean classes; using the fields is now deprecated.
Introduced properties in place of getter methods in the SimpleTableInfo and ExtendedTableInfo bean classes; using the getter methods is now deprecated.
Introduced properties in place of getter methods in the IUpdateInfo interface; using the getter methods is now deprecated.

Changed the API documentation format. Now HTML documentation is provided.
This significantly increases the size of the package.

Introduced a common base class for the various Exception classes defined.

1.1.3537.25900
(Compatible with Server since 3.5.1)
(May not be compatible with code developed with the previous version; see compatibility notes below)

Officially included in Lightstreamer distribution.

Ensured the compatibility for inclusion in Silverlight 3 projects, though the library is still compiled with Silverlight 2 SDK.

Allowed for configuration of the Stream-sense feature; see the new enableStreamSense and streamingTimeoutMillis properties in the ConnectionInfo class.

Extended the OnSessionStarted method on the IConnectionListener to notify whether streaming or polling mode is in use; when the Stream-sense has been exploited, this may no longer correspond with the requested mode.
COMPATIBILITY NOTE: existing clients have to be modified and recompiled, so as to reimplement the modified method.

1.0.3524.20170
(Compatible with Server since 3.5.1)
(May not be compatible with code developed with the previous version; see compatibility notes below)

Extended the PushUserException in order to report the error code and message supplied by the Server upon refusal of a connection or subscription request.
Previously, a PushServerException with id SERVER_REFUSAL was returned in the same cases.
COMPATIBILITY NOTE: existing clients that perform recovery actions upon a PushServerException may have to be extended.

Added OnEnd in IConnectionListener to provide support for the Server notification for sessions forcibly closed on the Server side.
COMPATIBILITY NOTE: existing clients have to be extended accordingly.

Fixed a bug that might cause a batch not to be closed after an obsolete unsubscription request.

Fixed SetRange in ExtendedTableInfo, which should have been ignored; it should not be used, though.

Used a dedicated thread for all the calls to the IConnectionListener.

Clarified the documentation for what concerns the thread model.
Added cloning support to all value objects that can be received from custom API invocations and used clones when storing them internally.

Added support for mocking the library for custom code testing purpose.
The UpdateInfo class has been turned into an interface and named IUpdateInfo.
All the exceptions and all the other classes whose objects may be created by library code and supplied to custom code now have a public constructor and can also be instantiated by custom code.
Note: the LSClient class is instantiated only by custom code and can be freely subclassed or wrapped.
COMPATIBILITY NOTE: existing clients that use the UpdateInfo class have to be modified.

Added getter methods for the various settings in SimpleTableInfo and ExtendedTableInfo.

Fixed a typo in the example README.TXT, about the Server configuration flag to be set.

1.0.3391.21925 b1
(Compatible with Server since 3.5.1)

Made available for beta testing.

SDK for iOS Clients
1.1.1 build 47
(Compatible with Server since 4.1)
(Compatible with code developed with the previous version)
Released on 9 Aug 2012

Introduced the "changeTableSubscription" method, which allows for modification of the maximum frequency settings for currently subscribed items, with no need for a resubscription.

Fixed the wrong name "infoWithPushServerURL" in the documentation page on how to open a connection.

1.1 build 43
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)
Released on 6 Apr 2012

Revised and improved the handling of cases of poor connectivity and of switching between networks.
Note that it is now required that the SystemConfiguration framework is included in the framework list of the XCode project.

Fixed a bug that could have caused high CPU usage under particular conditions.

1.1 build 39
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)

Fixed a bug on the Stream-sense algorithm, which was not working properly.

Fixed a bug that could have caused session rebinds to timeout improperly.

Fixed a bug that could have caused a crash in case of concurrent unsubscription and update of the same item.

Fixed a bug that could have caused a crash in case of multiple reconnections in a short period of time.

1.0.6 build 32
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)

Fixed a bug that could have caused http to be used for control connections also when https was needed, when <control_link_address> / <control_link_machine_name> was specified on the Server configuration.

1.0.5 build 31
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)

Fixed bugs that could have caused a deadlock when repeatedly calling closeConnection and openConnection under poor connectivity.

Fixed minor documentation errors on LSTableDelegate and LSConnectionInfo.

1.0.1 build 27
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)
Released on 7 Jun 2011

Introduced auto-reconnection and auto-resubscription mechanisms.

Introduced control link handling.

Introduced server sent keepalive time value handling.

Introduced Logging facilities (see the LSLog class).

Fixed a bug that may lead the application crash in case the connection is lost while the application is in background.

Fixed a bug on the handling of the STALLED status; some false positive were possible.

Changed the default for the probeTimeoutSecs property of the LSConnectionInfo class from 15 to 3 ms.

1.0 a1 build 14
(Compatible with Server since 4.0 a4)
Made available as a prerelease on 4 Feb 2011

Included in Lightstreamer distribution.

SDK for Android Clients
1.0.2 build 18
(Compatible with Server since 4.1)
(Compatible with code developed with the previous version)
Released on 9 Aug 2012

Introduced the changeSubscription method, which allows for modification of the maximum frequency settings for currently subscribed items, with no need for a resubscription; this also introduces a new error code in PushServerException.

Fixed the handling of mocked calls to unsubscribeTable when a batch is in place.

Fixed a bug which prevented the forceUnsubscribeTable method from working. This method was provided only as a help for particular cases of error recovery.

1.0.1 build 17
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)
Released on 6 Apr 2012

Introduced the new ExtendedConnectionListener interface that extends the still available ConnectionListener. When the new interface is implemented, the new onSessionStarted overload is invoked carrying extra information about the current server host. , which, however, is not useful for the Moderato case.

1.0 build 12
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)

Fixed a compatibility issue for Android version 2.2 and earlier that was introduced in build 10. The issue would give rise to an unresolved method exception upon a connection attempt, but, in turn, it was only triggered by an unchecked exception thrown by the underlying I/O library.
Extended the scope of the PushConnException to wrap any Throwable, whereas before it only used to wrap IOExceptions. COMPATIBILITY NOTE: existing clients were already not supposed to expect PushConnException to only wrap IOExceptions.

1.0 build 11
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)
Released on 6 Dec 2011

Improved the checks on unexpected issues during I/O operations.

1.0 build 10
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)

Improved the robustness against unexpected issues during I/O operations.

Suppressed warnings about BufferedReader usage in the JVM log.

1.0 build 8
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)
Released on 7 Jun 2011

Changed the default for the probeTimeoutMillis property of the ConnectionInfo class from 15000 to 3000 ms.

Improved the notification of closing sessions to the Server, so that unused sessions are discarded as soon as possible.

1.0 build 6
(Compatible with Server since 4.0 a4)
Made available as a prerelease on 4 Feb 2011

Included in Lightstreamer distribution.
The included library is very similar to that for the Java SE Client SDK 2.5 build 1101.

SDK for BlackBerry Clients
1.0.1 build 6.3
(Compatible with Server since 4.1)
(Compatible with code developed with the previous version)
Released on 9 Aug 2012

Introduced the setMaxFrequency and setFrequencyUnlimited methods, which allow for modification of the maximum frequency settings for currently subscribed items; unless in single connection mode, the changes will take place immediately, with no need for a resubscription.
Extended the sample code to demonstrate the use of the new methods.

1.0 build 6.2
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)
Released on 6 Apr 2012

Changed the default for the setIdleTimeout method of the ConnectionPolicy class from 30000 to 19000 ms.

Fixed a bug that sometimes caused HandyTableListener instances to receive updates carrying the wrong old values.

1.0 build 5
(Compatible with Server since 4.0)
Released on 7 Jun 2011

Included in Lightstreamer distribution. Following changelog entries for this SDK refer to the version released as a preview inside the Java ME SDK version 3.1 build 135.

Changed the default for the setTimeoutForReconnect method of the ConnectionPolicy class from 15000 to 3000 ms.

Changed the default for the setContentLength method of the ConnectionInfo class from 1000000 (1 MB) to 50000000 (50 MB).

SDK for Windows Phone Clients
1.1.4527.28794
(Compatible with Server since 4.1)
(Compatible with code developed with the previous version)
Released on 9 Aug 2012

Introduced the ChangeSubscription method, which allows for modification of the maximum frequency settings for currently subscribed items, with no need for a resubscription; this also introduces a new error code in PushServerException.

Fixed the handling of mocked calls to UnsubscribeTable when a batch is in place.

Fixed a bug which prevented the ForceUnsubscribeTable method from working. This method was provided only as a help for particular cases of error recovery.

1.0.4517.18303
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)

Fixed a memory leak that could have caused a zombie thread to be left after an unsuccessful attempt of connecting to the Server; if the Server had been unreachable for long time for any reason and a loop of attempts had been performed, the leak could have become significant.

1.0.4279.18303
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)
Released on 6 Apr 2012

Fixed a potential bug that may have occurred after a SendMessage call, causing an ObjectDisposedException to be internally issued.

1.0.4168.21541
(Compatible with Server since 4.0)
Released on 7 Jun 2011

Included in Lightstreamer distribution. Following changelog entries for this SDK refer to the version released as a preview inside the Silverlight SDK version 1.3 build 4049.30377.

Fixed a memory leak. The leak was generated by a side effect on the use of Exceptions made by the library.

Changed the default for the ProbeTimeoutMillis property of the ConnectionInfo class from 15000 to 3000 ms.

Improved the notification of closing sessions to the Server, so that unused sessions are discarded as soon as possible.

SDK for Java ME Clients
3.1.1 build 146.4
(Compatible with Server since 4.1)
(Compatible with code developed with the previous version)
Released on 9 Aug 2012

Introduced the setMaxFrequency and setFrequencyUnlimited methods, which allow for modification of the maximum frequency settings for currently subscribed items; unless in single connection mode, the changes will take place immediately, with no need for a resubscription.
Extended the sample code to demonstrate the use of the new methods.

3.1 build 146.2
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)
Released on 6 Apr 2012

Changed the default for the setIdleTimeout method of the ConnectionPolicy class from 30000 to 19000 ms.

Fixed a bug that sometimes caused HandyTableListener instances to receive updates carrying the wrong old values.

3.1 build 145
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)
Released on 7 Jun 2011

Renamed the SDK folder under DOCS-SDKs, from sdk_client_blackberry_(and_java_me) to sdk_client_java_me. The BlackBerry version of the library has now its own SDK.

Changed the default for the setTimeoutForReconnect method of the ConnectionPolicy class from 15000 to 3000 ms.

3.1 build 135
(Compatible with Server since 4.0 a4)
(May not be compatible with code developed with the previous version; see compatibility notes below)
Made available as a prerelease on 4 Feb 2011

Renamed the SDK folder under DOCS-SDKs, from sdk_client_java_me to sdk_client_blackberry_(and_java_me).

Introduced a new "sendMessage" method supporting:

  • notifications of the processing outcome of each sent message
  • distinct message sequences, so that only the processing of messages belonging to the same sequence are serialized
  • automatic batching of multiple messages.

The new overload also supports an optional timeout to override the server side <missing_message_timeout_millis> setting.
Sequence and timeout information can be supplied through the new MessageInfo type.
See the JavaDocs for all the details.

Removed the old LSClient.sendMessage method and the associated ConnectionListener.onSendMessageError interface method.
COMPATIBILITY NOTE: existing applications using this method must be rewritten to use the new sendMessage method. Also in case a custom handling was implemented to handle the onSendMessageError callback of the ConnectionListener interface, the code should be moved to the new SendMessageListener class.

Dropped MIDP 1.0 support and removed the LSClient.isMidp2 property COMPATIBILITY NOTE: existing applications using this property must be rewritten to not check it.

Introduced a new useSocketConnection method to enable/disable usage of SocketConnection instances.

Introduced new getters isUsingSocketConnection, isUsingReusableItemUpdates and isUsingSingleConnection.

Introduced the new ConnectionProvider interface and related getter/setter (setConnectionProvider/getConnectionProvider). This new approach should simplify development for BlackBerry devices.

Changed the default pollingInterval value from 500 to 0

Added an example of a midlet that demonstrates how to connect to Lightstreamer from a BlackBerry device.

Added missing documentation of the NumberedLogger class

3.0 build 121
(Compatible with Server since 3.5)
(May not be compatible with code developed with the previous version; see compatibility notes below)
Released on 16 Feb 2010

Extended setRequestedMaxFrequency in SimpleTableInfo, so that an argument of type double can be supplied.
COMPATIBILITY NOTE: existing custom clients that use this method have to be recompiled.

Extended onServerError in the ConnectionListener interface in order to fully report the error details.
Extended onControlError in the SimpleTableListener and ExtendedTableListener interfaces in order to fully report the error details.
COMPATIBILITY NOTE: existing custom clients that use these callbacks have to be modified accordingly.

Added onConnectionEnd in the ConnectionListener interface, to provide support for the Server notification for sessions forcibly closed on the Server side. No automatic reconnection attempt is performed.
COMPATIBILITY NOTE: existing custom clients have to be extended accordingly.

Discontinued the automatic reconnection in case of a connection attempt failure because of a Server explicit refusal (the case is notified by a call to onServerError).
COMPATIBILITY NOTE: existing custom clients that need a reconnection upon any type of disconnection have to be extended.

Fixed a bug that caused a request for an unlimited buffer size to be ignored for items in MERGE mode.

Fixed a mistake in the documentation of the "throws" clauses of the "subscribeTable" method.
Fixed a mistake in the documentation; the LSClient.Util class is not visible.

Clarified the documentation for what concerns the thread model.
Added cloning support to all value objects that can be received from custom API invocations and used clones when storing them internally.

Added support for mocking the library for custom code testing purpose.
The UpdateInfo, SimpleTableInfo and ExtendedTableInfo classes have been turned into interfaces.
Related to that, the ReusableSimpleTableInfo and ReusableExtendedTableInfo classes have been removed and a isReusable method has been added to the SimpleTableInfo and ExtendedTableInfo interfaces for the same purpose.
All the exceptions and all the other classes whose objects may be created by library code and supplied to custom code now have a public constructor and can also be instantiated by custom code.
Note: the LSClient class is instantiated only by custom code and can be freely subclassed or wrapped.
COMPATIBILITY NOTE: existing clients using the UpdateInfo, SimpleTableInfo or ExtendedTableInfo classes have to be recompiled.
COMPATIBILITY NOTE: existing clients using the ReusableSimpleTableInfo or ReusableExtendedTableInfo classes have to be modified.

Added public constructors for all the other objects that are created by library code and supplied to custom code.

Added getter methods for the various settings in ConnectionInfo (but for the connection password), ConnectionPolicy, SimpleTableInfo and ExtendedTableInfo.

Revised and clarified the deployment structure of the example demo.
Ported the example demo to the new interface.

Revised the deployment of the API documentation; see the "doc" directory.

2.1 build 110
(Compatible with Server since 3.5)
Released on 23 Sep 2008

Extended the SimpleTableInfo interface in order to take advantage of the support for multiple Data Adapters on the same session, introduced in Lightstreamer Server with version 3.5.

Introduced the new HandyTableListener and added subscription methods based on it. The new listener gets rid of the special UNCHANGED values and supports COMMAND logic.
Extended the supplied sample code to use the new listener.

Revised the connection error management.
Improved the recovery from connection problems. Changed the default retry timeout to 5000 ms.
Disabled by default the recovery of streaming connections that are buffered in the initial part when the data flow is finally received. Added the setBufferedStreamingHandled method in the ConnectionPolicy class to allow the above mechanism to be enabled.
No reconnection attempts are now performed after an explicit Server refusal for a session request (notified through onServerError).
Notifications for errors upon requests for sending messages or changing bandwidth are now notified through onClientError rather than onServerError; the same applies to errors on unsubscription requests.

Fixed an error in the javadocs; the closeConnectionInternal method on LSClient is not public.
Added a missing documentation for setRange, which is ignored for ExtendedTableInfo.

Fixed the deployment of the demo example. The provided jad file was supposed to reference to the provided jar file rather than the online demo jar, available in Lightstreamer website.

Ported the included examples to the new preconfigured Adapters deployment.

2.0.2 build 101.10
(Compatible with Server since 3.3.1)
Released on 6 Mar 2008

Ensured that any operation on the connection state (e.g. disconnections and new connections) can be performed while handling any event, without conflicts.

2.0.2 build 101.8
(Compatible with Server since 3.3.1)
Released on 11 Feb 2008

Added the setRetryTimeout method on the ConnectionPolicy class. This helps avoid connection attempt loops.

Allowed the modification of the "isMidp2" flag on the LSClient class, but just for testing purpose.

Improved the performances of the library.

Fixed a bug which caused the setKeepAliveInterval method of the ConnectionPolicy class to be ineffective.

2.0.1 build 101.3
(Compatible with Server since 3.3.1)
Released on 4 Jan 2008

Revised the reconnection attempt loop after an unsuccessful connection attempt. A protection timeout after each connection failure has been added.
Fixed a bug which prevented the interruption of the attempt loop upon a subsequent closeConnection.

2.0.1 build 101.2
(Compatible with Server since 3.3.1)

Fixed a bug which prevented the notifications for lost events from being correctly forwarded to client code.

Fixed a bug which prevented error responses upon stream or control requests from being correctly notified to client code.
Extended the SimpleTableListener and ExtendedTableListener interfaces with the onControlError method.

Changed the format of the included build.number file.

2.0 build 101
(Compatible with Server since 3.3.1)
Released on 3 Sep 2007
2.0 build 100
(Compatible with Server since 3.3.1)

Changed the default for the suggested response Content-Length for the streaming connections. Now, the size is no longer left as the server default, but is set to 1000000.
Added the setContentLength method to the ConnectionInfo interface in order to customize the Content-Length.

Added a check to transparently split a batch of control requests if it would exceed the limit for the length of a request HTTP body configured for the Server.
Server version 3.4.4 or greater is needed for this functionality to be enabled.

Changed the package name of the supplied example source code.

2.0 build 88
(Compatible with Server since 3.3.1)

Included in Lightstreamer distribution.

SDK for Java SE Clients
2.5.2 build 1107
(Compatible with Server since 4.1)
(Compatible with code developed with the previous version)
Released on 9 Aug 2012

Introduced the changeSubscription method (LSClient interface), which allows for modification of the maximum frequency settings for currently subscribed items, with no need for a resubscription; this also introduces a new error code in PushServerException.
Extended the sample code to demonstrate the use of changeSubscription.

Fixed the handling of mocked calls to unsubscribeTable when a batch is in place.

Fixed a bug which prevented the forceUnsubscribeTable method from working. This method was provided only as a help for particular cases of error recovery.

2.5.1 build 1105
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)
Released on 6 Apr 2012

Introduced the new ExtendedConnectionListener interface that extends the still available ConnectionListener. When the new interface is implemented, the new onSessionStarted overload is invoked carrying extra information about the current server host. , which, however, is not useful for the Moderato case.

Improved the robustness against unexpected issues during I/O operations.
Extended the scope of the PushConnException to wrap any Throwable, whereas before it only used to wrap IOExceptions. COMPATIBILITY NOTE: existing clients were already not supposed to expect PushConnException to only wrap IOExceptions.

2.5 build 1103
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)
Released on 7 Jun 2011

Changed the default for the probeTimeoutMillis property of the ConnectionInfo class from 15000 to 3000 ms.

Improved the notification of closing sessions to the Server, so that unused sessions are discarded as soon as possible.

2.5 build 1101
(Compatible with Server since 4.0 a4)
(May not be compatible with code developed with the previous version; see the compatibility notes below)
Made available as a prerelease on 4 Feb 2011

Fixed a harmless bug, introduced in build 1074, that could cause an uncaught exception to be logged upon a failed connection attempt.

Added a fully functional demo based on the Swing framework provided by the JDK.

Introduced a new "sendMessage" overload (lsclient interface) which supports:

  • notifications of the processing outcome of each sent message,
  • distinct message sequences, so that only the processing of messages belonging to the same sequence are serialized,
  • automatic batching of multiple messages.

The new overload also supports an optional timeout to override the server side <missing_message_timeout_millis> setting.
Sequence and timeout information can be supplied through the new MessageInfo type.
See the JavaDocs for all the details.

Introduced a new "enableControlLinkHandling" property to the ConnectionInfo class that can be used to disable the use of the server-sent <control_link_address> / <control_link_machine_name> setting. This allows for using internal addresses to access the Server.

Fixed a bug that may lead the openConnection method, in case "Stream-sense" is enabled (by default true), to exit before the library is ready to accept "subscribeTable" calls. In that case, a call to subscribeTable will throw an unexpected exception.

Fixed a bug that prevented a closeConnection/openConnection call to be executed until a previous call to openConnection was returned.

Removed ExtendedTableListener, SimpleTableListener and FastItemListener classes and LSClient.subscribeItems and LSClient.subscribeTable overloads using those classes (all of them were previously deprecated)
COMPATIBILITY NOTE: existing clients still using the deprecated classes and methods have to be modified.

Changed the type of the "contentLength" property of the ConnectionInfo class form int to long.
COMPATIBILITY NOTE: existing clients using the contentLength property in methods that require the use of an int have to be modified and recompiled to avoid exceptions.

2.4 build 1074
(Compatible with Server since 3.5)
(May not be compatible with code developed with the previous version; see compatibility notes below)
Released on 16 Feb 2010

Dropped the support for java 1.4. Java 1.5 or later is now required.
COMPATIBILITY NOTE: existing clients running with a 1.4 JVM have to be ported to a 1.5 or higher JVM.

Introduced the Stream-sense feature in both interfaces; see the new enableStreamSense and streamingTimeoutMillis properties in the ConnectionInfo class. This feature is enabled by default.
COMPATIBILITY NOTE: existing clients that perform their own management of unresponsive streaming connections could choose to disable the Stream-sense.

Extended the onSessionStarted method on the ConnectionListener to notify whether streaming or polling mode is in use; when the Stream-sense has been exploited, this may no longer correspond with the requested mode.
COMPATIBILITY NOTE: existing clients have to be modified and recompiled, so as to reimplement the modified method.

Removed the "topMaxFrequency" and "slowingFactor" members of ConnectionConstraints (previously deprecated), used in both interfaces.
COMPATIBILITY NOTE: existing clients still using the deprecated properties have to be modified.

Extended the PushUserException in order to report the error code and message supplied by the Server upon refusal of a connection or subscription request.
Previously, a PushServerException with id "SERVER_REFUSAL" was returned in the same cases by both "lsclient" and "lsproxy" interface methods.
COMPATIBILITY NOTE: existing clients that perform recovery actions upon a PushServerException may have to be extended.

Added onEnd in ConnectionListener ("lsclient" interface) and onClosedConnection in PushErrorListener ("lsproxy" interface) to provide support for the Server notification for sessions forcibly closed on the Server side.
Upon this notification, a reconnection is not attempted ("lsproxy" interface).
COMPATIBILITY NOTE: existing clients have to be extended accordingly.

Serialized the calls to the ConnectionListener, by using a dedicated thread.
Fixed a bug that could cause redundant onFailure calls to the listener.

Fixed a bug that caused a polling session to be interrupted after a few seconds with no data activity, in case a pollingIdleMillis setting greater than the reconnectionTimeoutMillis setting were supplied.
Changed the default setting for pollingIdleMillis from 0 to 30000 ms.

Fixed a bug that might cause a batch not to be closed after an obsolete unsubscription request ("lsclient" interface).

Changed the default setting for reconnectionTimeoutMillis from 30000 to 5000 ms.

Clarified the documentation for what concerns the thread model.
Added cloning support to the value objects that can be received from custom API invocations and used clones when storing them internally (but for the "Item" type objects in the "lsproxy" interface).

Added support for mocking the library for custom code testing purpose, in both interfaces.
The UpdateInfo and UpdateEvent classes have been turned into interfaces.
All the exceptions and all the other classes whose objects may be created by library code and supplied to custom code now have a public constructor and can also be instantiated by custom code.
Note: the LSClient and LSProxy classes are instantiated only by custom code and can be freely subclassed or wrapped.
COMPATIBILITY NOTE: existing clients that use the UpdateInfo and UpdateEvent classes might need a code recompilation.

Added getter methods for the various settings in SimpleTableInfo and ExtendedTableInfo.

Revised the deployment of the API documentation; see the "doc" directory.

2.3 build 1063
(Compatible with Server since 3.5)
Released on 24 Feb 2009

Revised the usage and default value of the probeTimeoutMillis and probeWarningMillis attributes of the ConnectionInfo class (used by both "lsclient" and "lsproxy" interfaces) in order to conform with the Web Client Library.
Fixed a bug that might cause probeTimeoutMillis to be used in place of probeWarningMillis.

2.3 build 1062
(Compatible with Server since 3.5)
Released on 23 Sep 2008

Extended SimpleTableInfo ("lsclient" interface) and Item ("lsproxy" interface) in order to take advantage of the support for multiple Data Adapters on the same session, introduced in Lightstreamer Server with version 3.5. In case a nonexistent Data Adapter is specified, a PushServerException with the PushServerException.SERVER_REFUSAL error code will be returned upon subscription.

Introduced the new HandyTableListener for the "lsclient" interface and added subscription methods based on it. The new listener gets rid of the special UNCHANGED values and supports COMMAND logic.
Deprecated SimpleTableListener, ExtendedTableListener and FastItemsListener and the subscription methods based on them.
Changed the supplied sample code to use the new listener.

Deprecated the "topMaxFrequency" and "slowingFactor" members of ConnectionConstraints, used in both interfaces.

Added a missing documentation for setRange, which is ignored for ExtendedTableInfo ("lsclient" interface).

Ported the included examples to the new preconfigured Adapters deployment.

2.2.2 build 1054.3
(Compatible with Server since 3.3.1)
Released on 11 Feb 2008

Fixed bugs about the notifications to the ConnectionListener ("lsclient" interface).
Failure of an internal rebind now causes onFailure instead of onDataError.
The documented notification sequence pattern also contained a mistake.

Added a check for an empty array passed to unsubscribeTables in "lsclient" interface. This prevents an error issued by the Server.

Changed the format of the included build.number file.

2.2.2 build 1054
(Compatible with Server since 3.3.1)
Released on 3 Sep 2007
2.2.2 build 1052
(Compatible with Server since 3.3.1)

Fixed a bug on the bandwidth estimate feature of the "lsproxy" interface.

2.2.2 build 1051
(Compatible with Server since 3.3.1)

Fixed some bugs which prevented the correct working of the library when used by an applet.

2.2.2 build 1050
(Compatible with Server since 3.3.1)

Added a check that makes a trailing "/" in the "pushServerUrl" and "pushServerControlUrl" connection properties be managed.

2.2.2 build 1049
(Compatible with Server since 3.3.1)

Changed the default for the suggested response Content-Length for the streaming connections. Now, the size is no longer left as the server default, but it is set to a very long value (50000000).

2.2.2 build 1044
(Compatible with Server since 3.3.1)

Added a check to transparently split a batch of control requests if it would exceed the limit for the length of a request HTTP body configured for the Server.
Server version 3.4.4 or greater is needed for this functionality to be enabled.

2.2.2 build 1045
(Compatible with Server since 3.3.1)

Restored the documentation, which, on the previous build, was corrupted.

2.2.2 build 1044
(Compatible with Server since 3.3.1)

Removed an outdated note on the SimpleTableInfo constructor documentation.

2.2.2 build 1038
(Compatible with Server since 3.3.1)

Current version upon introduction of Server 3.4 - Web Client 4.1 release.

SDK for .NET Clients
2.1.4527.25568
(Compatible with Server since 4.1)
(Compatible with code developed with the previous version)
Released on 9 Aug 2012

Introduced the ChangeSubscription method, which allows for modification of the maximum frequency settings for currently subscribed items, with no need for a resubscription; this also introduces a new error code in PushServerException.
Extended the sample code to demonstrate the use of ChangeSubscription.

Fixed the handling of mocked calls to UnsubscribeTable when a batch is in place.

Fixed a bug which prevented the ForceUnsubscribeTable method from working. This method was provided only as a help for particular cases of error recovery.

2.0.4517.22542
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)

Fixed a memory leak that could have caused a zombie thread to be left after an unsuccessful attempt of connecting to the Server; if the Server had been unreachable for long time for any reason and a loop of attempts had been performed, the leak could have become significant.

2.0.4279.18196
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)
Released on 6 Apr 2012

Fixed a potential bug that may have occurred after a SendMessage call, causing an ObjectDisposedException to be internally issued.

2.0.4168.21411
(Compatible with Server since 4.0)
(Compatible with code developed with the previous version)
(No longer compatible with configuration files for the previous version; see the compatibility notes below)
Released on 7 Jun 2011

Introduced compatibility with the ".NET Framework Client Profile".

Removed log4net dependency from the client library; the new interfaces ILogger and ILoggerProvider, together with the new static method setLoggerProvider on LSClient, have to be used to receive the library logging.
COMPATIBILITY NOTE: existing clients still using log4net to print the library logging can easily mantain their behavior by wrapping log4net with the new exposed interfaces. An example of such wrapping is shown in the "test" example.

Introduced automatic reconnection and connection status indicator to the Stock-List demo provided as example.

Changed the default for the ProbeTimeoutMillis property of the ConnectionInfo class from 15000 to 3000 ms.

Improved the notification of closing sessions to the Server, so that unused sessions are discarded as soon as possible.

1.5.4049.30448
(Compatible with Server since 4.0 a4)
(May not be compatible with code developed with the previous version; see the compatibility notes below)
Made available as a prerelease on 4 Feb 2011

Introduced a new "SendMessage" overload supporting:

  • notifications of the processing outcome of each sent message,
  • distinct message sequences, so that only the processing of messages belonging to the same sequence are serialized,
  • automatic batching of multiple messages.

The new overload also supports an optional timeout to override the server side <missing_message_timeout_millis> setting.
Sequence and timeout information can be supplied through the new MessageInfo type.
See the docs for all the details.

Fixed a bug that may lead the OpenConnection method, in case "Stream-sense" is enabled (by default true), to exit before the library is ready to accept "SubscribeTable" calls. In that case a call to SubscribeTable will throw an unexpected exception.

Fixed a bug that prevented a closeConnection/openConnection call to be executed until a previous call to openConnection was returned.

Removed ExtendedTableListener, SimpleTableListener and FastItemListener classes and LSClient.subscribeItems and LSClient.subscribeTable overloads using those classes (all of them were previously deprecated)
COMPATIBILITY NOTE: existing clients still using the deprecated classes and methods have to be modified.

Changed the type of the "contentLength" property of the ConnectionInfo class form int to long.
COMPATIBILITY NOTE: existing clients using the contentLength property in methods that require the use of an int have to be modified and recompiled to avoid exceptions.

Removed deprecated properties from ConnectionConstraints, ConnectionInfo, ExtendedTableInfo, SimpleTableInfo and UpdateInfo public classes.
COMPATIBILITY NOTE: existing clients still using the deprecated properties have to be modified.

Enabled cookie handling; cookies are cleared, no matter their expiry date, each time a new session request is sent.

Made the library CLS Compliant.

1.4.3624.20922
(Compatible with Server since 3.5)
(Compatible with code developed with the previous version)
Released on 16 Feb 2010

Introduced properties in place of fields in the ConnectionInfo and ConnectionConstraints bean classes; using the fields is now deprecated.
Introduced properties in place of getter methods in the SimpleTableInfo and ExtendedTableInfo bean classes; using the getter methods is now deprecated.
Introduced properties in place of getter methods in the IUpdateInfo interface; using the getter methods is now deprecated.

Restored the reuse of HTTP connections, which was suppressed because of a known limitation in .NET 2.0 HTTP implementation, eventually fixed in 2007.

Changed the API documentation format. Now HTML documentation is provided.
This significantly increases the size of the package.

Introduced a common base class for the various Exception classes defined.

1.3.3537.25767
(Compatible with Server since 3.5)
(May not be compatible with code developed with the previous version; see compatibility notes below)

Introduced the Stream-sense feature; see the new enableStreamSense and streamingTimeoutMillis properties in the ConnectionInfo class.
This feature is enabled by default.
COMPATIBILITY NOTE: existing clients that perform their own management of unresponsive streaming connections could choose to disable the Stream-sense.

Extended the OnSessionStarted method on the IConnectionListener to notify whether streaming or polling mode is in use; when the Stream-sense has been exploited, this may no longer correspond with the requested mode.
COMPATIBILITY NOTE: existing clients have to be modified and recompiled, so as to reimplement the modified method.

1.2.3524.20331
(Compatible with Server since 3.5)
(May not be compatible with code developed with the previous version; see compatibility notes below)

Discontinued the support for .NET version 1.1; version 2.0 or greater is now required. All 1.1 related resources have been removed and the deployment tree has been simplified.
COMPATIBILITY NOTE: existing clients compiled for .NET 1.1 have to be ported to 2.0 in order to take advantage of the upgrade.

Discontinued the support for the utility classes in the Lightstreamer.DotNet.Client.Support namespace.
COMPATIBILITY NOTE: existing clients that take advantage of the included classes have to be modified.

Removed the "topMaxFrequency" and "slowingFactor" members of ConnectionConstraints (previously deprecated).
COMPATIBILITY NOTE: existing clients still using the deprecated properties have to be modified.

Extended the PushUserException in order to report the error code and message supplied by the Server upon refusal of a connection or subscription request.
Previously, a PushServerException with id SERVER_REFUSAL was returned in the same cases.
COMPATIBILITY NOTE: existing clients that perform recovery actions upon a PushServerException may have to be extended.

Added OnEnd in IConnectionListener to provide support for the Server notification for sessions forcibly closed on the Server side.
COMPATIBILITY NOTE: existing clients have to be extended accordingly.

Fixed a bug that caused a polling session to be interrupted after a few seconds with no data activity, in case a pollingIdleMillis setting greater than the reconnectionTimeoutMillis setting were supplied.
Changed the default setting for pollingIdleMillis from 0 to 30000 ms.

Fixed a bug that might cause a batch not to be closed after an obsolete unsubscription request.

Changed the default setting for reconnectionTimeoutMillis from 30000 to 5000 ms.

Fixed the missing wrapping of a WebException occurring during a connection attempt.

Fixed SetRange in ExtendedTableInfo, which should have been ignored; it should not be used, though.

Serialized the calls to the IConnectionListener, by using a dedicated thread.
Fixed a bug that could cause redundant OnFailure calls to the listener.

Clarified the documentation for what concerns the thread model.
Added cloning support to all value objects that can be received from custom API invocations and used clones when storing them internally.

Added support for mocking the library for custom code testing purpose.
The UpdateInfo class has been turned into an interface and named IUpdateInfo.
All the exceptions and all the other classes whose objects may be created by library code and supplied to custom code now have a public constructor and can also be instantiated by custom code.
Note: the LSClient class is instantiated only by custom code and can be freely subclassed or wrapped.
COMPATIBILITY NOTE: existing clients that use the UpdateInfo class have to be modified.

Added getter methods for the various settings in SimpleTableInfo and ExtendedTableInfo.

Fixed the obsolete version number stored in the "strong name" library version.

1.1.3323.32539
(Compatible with Server since 3.5)
Released on 24 Feb 2009

Revised the usage and default value of the probeTimeoutMillis and probeWarningMillis attributes of the ConnectionInfo class, in order to conform with the Web Client Library.
Fixed a bug that might cause probeTimeoutMillis to be used in place of probeWarningMillis.

1.1.3169.20524
(Compatible with Server since 3.5)
Released on 23 Sep 2008

Extended the SimpleTableInfo class in order to take advantage of the support for multiple Data Adapters on the same session, introduced in Lightstreamer Server with version 3.5. In case a nonexistent Data Adapter is specified, a PushServerException with the PushServerException.SERVER_REFUSAL error code will be returned upon subscription.

Introduced the new IHandyTableListener and added subscription methods based on it. The new listener gets rid of the special UNCHANGED values and supports COMMAND logic.
Deprecated ISimpleTableListener, IExtendedTableListener and IFastItemsListener and the subscription methods based on them.
Changed the supplied sample code to use the new listener.

Deprecated the "topMaxFrequency" and "slowingFactor" members of ConnectionConstraints.

Fixed the documentation of PushConnException, whose constructors are not public.
Added a missing documentation for setRange, which is ignored for ExtendedTableInfo.

Ported the included examples to the new preconfigured Adapters deployment.

1.0.2958.28575
(Compatible with Server since 3.3.1)
Released on 11 Feb 2008

Fixed bugs about the notifications to the ConnectionListener.
Failure caused by problems during a rebind is now properly notified.
The documented notification sequence pattern also contained a mistake.

Added a check for an empty array passed to UnsubscribeTables. This prevents an error issued by the Server.

Fixed a bug, which caused the default Adapter name to be "STOCKLISTDEMO" instead of null (which means the Server default).

Fixed an issue in the API documentation, which suppressed all notifications about exceptions that can be thrown by API calls.

Changed the default connection URL in the included demo.

1.0.2837.23804
(Compatible with Server since 3.3.1)
Released on 9 Oct 2007
1.0.2749.29308
(Compatible with Server since 3.3.1)

Added a check that makes a trailing "/" in the "pushServerUrl" and "pushServerControlUrl" connection properties be managed.

1.0.2747.29135
(Compatible with Server since 3.3.1)

Added a version of the library identified with a "strong name".
This, among other benefits, makes it possible to register the DLL in the Global Access Cache.
See the SDK README.TXT for details.

1.0.2739.27446
(Compatible with Server since 3.3.1)

Changed the default for the suggested response Content-Length for the streaming connections. Now, the size is no longer left as the server default, but is set to a very long value (50000000).

1.0.2735.20708
(Compatible with Server since 3.3.1)

Fixed a bug which might cause undesired delays while reading the updates from the socket stream. The delays only consisted in an unnecessary wait for the next packet; therefore, such delays were small and could be significant only with a low overall update rate, though still limited by the keepalive rate.

1.0.2721.23222
(Compatible with Server since 3.3.1)

Added a check to transparently split a batch of control requests if it would exceed the limit for the length of a request HTTP body configured for the Server.
Server version 3.4.4 or greater is needed for this functionality to be enabled.

Extended the PushConnException to include the origin exception.
This may help diagnostics and recovery actions in the calling code.

1.0.2692.31072
(Compatible with Server since 3.3.1)

Temporarily disabled the reuse of HTTP connections in the .NET 2.0 library, as a workaround for a known limitation in .NET 2.0 HTTP implementation, which issues a connection error when an underlying attempt to reuse a kept-alive connection fails.

1.0.2657.23049
(Compatible with Server since 3.3.1)

Removed an outdated note on the SimpleTableInfo constructor documentation.

1.0.2547.16940
(Compatible with Server since 3.3.1)

Fixed a bug in the example StockListDemo client. Until now, the client did not consider the host and port command line parameters.

1.0.2453.20102
(Compatible with Server since 3.3.1)

Current version upon introduction of Server 3.4 - Web Client 4.1 release.

SDK for Generic Clients
4.1.1 build 1513.1.15
(Compatible with Server since 4.1)
(Compatible with custom clients for the previous version)
Released on 10 Jan 2013

Clarified the encoding of values in regard to UTF-16 surrogate pairs.

4.1 build 1513.1.14
(Compatible with Server since 4.1)
(Compatible with custom clients for the previous version)
Released on 9 Aug 2012
4.1 build 1513.1.12
(Compatible with Server since 4.1)
(Compatible with custom clients for the previous version)

Introduced the "reconf" operation, which allows for dinamically reconfiguring the maximum frequency of currently subscribed items; see the Network Protocol Tutorial document for details.

4.0.3 build 1513.1.11
(Compatible with Server since 4.0)
(Compatible with custom clients for the previous version)
Released on 6 Apr 2012
4.0.2 build 1513.1.8
(Compatible with Server since 4.0)
(Compatible with custom clients for the previous version)
Released on 6 Dec 2011
4.0.1 build 1513.1.3
(Compatible with Server since 4.0)
(Compatible with custom clients for the previous version)
Released on 20 Jul 2011
4.0 build 1513.1.1
(Compatible with Server since 4.0)
(Compatible with custom clients for the previous version)
Released on 8 Jul 2011
4.0 build 1513
(Compatible with Server since 4.0)
(Compatible with custom clients for the previous version)
Released on 7 Jun 2011
4.0 a4 build 1495
(Compatible with Server since 4.0 a3)
(May not be compatible with custom clients for the previous version; see compatibility notes below)
Made available as a prerelease on 4 Feb 2011

Introduced possible padding lines at the end of a response. COMPATIBILITY NOTE: padding lines were already compatible with the streaming response protocol, though the protocol documentation was unclear on response termination aspects. It is expected that a client which successfully handled the protocol can also support the new padding.
Clarified the documentation of the Server response syntax, which was unclear on response termination aspects.

Introduced the "force_rebind" control connection subtype, to force an active streaming connection to be closed with the request for a client rebind to the related session.

3.6.1 build 1470
(Compatible with Server since 3.6.1)
(Compatible with custom clients for the previous version)

Extended the send_message request to behave asynchronously. If a progressive number is specified in the request, the message is enqueued and processed asynchronously and the ordering of the progressive numbers in ensured.
Processing outcome notifications are issued in the push channel.
See the protocol documentation for details.

3.6 build 1463.2
(Compatible with Server since 3.5.1)
(Compatible with custom clients for the previous version)
Released on 16 Apr 2010
3.6 build 1463.1
(Compatible with Server since 3.5.1)
(Compatible with custom clients for the previous version)
Released on 14 Apr 2010
3.6 build 1463
(Compatible with Server since 3.5.1; note that the new protocol features were already supported by the previous version of the Server)
(May not be compatible with custom clients for the previous version; see compatibility notes below)
Released on 16 Feb 2010

Thoroughly revised the way subscriptions are expressed.
The concept of a "window" that contains one or more "tables" has been abandoned; now subscription are only perfomed in "tables".
This is also reflected in the syntax used by the Server to express the updates on the response.
The previous syntax is still available as DEPRECATED, though not reported in the protocol documentation.

Changed the LS_adapter argument of create_session.txt into LS_adapter_set.
The previous value is still supported as DEPRECATED, though not reported in the protocol documentation.

Introduced the END command among the possible messages in the push contents.
Also introduced the END command among the possible answers to a bind_session.txt request.
COMPATIBILITY NOTE: there is no backward compatibility issue in this case; existing custom clients will not receive END commands as long as they keep creating the sessions using the deprecated LS_adapter parameter in create_session.txt (note that bind_session.txt requests that identify a nonexisting session cannot be answered with an END command).

Added the "destroy" case to the available control connections. It allows for asynchronous session closure to be forced on the server side.

Removed the "kill" request, used to close all the sessions owned by a user across a Server instance.
COMPATIBILITY NOTE: existing processes still leaning on this interface have to be changed into using the "destroy" command, which, however, requires that the caller knows the ids of the sessions owned by a user in a Server instance; this information is available to the Metadata Adapter running on that instance.

Fixed an error in the send_message documentation, whereby the SYNC_ERROR response case got dropped.

3.5.1 build 1436
(Compatible with Server since 3.5)
(Compatible with custom clients for the previous version)
3.5 build 1428.4
(Compatible with Server since 3.5)
Released on 28 Jan 2009
3.5 build 1427
(Compatible with Server since 3.5)

Extended the protocol documentation, by including the reference to the possible error codes in Server responses.

Extended the protocol documentation, by clarifying when the http GET method cannot be used.

3.5 build 1422
(Compatible with Server since 3.5)
Released on 23 Sep 2008

Extended the Control Connection protocol to the basic support for multiple Data Adapters introduced in the Server. A new request argument, "LS_data_adapter" allows the client to specify the name of the Data Adapter that supplies all the items in the requested table.

Added an error case for streaming/polling connections in which the requested Adapter Set is not found (previously, an HTTP 500 error was returned).
This may pose compatibility issues on old clients.

Discontinued the LS_top_max_frequency and LS_slowing_factor request parameters and the related TopMaxFrequency and SlowingFactor return headers.
However, old clients which use the above parameters and headers are still supported.

Modified the meaning of the MaxBandwidth return header on the streaming and polling connection, which was not useful at all. The header is now always sent and it reports the server-side constraint (see the protocol documentation for details).
This may pose compatibility issues on old clients.

Fixed an error in the protocol documentation in paragraph 4.1: the Server answer does not contain space characters.

Changed the examples included in the protocol documentation document. Now they are based on a local installation of Lightstreamer Server, rather than the installation running on Lightstreamer site.

3.4.8 build 1398
(Compatible with Server since 3.4.6)
Released on 6 Mar 2008
3.4.7 build 1395
(Compatible with Server since 3.4.6)
Released on 11 Feb 2008

Added an error case for attempts to rebind to a session that was created by the Web Client Library (previously, it was a SYNC ERROR case).

Added an error case for control connections which fail because of some unexpected precondition (e.g. a delete of a nonexistent subscription).
Previously, this kind of error gave rise to a generic error page and could stop the evaluation of an aggregated control request.

3.4.6 build 1393
(Compatible with Server since 3.4.6)
Released on 4 Jan 2008
3.4.6 build 1391
(Compatible with Server since 3.4.6)
Released on 6 Dec 2007

Fixed an error in the protocol documentation, in paragraph 4.6.3 The keyword for the "overflow" message, reported as "O", is actually "OV".

Fixed an out-of-date reference in the protocol documentation, in paragraph 2.1.3 Removed spurious lines in the protocol documentation, in paragraph 4.1

3.4.6 build 1389
(Compatible with Server since 3.4.6)
Released on 22 Nov 2007
3.4.6 build 1385
(Compatible with Server since 3.4.6)
Released on 15 Nov 2007

Introduced the notification, upon session start, of the name of the server socket which handles a session request (the name is the one assigned through the <http_server> or <https_server> configuration element).

3.4.5 build 1376
(Compatible with Server since 3.4)

Fixed an error in the protocol documentation. The LS_requested_buffer_size, LS_requested_max_frequency and LS_snapshot parameter names for the "Multiple Window Mode" (paragraph 4.3.2) should be followed by a window counter.
The related examples were also wrong.

3.4.4 build 1362
(Compatible with Server since 3.4)

Created a dedicated directory within Lightstreamer distribution (previously the documentation was at DOCs/SDKs root level).