On Ter, 2006-09-26 at 10:03 +1000, Russell Strong wrote: > Hi, > > I've been pulling my hair out the last couple of days trying to get a > simple python/ORBit example working. > > The server code ( see below ) show the following error > Traceback (most recent call last): > File "server", line 14, in increment > self.count += 1 > AttributeError: 'Counter' object has no attribute 'count' > > Adding a line print dir(self) to increment shows there really is no > count. Huh??? > > The client ( see below ) shows: > Traceback (most recent call last): > File "client", line 13, in ? > counter.increment() > CORBA.UNKNOWN > > HELP !!! > > Client Code > ---------------- > > #!/usr/bin/env python > > import ORBit > ORBit.load_file ('Test.idl') > import CORBA, Test > > orb = CORBA.ORB_init() > ior = open('/tmp/orbit-python.ior').readline() > counter = orb.string_to_object(ior) > > for i in xrange(10001): > try: > counter.increment() > except Test.Counter, data: > print 'Overflow : ', data.count > > > Server Code > ---------------- > > #!usr/bin/env python > > import ORBit > ORBit.load_file('Test.idl') > import CORBA, Test, Test__POA > > class Counter(Test__POA.Counter): > > def __init__(self): > Test__POA.Counter.__init__(self) > self.count = 0 > > def increment(self): > self.count += 1 > if self.count > 10000: > e = Test.TestInterface.Overflow() > e.count = self.count > raise Test.TestInterface.Overflow, e > > orb = CORBA.ORB_init() > poa = orb.resolve_initial_references("RootPOA")
If you change this code: > ref = Counter()._this() to this: > counter = Counter() > ref = counter._this() Then it works (after you fix the rest of the code, s/Test.TestInterface.Overflow/Test.Counter.Overflow/). The reason is that this expression "Counter()._this()" creates a Counter() servant, takes a CORBA object reference to it, but then the servant's reference count drops to zero and the servant is deallocated and deactivated. So the client ends up receiving a reference to a dead object. I'm not completely sure yet, but this looks like a PyORBit bug. Could you open a bug report in bugzilla? Thanks. -- Gustavo J. A. M. Carneiro <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> The universe is always one step beyond logic. _______________________________________________ pygtk mailing list pygtk@daa.com.au http://www.daa.com.au/mailman/listinfo/pygtk Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/