Free High Performance CORBA Notification Service from AT&T Laboratories |
omniORB Home AT&T Research |
This is a bug-fix release. It fixes two cases where I added default clauses to switch statements to get rid of compiler warnings.
The most significant change from omniNotify 1.2 to 2.0 is that omniNotify 2.0 works with omniORB 4. Many thanks to Duncan Grisby for adding stand-alone autoconf support and also for getting things working on Windows!
For Windows, omniORB4 version 4.0.2 or later is a requirement (and you are strongly urged to use the very latest available omniORB 4 release). For other operating systems, it is probably still possible to using omniNotify 2.0 on top of omniORB3, however I am not going to attempt to keep omniNotify working with omniORB3 in the future, so you are also strongly urged to start using omniORB4!
omniNotify 2.0 adds a number of new administrative features, such as 'object garbage collection' of dead filter, channel, admin and proxy objects. See the channel.cfg file (or standard.cfg) for the params that control garbage collection. Also see the new OutgoingTimeout and IncomingTimeout params in the config file. Garbage collection and new timeout params are also discussed here.
A number of bugs have been fixed, the most important being a couple of deadlock cases as well as a case where an event lock was held across a push call. Internal outgoing event queues for proxies are now cleared properly in all cases where the proxy is no longer in use. Removed the constraint on type and domain names which were formerly restricted to alphanum and underscore -- spec does not have this restriction.
One key difference between building against omniORB3 vs. omniORB4 is the treatment of TimeBase::TimeT type as found in <TOP>/idl/COS/TimeBase.idl, which can either be a struct with 'low' and 'high' fields, or a CORBA::ULongLong, depending on the NOLONGLONG flag:
#ifdef NOLONGLONG struct ulonglong{ unsigned long low; unsigned long high; }; typedef ulonglong TimeT; #else typedef unsigned long long TimeT; #endif
omniORB3 standard builds use the NOLONGLONG flag, while omniORB4 standard builds do not. This is done because omniORB4 has full support for CORBA::ULongLong's passed in ANY values, whereas omniORB3 does not. This affects the type in <TOP>/include/COS/TimeBase.hh and the stubs/skels in the libCOS4 library that is built when omniORB4 is built.
omniNotify 2.x code assumes that it should use the struct form when used with omniORB3, and the CORBA::ULongLong form when used with omniORB4.
Release 1.2 depends on omniORB version 3.0.4. It does not work with omniORB 4.x. omniNotify release 2.0 and later will work with omniORB 4.x.
Platform and supported features: see the 1.1 Release Notes below.
Release 1.2 is mostly a bug-fix release. The following are the changes since release 1.1.1. There is a new ndadmin program in the examples directory. It supports the same Interactive Mode supported by notifd via the -i option. Thus, you can now start notifd without -i, and at any time start up an ndadmin to interactively control it. Note that 'exit' no longer destroys the server, it simply exits the Interactive Mode. To destroy the server, use 'shutdown'.
2. A new delay param, -M, was added to all the examples. Use -h with any of the example programs for info.
See the Old 1.1 Bug List for the list.
This release depends on omniORB version 3.0.4. It should also work with omniORB 4.0.x, however it is being released before omniORB 4.0 is finalized, so no guarantees.
These release notes contain:
It should be possible to build omniNotify on most of the platforms on which one can build the omniORB libraries. So far, we have successfully built omniNotify on:
Porting to Windows NT/2000 is on our list of things to do.
We plan to implement the entire spec, except perhaps for the CosTypedNotify*
interfaces. (We would like feedback on why/whether we should implement the typed channel
interfaces.)
For omniNotify 1.1., in addition to lacking CosTypedNotify* support, these things are not yet implemented:
The current release is omniNotify 1.0 (the initial release). This release depends on omniORB version 3.0.2
Important: The implementation currently uses BOA stubs. We plan to switch to using POA stubs in the near future. If you are considering modifying the omniNotify library or daemon, please contact us first since you are much better off doing developing against the POA code.
Although the current examples are also written using BOA stubs, there are no constraints on what kinds of clients you write. If you write POA-based clients you should include "COS/CosNotification.hh" (and related .hh files) and link against libCOS3. If you write BOA-based clients you should include "COS/BOA/CosNotification.hh" (and related .hh files) and link against libCOSBOA3.
It should be possible to build omniNotify on most of the platforms on which one can build the omniORB libraries. So far, we have successfully built omniNotify on:
omniNotify is not yet a complete implementation of the CORBA Notification Service specification. The following features are not supported in the current release.
In addition, at present there is only partial wildcard support. In general, an event type has two parts, a domain name and type name, written D::T. omniNotify supports a wildcard for the entire domain name and/or type name, but not as a part of a name that contains some character literals. In other words, "*::*", "*::T", "D::*", and "D::T" forms are supported, where D and T are string literals, but an event type such as foo*::bar*zot is not yet supported.
We are in the process of implementing all of the above features. Support for PacingInterval has top priority and should be available very soon.
DSTC has a publicly available conformance test suite for CosNotification services, available as part of a demo download of dCon, a java-based CosNotification service. omniNotify passes all of the test cases in the test suite released with dCon version 2.2. However, we had to fix a bug in 2 of the test cases. EventChannelTest6 and EventChannelTest7 are supposed to test the use of the MaxConsumers and MaxSuppliers QoS properties. One test is supposed to set MaxConsumers to 1 and then try to connect more than 1 consumer, while the other is supposed to set MaxSuppliers to 1 and then try to connect more than 1 supplier. The bug is that the test which sets MaxConsumers tries to connect 2 suppliers while the test which sets MaxSuppliers tries to connect 2 consumers. Switching the use of MaxConsumers/MaxSuppliers in the 2 tests gives you correct versions of these test cases.
For comments, feedback, etc, please see the 'Keep in touch' page. |