<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to news</title><link href="https://sourceforge.net/p/ebus/news/" rel="alternate"/><link href="https://sourceforge.net/p/ebus/news/feed.atom" rel="self"/><id>https://sourceforge.net/p/ebus/news/</id><updated>2025-12-15T20:23:27.636000Z</updated><subtitle>Recent posts to news</subtitle><entry><title>eBus 7.6.2: Merry Christmas!</title><link href="https://sourceforge.net/p/ebus/news/2025/12/ebus-762-merry-christmas/" rel="alternate"/><published>2025-12-15T20:23:27.636000Z</published><updated>2025-12-15T20:23:27.636000Z</updated><author><name>Charles Rapp</name><uri>https://sourceforge.net/u/cwrapp/</uri></author><id>https://sourceforge.netcf3b19600057e6f5522d488c635bb1b7da1931f6</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;eBus release 7.6.2&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;*** ATTENTION ***&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;  As of release 6.0.0, eBus is now based on Java 11.
  eBus does &lt;span class="gs"&gt;*not*&lt;/span&gt; use modules at this time. Therefore include
  eBus jars in -classpath and not -modulepath.

  The eBus license also converted from LGPL 2.1 to
  Apache License 2.0. The reason for the license change is
  due to Apache License 2.0 being more end-user friendly that
  LGPL 2.1.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;hr/&gt;
&lt;p&gt;Release 7.6.2 made the following changes:&lt;/p&gt;
&lt;p&gt;Feature Requests:&lt;/p&gt;
&lt;p&gt;(No new features.)&lt;/p&gt;
&lt;p&gt;Bugs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ticket 42: Further improvements to AsyncSocket&lt;br/&gt;
    performance. Includes AsyncSocket unit test re-write to&lt;br/&gt;
    increase test reliability.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr/&gt;
&lt;p&gt;There are four download folders:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Library: contains the eBus API jar files.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Documentation: contains the eBus Programmer's Manul in PDF and&lt;br/&gt;
          Javadoc folders in tar, gzipped and zip formats.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Source Code: snapshot of eBus maven project files at release&lt;br/&gt;
          time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tools: contains the eBus GUI application and configuration file&lt;br/&gt;
          needed to run the application.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</summary></entry><entry><title>eBus 7.6.0: Happy New Year!</title><link href="https://sourceforge.net/p/ebus/news/2025/01/ebus-760-happy-new-year/" rel="alternate"/><published>2025-01-03T12:59:24.463000Z</published><updated>2025-01-03T12:59:24.463000Z</updated><author><name>Charles Rapp</name><uri>https://sourceforge.net/u/cwrapp/</uri></author><id>https://sourceforge.net7b3883f69c2070a61742ca24dfa879b478d13fa5</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Release 7.6.0 made the following changes:&lt;/p&gt;
&lt;p&gt;Feature Requests:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Ticket 40: Added ERequestMonitor role.&lt;br/&gt;
    Request monitor is able to monitor request, reply, and&lt;br/&gt;
    cancellation message coversation between a requester and a&lt;br/&gt;
&lt;em&gt;local&lt;/em&gt; replier. Feed scope is local only and cannot be&lt;br/&gt;
    changed. Also request monitors do &lt;em&gt;not&lt;/em&gt; know whether a&lt;br/&gt;
    request feed is up or not. This means that messages arrive&lt;br/&gt;
    without warning.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ticket 41: Change loggers in core module to AsyncLogger.&lt;br/&gt;
   All core module classes which use logging now use&lt;br/&gt;
   AsyncLoggerFactory to create a slf4j Logger instance.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bugs:&lt;/p&gt;
&lt;p&gt;(No bug fixes.)&lt;/p&gt;
&lt;p&gt;There are four download folders:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Library: contains the eBus API jar files.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Documentation: contains the eBus Programmer's Manul in PDF and&lt;br/&gt;
          Javadoc folders in tar, gzipped and zip formats.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Source Code: snapshot of eBus maven project files at release&lt;br/&gt;
          time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tools: contains the eBus GUI application and configuration file&lt;br/&gt;
          needed to run the application.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr/&gt;
