[omniORB] omniNotify 1.0 bug # 1

Robert E. Gruber gruber@research.att.com
Tue, 10 Oct 2000 23:03:06 -0400


My first bug report!  It turns out that notifd does not use the name service
properly if you do not specify a configuration file using the '-c
<configfile>' option.  I will find + fix the bug, but in the meantime just
start notifd with the -c option.

The details:

There is a configuration file called channel.cfg in
<omni_top>/src/services/omniNotify/

I usually start the notifd like this:

prompt> notifd -i -c <omni_top>/src/services/omniNotify/channel.cfg

This makes the daemon interactive and tells it to configure
using the channel.cfg.

One thing channel.cfg specifies is locations for 2 IORs: notifd should put a
factory ior in /tmp/rdifact.ior and a channel ior in /tmp/rdichan.ior (you
can change these locations
by editing channel.cfg)

After starting notifd as above, when I do

prompt> catior `cat /tmp/rdichan.ior`

I get something like this:

Type ID: "IDL:omg.org/AttNotifyChannelAdmin/EventChannel:1.0"
Profiles:
1. IIOP 1.0 135.207.23.31 43230 "9....d......"

I get the same result if I look up the channel in the name service:

prompt> catior `nameclt resolve EventChannel.EventChannel`

Try starting notifd as above and doing these simple sanity tests.
Let me know if this solves the problem.

Thanks,
-- Bob


-----Original Message-----
From: owner-omniorb-list@uk.research.att.com
[mailto:owner-omniorb-list@uk.research.att.com]On Behalf Of
jon@totient.demon.co.uk
Sent: Tuesday, October 10, 2000 6:55 PM
To: omniorb-list@uk.research.att.com
Subject: [omniORB] omniNotify prob

I'm having trouble getting omniNotify to work. It's built but none
of the examples work.....

The start of the problem seems to be that it registers the
ChannelFactory with omniNames and then an EventChannel. But the
the EventChannel is the nil object reference to my blind eye :

the factory is here (2nd IOR)

bind
IOR:010000002b00000049444c3a6f6d672e6f72672f436f734e616d696e672f4e616d696e67
436f6e746578744578743a312e300000010000000000000027000000010100000e0000003139
322e3132382e32332e313000f90a0b0000004e616d6553657276696365 ChannelFactory
ChannelFactory nobject
IOR:010000003a00000049444c3a6f6d672e6f72672f436f734e6f746966794368616e6e656c
41646d696e2f4576656e744368616e6e656c466163746f72793a312e30000000010000000000
000028000000010100000e0000003139322e3132382e32332e313000ce060c00000039e398e1
3f9d23fd00000001

the event channel here (2nd IOR)

bind
IOR:010000002b00000049444c3a6f6d672e6f72672f436f734e616d696e672f4e616d696e67
436f6e746578744578743a312e300000010000000000000027000000010100000e0000003139
322e3132382e32332e313000f90a0b0000004e616d6553657276696365
EventChannel EventChannel nobject IOR:01000000010000000000000000000000


then in all the examples code it tests if it is nil, and exits if so :
for example from struct_psuh_supplier.cc
...........
        name.length(1);
        name[0].id   = CORBA::string_dup(channelName);
        name[0].kind = CORBA::string_dup(channelName);
        if ( verbose )
                cout << "Resolving reference to: '"<<channelName<<"'" <<
endl;
        echannel_ref = name_context->resolve(name);
        channel = CosNA_EventChannel::_narrow(echannel_ref);
        if ( CORBA::is_nil(channel) ) {
                cerr << "Failed to narrow Event Channel !" << endl;
                exit(1);
        }
..............

and the output I get reflects exactly that :-

[jon]# ./struct_push_supplier -v
Resolving reference to: 'NameService'
Resolving reference to: 'EventChannel'
Failed to narrow Event Channel !

Any ideas?

Jon