Siena - Software
Siena (
Scalable
Internet
Event
Notification
Architecture) is a research project aimed
at designing and constructing a generic
scalable event
notification service. For full details on the
Siena
project follow this
link. This page contains
a change log for the Siena software packages. Siena software is
available for download
here.
Change Log
- 17 May 2015
- Released version 2.0.4 of the Siena
API and router implementation.
Change log:
- Implemented greater-or-equals and less-than-or-equals
constraints for integers
- Minor code and documentation clean-up
- Much overdue changes to adapt to current templetized
collection classes: removed uses of "raw" iterators and
collections, without specific template types; added collection
iterations.
- (PredicatesTableEntry) changed to use array-list of Bloom filters and
a more efficient algorithm to add new Bloom filters.
- (dvdrp.Hash) fixed encoding of negative-value bytes.
- (test.siena.dvdrp.TestBloomFilter) added regression test for
encoding of non-ascii names that contain negative-value bytes.
- (SFFTable) implemented specialized counters map.
- 20 June 2012
- Released version 2.0.3 of the Siena
API and router implementation.
Change log:
- (DVDRPDispatcher) fixed bug when UDP connectors are used and route
updates are lost.
- (DVDRPControl) added ability to read commands from a
configuration file.
- (build process)
- (general) some code cleanup.
- (test) added new topology setup script to replaces old and
faulty one; modified some test scripts to run under ant.
- (documentation) added INSTALL.ant to document ant build.
- 3 February 2012
- Released version 2.0.2 of the Siena
API and router implementation.
Change log:
- (Two-priority queue) changed dequeuing policy to avoid
starvation of the low-priority queue, which is used to process
"slow-path" packets. We now give the low-priority queue a maximum
penalty N such that a packet sitting at the head of the
low-priority queue will never be ignored more than N times. The
maximum penalty is dynamically and statically configurable.
(Note:It might even be a bad idea to have this
two-priority processing scheme giving low priority to some
slow-path packets.)
- (build and source structure) simple cleaned-up: added
top_builddir, removed unused source files.
- (DVDRPDispatcher, HierarchicalDispatcher) Logging: using
simple strings and `+' operator to concatenate them in logging
messages instead of StringBuffer and `append'. This is for
readability but also for efficiency.
- (documentation) moved and expanded installation instructions
into a separate INSTALL file; fixed small typo in
doc/overview.html; removed doc on how to use local Siena access
point, so now only mentioning ThinClient.
- 3 November 2011
- Released version 2.0.0 of the Siena
API and router implementation. This is a new major release. The
most salient feature of this release is a new router architeture
that supports a general network architecture and topology. This
new implementation of the Siena router (or "server" or "broker")
also includes a fast forwarding algorithm.
- 9 Jul 2008
- released version 1.5.5 of the Java
language API and server.
Change log:
- (KAPacketSender/Receiver) some bug-fixes and restructuring. A
critical run was causing a null-pointer exception that was
erroneously masked by the receiver. This is also an attempt to
simplify and improve the architecture of the receiver: the
connection-handling methods are now synchronized on the entire
object, whereas before they were in part synchronized on the
connection-pool. The receiver algorithm is also a bit simpler:
first try to get a connection from the pool, then try to accept a
new connection.
- (tests/util.sh) fixed a small problem, presumably exposed by a
new version of the shell, that was breaking some tests.
- (AttributeValue::isEqualTo) bug-fix. We now correctly use
array-comparison for byte arrays. Patch suggested by Zbigniew
Jerzak (TU-Dresden).
- (covering relations) bug-fix. Symptom: x<=5 does not to cover
x<5. Bug found and fixed by Zbigniew Jerzak (TU-Dresden).
- 9 May 2006
- released version 1.5.4 of the Java
language API and server.
Change log:
- fixed bug in unsubscribe() for only-local subscribers.
- added stream position reference for SENP format errors.
- improved some test drivers.
- 31 January 2005
- released version 1.5.3 of the Java
language API and server.
Change log:
- simplified and fixed makefile rule to build documentation.
- changed URLs to www.cs.colorado.edu, now to serl.cs.colorado.edu;
- fixed bad links to examples.
- 27 October 2004
- released version 1.5.2 of the Java
language API and server.
Change log:
- fixed a bug in HierarchicalDispatcher that affected the
delivery of notifications to local subscribers. Thanks to
Anton Michlmayr <[email protected]>.
- 14 September 2004
- released version 1.5.1 of the Java
language API and server.
Change log:
- fixed bug in subscription poset. The problem occurs when a
new subscription is inserted on top of (i.e., covering) an
existing root subscription. In this case, the insertion
function failed to remove the existing subscription from
the roots set. Thanks a lot to J�rgen Andreas Michaelsen
<[email protected]> for reporting a test that
highlights the bug.
- fixed bug in the initialization of SENPBuffers that caused
decodeXyz methods to fail.
- changed Notification.toString and Filter.toString to use
encodeSimple. This encoding does not include the "event"
and "filter" keywords, respectively, and therefore makes
the Notification.toString and Filter.toString methods
compatible with SENP.decodeNotification and
SENP.decodeFilter, respectively.
- 28 November 2003
- released version 1.5.0 of the Java
language API and server.
Change log:
- simplified client-master protocol. Eliminated WHO/INF
exchange between clients and masters. This change
simplifies the initial client-master connection reducing
the number of messages and removing the need to have
globally unique identifiers. WARNING: this new
protocol is not compatible with previous versions.
- added notification input/output sequencer. Sequencers can be used
to deliver notifications in the order they were published. (See
documentation of NotificationInputSequencer and
NotificationOutputSequencer)
- fixed and improved monitoring facility, now fully compatible with
the Siena Monitor (see http://www.cs.colorado.edu/serl/siena/smon/)
- various small corrections and improvements to Makefile and
tests/Makefile
- 12 December 2002
- released version 1.4.3 of the Java
language API and server.
Change log:
- fixed bug in the cleanup function of HierarchicalDispatcher
that caused a communication exception. Thanks to Phil Varner
<[email protected]>
- fixed other synchronization issues in cleanup functions to
prevent erroneous removal of active interfaces. Thanks to
Rich Honhart <[email protected]> and Aaron
M. Crickenberger <[email protected]>.
- improved shutdown() for KAPacketReceiver that compensates for
lost close exception at the TCP level for some Java
implementations.
- fixed ssl communication tests
- added constructor in ThinClient that takes user-specified
identifier
- added getIdentity() method to ThinClient
- added exception to setMaster() when the first connection to
the new master fails (suggested by Michael Frank
<[email protected]>)
- grouped interface management into IFManager class and contacts
management into ContactsTable class
- fixed and improved serialization of Notifications and Filters.
Thanks to Mauro Caporuscio <[email protected]>
- minor fixes and additions in documentation.
- 11 June 2002
- released version 1.4.2 of the
Java language API and server.
Change log:
- fixed bug in receivers, reporting wrong address (0.0.0.0)
- finalized restructuring of
HierarchicalDispatcher
with Interface
class. Fixed missing reference
counter increment.
- finalized subscriptions persistence mechanism: added
documentation, added configuration parameters, added check for
invalid subscribers, and added test
- minor fixes in tests and makefiles
- minor fixes in documentation.
- 14 April 2002
- released version 1.4.1 of the
Java language API and server.
Change log:
- compiled and tested under Java 1.4.0
- fixed minor bug in test programs
- initial restructuring of
HierarchicalDispatcher
with Interface
class
- reuseable senders
- cleanup function for interface table and contacts
- added configure test for JSSE (ssl) features
- added configure option to set
CLASSPATH
- fixed minor bugs in package documentation overview files
- 12 March 2002
- released version 1.4.0 of the
Java language API and server.
Change log:
- restructuring into packages: now the communication components
(packet senders and receivers) are isolated in the
siena.comm
package
- added basic communication security through SSL receiver/sender
pair.
- much improved common testing infrastructure. All tests have
been adapted to this uniform framework
- minor changes in
PacketSender
interface: added
shutdown()
method.
- minor changes in
PacketReceiver
interface: added
address()
method to replace deprecated
uri()
. The reason for this change is more
conceptual than practical: the term "address" is more
appropriate than the term "uri" because that entity provides a
way to reach a PacketReceiver
, not necessarily to
identify one.
- added configure test to detect some JVM 1.3 features
- new and updated text in documentation
- moved some diagnostic messages to logging (rather than error)
for non-fatal packet receiver errors.
- 19 January 2002
- released version 1.3.0 of the
Java language API and server.
Change log:
- major changes in the allocation and handling of I/O buffers in
HierarchicalDispatcher
. Many thanks to John
Giacomoni <[email protected]> who helped with
lots of experiments and discussions
- added new packet sender/receiver pair using persistent TCP
connections. The receiver is implemented by the
KAPacketReceiver
class. Again, many thanks to
John Giacomoni for his contribution to the design of this
component
- changes in thread handling and reduced some synchronization
sections
- fixed minor bug in pattern notification function of
HierarchicalDispatcher
, thanks to Mauro
Caporuscio <[email protected]>
- fixed bug in
Poset
successors, thanks to Phil Gross
<[email protected]>
- removed deprecated members from
AttributeConstraint
TCPUDPPacketSenderFactory
replaced by
GenericSenderFactory
Notification
and Filter
are now
Serializable
- changed
UDPPacketSender
and
UDPPacketReceiver
to recycle internal socket and
buffer objects
- added/updated documentation
- fixed bad html tag in documentation
- 14 September 2001
- released version 0.4.2 of the C++ API.
Change log:
- added constructor to
ThinClient
with specific
identity
- added installation and packaging targets to win32 Makefile
- small modification to improve compliance to standard C++
- 13 September 2001
- released version 1.2.0 of the
Java language API and server.
Change log:
- changed
PacketSenderFactory
mechanism. Now, an
interface, with configurable/default values (implementations)
in HierarchicalDispatcher
and
ThinClient
. This allows for completely pluggable
sender/receiver implementations
- added configure method, used for dynamic
reconfiguration of remote dispatchers
- added
DirectSENPInterface
to allow direct access
to the SENP protocol. This class can be used, for example, to
issue reconfiguration messages
- added new monitoring capability (class
Monitor
)
- cleaned and improved output mechanism for
HierarchicalDispatcher
, including configurable
sender thread pool
- fixed unreachable subscriber collector. Now also configurable
through
HierarchicalDispatcher
parameters
- added command-line parameters to
StartServer
for
new HierarchicalDispatcher
configurations
- added
clearSubscriptions
method for
HierarchicalDispatcher
- fixed some synchronization problems for internal data
structures in
HierarchicalDispatcher
- improved error reporting and logging messages for
HierarchicalDispatcher
- fixed bug in unsubscribe(Pattern)
- minor clean-ups for code and documentation
- 15 July 2001
- released version 0.4.1 of the C++ API.
Change log:
- fixed parsing of string constants "true" and "false",
previously parsed as boolean values.
- added documentation license
- 27 June 2001
- released version 0.4.0 of the C++ API.
Change log:
the C++ API has been rewritten almost entirely from scratch.
The most important new features are:
- complete protocol-level compatibility with the most recent
Java server
- native win32 port
- new and improved documentation
- 5 February 2001
- released version 1.1.2 of the
Java language API and server.
Change log:
- added UDP packet sender/receiver and corresponding support in
PacketSenderFactory
- added
setHostName(String address)
to
TCPPacketReceiver
and
UDPPacketReceiver
, which may be used to set the
address of a receiver explicitly. It might be necessary to
use this method in cases in which the JVM can't figure out (at
least one of) its externally-visible IP addresses.
- added
-udp
command-line option to
StartServer
to start up a server using a UDP
receiver instead of a TCP receiver
- added
-host address
command-line option to
StartServer
to set its externally-visible address
AttributeValue
is now Serializable
- added
void shutdown()
function to
Siena
interface
- added documentation here and there
- fixed some iterations in
Filter
,
Notification
, and in Covering
(implementation of the covering relations) to use more
efficient Map.Entry
instead of iterating through
keySet
and performing separate key-based access.
- fixed
static main()
in StartServer
,
now public
.
- cleaned various unused
import
clauses
- 5 December 2000
- released version 1.1.1 of the
Java language API and server. This
release introduces important licensing changes
Change log:
- split binary distribution into API and
server
- the API package is released under the GNU Lesser General Public License. It
includes all the classes composing the Siena interface, plus
the
ThinClient
implementation of the Siena
service
- the server package is released under the GNU General Public License. It
includes the
HierarchicalDispatcher
implementation of the Siena service
- 17 November 2000
- released version 1.1.0 of the
Java language API and server.
Change log:
- added receiver/sender framework to modularize the
communication layer of Siena. This framework includes
interfaces
PacketReceiver
and
PacketSender
, a packet-sender factory, and a
TCP-based implementation of receiver and sender
- changed
HierarchicalDispatcher
and
ThinClient
to use the new receiver/sender
framework
- fixed bug in
HierarchicalDispatcher.setMaster()
that sent a bad packet to the master server (null
subscription)
- changed test program TestNotificationBuffer.java to be
compatible with jdk 1.2.2
- 30 October 2000
- released version 1.0.3 of the
Java language API and server.
Change log:
- added and fixed handling of null values
- added class
NotificationBuffer
which can be used
to as a "mailbox" for notifications.
- updated examples
- included examples in automatic documentation
- 30 October 2000
- released version 1.0.2 of the
Java language API and server.
Change log:
- fixed bug in copy constructor of
AttributeValue
that caused notifications and filters to share (mutable) byte
arrays
- 15 October 2000
- released version 1.0.1 of the
Java language API and server.
Change log:
- added copy constructors to
Filter
,
Notification
, Pattern
,
AttributeConstraint
, and
AttributeValue
- added duplication of notifications and patterns on
notify()
. This makes it safe for applications to
modify notifications and patterns received from Siena
- added duplication of filters and patterns on
subscribe()
. This makes it safe for applications
to modify and re-use filters and patterns used in
subscriptions
- 6 October 2000
- released version 1.0.0 of the
Java language API and server.
Change log:
- added
ThinClient
class. ThinClient
implements a simple proxy to an external Siena server.
- added event sequence recognition capability. Added class
Pattern
and corresponding subscribe/unsubscribe
functions.
- added method
notify(Notification[])
to Notifiable
interface to pass sequences of notifications.
- added class
Op
for easier definition of codes for
selection operators.
- added and improved logging and error reporting
- added various tests
- removed documentation for internal (non-public) classes
- added much class-specific documentation
- added overview page for documentation
- fixed bug that caused wrong transmission of boolean values
- added
--with-javabin
option to configure
.
- 30 June 2000
- released version 0.4.3 of the
Java language API and server.
Change log:
- fixed bug that caused wrong transmission of large
long
values.
- fixed bug in
AttributeValue.booleanValue()
that
caused incorrect value for boolean attributes
- fixed some cross-references in documentation
- added some documentation
- 9 May 2000
- released version 0.4.2 of the
Java language API and server.
Change log:
- added digits in attribute names. Now attribute names can contain
letters, digits, underscores, dots, and forward slashes. See the
documentation of
Event
for details
- fixed bug in
HierarchicalDispatcher.setMaster()
that
caused incorrect forwarding of subscription to new master server
- fixed concurrent modification problem for subscriptions poset in
HierarchicalDispatcher.setMaster()
- fixed some typos in documentation
- added some documentation
- 28 Apr 2000
- released version 0.4.0 of the
Java language API and server. From now
on, a change log summary will be available (on this page) for
every new release.
Change log:
- added and improved user documentation, mainly for
HierarchicalDispatcher
- added asynchronous notification mechanism for
HierarchicalDispatcher
- added
suspendMaster()
and resumeMaster()
for HierarchicalDispatcher
- added automatic garbage collection mechanism for stale
subscriptions (see
removeUnreachableSubscribers()
in
HierarchicalDispatcher
)
- added debug option to HierarchicalDispatcher
(
setDebug()
and getDebug()
) and a
corresponding option to StartServer (-debug
)
- fixed bug in subscriptions poset management in
HierarchicalDispatcher
- fixed race conditions in
HierarchicalDispatcher
that
caused some initial notifications and subscription not to be
forwarded to the master server
- adapted code examples on this page to the new interface
- 17 Apr 2000
- released version 0.3.3 of the
Java language API and server. This new
version features major modifications and improvements,
including changes in the Siena protocol. This new version is
not compatible with any one of the previous versions.
- 1 Mar 2000
- released version 0.3 of the C++ API and
version 0.3 of the C++ Server. From now on, the C++ API and the
C++ server will be distributed and maintained separately.
- 28 Feb 2000
- released version 0.2.4 of the Java
language API and server.