&lt;p&gt;*** ATTENTION ***&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;  As of release 6.0.0, eBus is now based on Java 11.
  eBus does &lt;span class="gs"&gt;*not*&lt;/span&gt; use modules at this time. Therefore include
  eBus jars in -classpath and not -modulepath.

  The eBus license also converted from LGPL 2.1 to
  Apache License 2.0. The reason for the license change is
  due to Apache License 2.0 being more end-user friendly that
  LGPL 2.1.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;hr/&gt;&lt;/div&gt;</summary></entry><entry><title>eBus 7.5.0: Merry Christmas!</title><link href="https://sourceforge.net/p/ebus/news/2024/12/ebus-750-merry-christmas/" rel="alternate"/><published>2024-12-17T19:16:01.625000Z</published><updated>2024-12-17T19:16:01.625000Z</updated><author><name>Charles Rapp</name><uri>https://sourceforge.net/u/cwrapp/</uri></author><id>https://sourceforge.net0ef36f6df141fde96a5cdf19abe01c92fa6e9ab3</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;eBus 7.5.0 Downloads&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;*** ATTENTION ***&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;  As of release 6.0.0, eBus is now based on Java 11.
  eBus does &lt;span class="gs"&gt;*not*&lt;/span&gt; use modules at this time. Therefore include
  eBus jars in -classpath and not -modulepath.

  The eBus license also converted from LGPL 2.1 to
  Apache License 2.0. The reason for the license change is
  due to Apache License 2.0 being more end-user friendly that
  LGPL 2.1.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;hr/&gt;
&lt;p&gt;Release 7.5.0 made the following changes:&lt;/p&gt;
&lt;p&gt;Feature Requests:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Ticket 36: Improved net.sf.eBusx.geo API.&lt;br/&gt;
    Added classes GeoMultiPolygon and GeoCollection, Circle, and Ellipse.&lt;br/&gt;
    (see &lt;a href="https://gist.github.com/virtualandy/1233401" rel="nofollow"&gt;https://gist.github.com/virtualandy/1233401&lt;/a&gt;).&lt;br/&gt;
    Added LineString ring validation required for polygons.&lt;br/&gt;
    Improved unit test code coverage.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ticket 37: Added TimeLocation to EInterval.&lt;br/&gt;
   EInterval has begin, end time location data members.&lt;br/&gt;
   Moved TimeLocation enum from net.sf.eBus.feed.historic.EHistoricSubscribeFeed&lt;br/&gt;
   to net.sf.eBusx.time.EInterval.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ticket 38: Added bill-of-material module.&lt;br/&gt;
   Add bill-of-materianl (bom) module to eBus.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ticket 39: Asynchronous slf4j logging.&lt;br/&gt;
   net.sf.eBus.logging.AsyncLogger encapsulates user slf4j Logger&lt;br/&gt;
   and performs actual logging on eBus run queue thread.&lt;br/&gt;
   AsyncLoggerFactory used to create AsyncLogger instance.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bugs:&lt;/p&gt;
&lt;p&gt;Ticket 39: General eBus code improvement.&lt;br/&gt;
  + Use java.lang.Objects where possible when testing possibly&lt;br/&gt;
    null references and for multi-object hashing.&lt;br/&gt;
  + Added net.sf.eBusx.monitor.MonitorId unit test.&lt;br/&gt;
  + Add additional logging where needed for testing purposes.&lt;/p&gt;
&lt;p&gt;There are four download folders:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Library: contains the eBus API jar files.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Documentation: contains the eBus Programmer's Manul in PDF and&lt;br/&gt;
          Javadoc folders in tar, gzipped and zip formats.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Source Code: snapshot of eBus maven project files at release&lt;br/&gt;
          time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tools: contains the eBus GUI application and configuration file&lt;br/&gt;
          needed to run the application.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</summary></entry><entry><title>eBus 7.4.0: Keeping an eye on things.</title><link href="https://sourceforge.net/p/ebus/news/2024/09/ebus-740-keeping-an-eye-on-things/" rel="alternate"/><published>2024-09-04T15:11:46.983000Z</published><updated>2024-09-04T15:11:46.983000Z</updated><author><name>Charles Rapp</name><uri>https://sourceforge.net/u/cwrapp/</uri></author><id>https://sourceforge.net7df376f0f5b1e539b2c7a086853f81484786d258</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Release 7.4.0 made the following changes:&lt;/p&gt;
&lt;p&gt;Feature Requests:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Ticket 35: Improved net.sf.eBusx.monitor API.&lt;br/&gt;
    Existing eBus monitoring package updated to make API easier&lt;br/&gt;
    to understand and use. Changes are to what notification and&lt;br/&gt;
    request/reply messages are supported by the monitor&lt;br/&gt;
    package. It is now possible for a monitoring application to&lt;br/&gt;
    use an EMultiSubscribeFeed to access all locally and/or&lt;br/&gt;
    remotely monitored eBus application.&lt;/p&gt;
&lt;p&gt;The egui application has been updated with a Monitor window&lt;br/&gt;
which provides status of the local egui application and&lt;br/&gt;
remote eBus applications to which the gui is connected.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bugs:&lt;/p&gt;
&lt;p&gt;(No bug fixes.)&lt;/p&gt;
&lt;p&gt;There are four download folders:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Library: contains the eBus API jar files.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Documentation: contains the eBus Programmer's Manul in PDF and&lt;br/&gt;
          Javadoc folders in tar, gzipped and zip formats.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Source Code: snapshot of eBus maven project files at release&lt;br/&gt;
          time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tools: contains the eBus GUI application and configuration file&lt;br/&gt;
          needed to run the application.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</summary></entry><entry><title>eBus 7.3.0: Keeping time.</title><link href="https://sourceforge.net/p/ebus/news/2024/06/ebus-730-keeping-time/" rel="alternate"/><published>2024-06-22T13:55:17.774000Z</published><updated>2024-06-22T13:55:17.774000Z</updated><author><name>Charles Rapp</name><uri>https://sourceforge.net/u/cwrapp/</uri></author><id>https://sourceforge.net13664831ec39c3521e043ababeea150861a892b7</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Release 7.3.0 made the following changes:&lt;/p&gt;
&lt;p&gt;Feature Requests:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Ticket 33: Switch to org.slf4j logging framework.&lt;br/&gt;
    Since its inception, eBus used java.util.logging framework&lt;br/&gt;
    since that was the only framework guaranteed to be available&lt;br/&gt;
    20 years ago.&lt;/p&gt;
&lt;p&gt;With the rise of Maven and Gradle, other logging frameworks&lt;br/&gt;
are easily obtained. Given this, eBus API now uses slf4j,&lt;br/&gt;
a logging framework which supports any number of underlying&lt;br/&gt;
logging frameworks. This means that eBus will use the logging&lt;br/&gt;
framework the application chooses.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ticket 34: net.sf.eBus.timer package.&lt;br/&gt;
    net.sf.eBus.timer.EScheduledTimer works with the eBus&lt;br/&gt;
    dispatcher framework so that when a scheduled task expires,&lt;br/&gt;
    that task is placed on the associated eBus objects task queue&lt;br/&gt;
    and the eBus object is dispatched. That means the eBus object&lt;br/&gt;
    maintains its effective single threaded nature which eBus&lt;br/&gt;
    dispatcher guarantees.&lt;/p&gt;
&lt;p&gt;Using timers like java.util.Timer or&lt;br/&gt;
java.util.concurrent.ScheduledExecutorService introduces&lt;br/&gt;
threads outside eBus dispatcher and so an eBus object becomes&lt;br/&gt;
multi-threaded, requiring thread coordination.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bugs:&lt;/p&gt;
&lt;p&gt;(No bug fixes.)&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>eBus 7.2.0: Message stores for historic feed.</title><link href="https://sourceforge.net/p/ebus/news/2024/01/ebus-720-message-stores-for-historic-feed/" rel="alternate"/><published>2024-01-20T15:34:55.362000Z</published><updated>2024-01-20T15:34:55.362000Z</updated><author><name>Charles Rapp</name><uri>https://sourceforge.net/u/cwrapp/</uri></author><id>https://sourceforge.net6dafecbf88ca2e24016074d4a2d9e844f2beb883</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Release 7.2.0 made the following changes:&lt;/p&gt;
&lt;p&gt;Feature Requests:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Ticket 32: Add IEMessageStore implementations.&lt;br/&gt;
    Provide two message store implementations: in-memory and SQL.&lt;br/&gt;
    In-memory stores a fixed number historic messages using a&lt;br/&gt;
    ring buffer. These messages are &lt;em&gt;not&lt;/em&gt; persisted.&lt;/p&gt;
&lt;p&gt;The second stores eBus messages in an SQL database. User is&lt;br/&gt;
required to provide code which stores, retrieves, and decodes&lt;br/&gt;
eBus messages to and from the database.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bugs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;On-going work cleaning up Sonar code smells.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are four download folders:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Library: contains the eBus API jar files.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Documentation: contains the eBus Programmer's Manul in PDF and&lt;br/&gt;
          Javadoc folders in tar, gzipped and zip formats.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Source Code: snapshot of eBus maven project files at release&lt;br/&gt;
          time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tools: contains the eBus GUI application and configuration file&lt;br/&gt;
          needed to run the application.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</summary></entry><entry><title>eBus 7.1.0: Minor improvements and bug fix.</title><link href="https://sourceforge.net/p/ebus/news/2023/12/ebus-710-minor-improvements-and-bug-fix/" rel="alternate"/><published>2023-12-14T12:48:42.125000Z</published><updated>2023-12-14T12:48:42.125000Z</updated><author><name>Charles Rapp</name><uri>https://sourceforge.net/u/cwrapp/</uri></author><id>https://sourceforge.netaa5684de4fb006e7fec22794c7da3a0afd6a18d9</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Release 7.1.0 made the following changes:&lt;/p&gt;
&lt;p&gt;Feature Requests:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Ticket 30: Add generic parameter to NotifyCallback.&lt;br/&gt;
    Currently, NotifyCallback requires method signature to accept&lt;br/&gt;
    a ENotificationMessage parameter. This means that the&lt;br/&gt;
    NotifyCallback method has to downcast the message parameter&lt;br/&gt;
    to the target message type.&lt;/p&gt;
&lt;p&gt;Adding the generic parameter:&lt;/p&gt;
&lt;p&gt;public interface NotifyCallback&amp;lt;t extends="" enotificationmessage=""&amp;gt;&amp;lt;/t&amp;gt;&lt;/p&gt;
&lt;p&gt;to NotifyCallback and using that  parameter in:&lt;/p&gt;
&lt;p&gt;void call(T msg, IESubscribeFeed feed)&lt;/p&gt;
&lt;p&gt;removes the need for the downcast.&lt;/p&gt;
&lt;p&gt;This is not available for request and reply messages because&lt;br/&gt;
ReplyCallback needs to accept multiple EReplyMessage types&lt;br/&gt;
and RequestCallback does not directly receive the&lt;br/&gt;
ERequestMessage instance. &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ticket 31: Remove lock acquisition from message delivery.&lt;br/&gt;
    Message routing uses EFeedList.feeds() method to find message&lt;br/&gt;
    recipients. This method acquires a lock resulting in&lt;br/&gt;
    inefficient message delivery. This lock is necessary when&lt;br/&gt;
    adding or removing a feed but not when looking up message&lt;br/&gt;
    recipients. A solution is to post the feed scope-to-feed list&lt;br/&gt;
    map to an AtomicReference. This means the feeds() method&lt;br/&gt;
    calls AtomicReference.get() rather than acquiring a lock&lt;br/&gt;
    resulting in improved message routing performance. &lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bugs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ticket 38: InvokeMessageType does not honor @EStringInfo.&lt;br/&gt;
    Annotation @EStringInfo provides information on String&lt;br/&gt;
    message fields. This includes the CharSet used to serialize,&lt;br/&gt;
    de-serialize the String. This information is not honored by&lt;br/&gt;
    InvokeMessageType when it serializes, de-serializes a String&lt;br/&gt;
    type. This needs to be corrected.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are four download folders:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Library: contains the eBus API jar files.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Documentation: contains the eBus Programmer's Manul in PDF and&lt;br/&gt;
          Javadoc folders in tar, gzipped and zip formats.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Source Code: snapshot of eBus maven project files at release&lt;br/&gt;
          time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tools: contains the eBus GUI application and configuration file&lt;br/&gt;
          needed to run the application.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</summary></entry><entry><title>eBus 7.0.0: Reliable UDP connection.</title><link href="https://sourceforge.net/p/ebus/news/2023/10/ebus-700-reliable-udp-connection/" rel="alternate"/><published>2023-10-09T16:29:52.055000Z</published><updated>2023-10-09T16:29:52.055000Z</updated><author><name>Charles Rapp</name><uri>https://sourceforge.net/u/cwrapp/</uri></author><id>https://sourceforge.net340c347491b7818f131eb1421119eebffd170593</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Release 7.0.0 made the following changes:&lt;/p&gt;
&lt;p&gt;Feature Requests:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Ticket 17: Add reliable UDP connection.&lt;br/&gt;
    Since UDP packets may either be dropped or arrive&lt;br/&gt;
    out-of-order, a reliable UDP connection is now in&lt;br/&gt;
    net.sf.eBus.client package. This implementation uses the&lt;br/&gt;
    simplest form of reliability: only one application message&lt;br/&gt;
    may be in flight at a time. Only when the in flight message&lt;br/&gt;
    is acknowledged may the next message be transmitted.&lt;/p&gt;
&lt;p&gt;This allows for only a low transmission rate (one message per&lt;br/&gt;
millisecond). It is felt this initial implementation is good&lt;br/&gt;
enough for most messaging applications.&lt;/p&gt;
&lt;p&gt;eBus configuration updated to support reliable UDP.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ticket 28: Remove deprecated code.&lt;br/&gt;
    eBus code marked with @Deprecated was removed. This means&lt;br/&gt;
    that eBus feeds may only be created and opened using the&lt;br/&gt;
    feed's builder class.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ticket 29: Use org.jctools queues for task and run queue.&lt;br/&gt;
    Replace unbounded java.util.concurrent.ConcurrentLinkedQueue&lt;br/&gt;
    with bounded org.jctools.queue.atomic queues for client task&lt;br/&gt;
    queue  and run queue. Updated eBus configuration to allow&lt;br/&gt;
    bounded queue capacity to be set, both eBus client task queue&lt;br/&gt;
    and run queue.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bugs: (none)&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>eBus next release: 7.0.0</title><link href="https://sourceforge.net/p/ebus/news/2023/08/ebus-next-release-700/" rel="alternate"/><published>2023-08-06T10:42:34.279000Z</published><updated>2023-08-06T10:42:34.279000Z</updated><author><name>Charles Rapp</name><uri>https://sourceforge.net/u/cwrapp/</uri></author><id>https://sourceforge.netdd5e27a54b34a16ba4cf1818dd2c117621df70cb</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;h1 id="reliable-udp-connection"&gt;Reliable UDP Connection.&lt;/h1&gt;
&lt;p&gt;eBus release 7.0.0 will introduce a simple reliable UDP connection guaranteeing UDP packets arrive in order and no missing packets. More about this later.&lt;/p&gt;
&lt;h1 id="deprecated-method-removal"&gt;Deprecated method removal.&lt;/h1&gt;
&lt;p&gt;Release 7.0.0 will also be dropping the deprecated feed open methods and related methods and data members. This means that feeds may only be created using the associated builder. If still using feed open methods, then moving to eBus release 7.0.0 will require code changes.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>eBus 6.6.0: Going Mobile</title><link href="https://sourceforge.net/p/ebus/news/2023/07/ebus-660-going-mobile/" rel="alternate"/><published>2023-07-29T11:28:24.710000Z</published><updated>2023-07-29T11:28:24.710000Z</updated><author><name>Charles Rapp</name><uri>https://sourceforge.net/u/cwrapp/</uri></author><id>https://sourceforge.netb6db51f59b347f81a7e7934e38067fdee56ed646</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;h1 id="ebus-660-going-mobile"&gt;eBus 6.6.0: Going Mobile&lt;/h1&gt;
&lt;p&gt;Release 6.6.0 made the following changes:&lt;/p&gt;
&lt;p&gt;Feature Requests:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ticket 25: Make eBus API Android-compatible&lt;br/&gt;
      This required removing use of &lt;code&gt;java.lang.management&lt;/code&gt; package. Added &lt;code&gt;net.sf.eBus.util.ERuntime&lt;/code&gt; class which provides static method isAndroid which returns true if running on Android Runtime (ART). eBus API v. 6.6.0 is verified as being  Android-compatible.&lt;/li&gt;
&lt;li&gt;Ticket 26: Make StatusReporter a functional interface.&lt;br/&gt;
&lt;code&gt;net.sf.eBus.util.logging.StatusReporter&lt;/code&gt; is now marked with  &lt;code&gt;@FunctionalInterface&lt;/code&gt; allowing compatible methods to be used for status reporting.&lt;/li&gt;
&lt;li&gt;Ticket 27: Use &lt;code&gt;SocketAddress&lt;/code&gt; for binding.&lt;br/&gt;
      Server and client TCP and UDP sockets (both secure and  cleartext) may now be bound to a SocketAddress rather than   just a port. Previous methods which only bound to a port is still supported but will use the wildcard address.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bugs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Ticket 36: Correct TLS handshake race condition.&lt;br/&gt;
      A race condition exists TLS handshake between initiating  client and accepting service. The initiating TCP socket may be told that the the handshake status is FINISHED but the accepted TCP socket is still processing the final handshake message. The result is that the initiating client sends an  eBus logon message before the acceptor is ready to receive it  and so the logon message is ignored.&lt;/p&gt;
&lt;p&gt;Solution is for initiating client to wait for acceptor to  complete its handshake before sending eBus logon message.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ticket 37: Correct &lt;code&gt;ERemoteApp&lt;/code&gt; message key map.&lt;br/&gt;
&lt;code&gt;ERemoteApp&lt;/code&gt; maps message key to the remote advertised or subscribed feed. Because an advertisement and subscription can both reference the same message key, &lt;code&gt;ERemoteApp&lt;/code&gt; can think there is a redundant advertisement or subscription if it  receives both an advertisement and subscription for the same  message key.&lt;/p&gt;
&lt;p&gt;The solution is to use &lt;code&gt;MultiKey2&amp;lt;(Ad, Subscription), EMessageKey&amp;gt;&lt;/code&gt;. This allows both a remote advertisement and subscription to use the same message key.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are four download folders:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Library: contains the eBus API jar files.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Documentation: contains the eBus Programmer's Manul in PDF and&lt;br/&gt;
          Javadoc folders in tar, gzipped and zip formats.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Source Code: snapshot of eBus maven project files at release&lt;br/&gt;
          time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tools: contains the eBus GUI application and configuration file&lt;br/&gt;
          needed to run the application.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</summary></entry></feed>