perform_work, pending_work, can't work when blocking



Perhaps I'm writing software all wrong, but I'm surprised how many
challenges I'm running into using orbit for a simple but real server.
I'm doubly surprised because I see so many postings of people working
on the software.  Perhaps the problems I'm having are really odd.

I'd like the server to do something useful in addition to handling
client requests (re-registering itself with a list of servers in a timely
manner, like every few minutes).  I can imagine many scenarios
where it is not acceptable to have orb->run() essentially lockup your
server now and forevermore!

I see someone has at least thought about this by the tantilizing but
unimplemented pending_work and perform_work methods in
orbitcpp_orb.hh.

Does anyone else have the need for this?  Is anyone working on it?
I've  hacked a version that sets an alarm in src/IIOP/connection.c
before select is called, then perform my work in the signal handler.
This is inferior to a real implementation.  If anyone is working on a
real implementation, please let me know so I can help and use it.  If
no one is working on this, also let me know and perhaps I will then
write the real implementation.

Also, in a previous email, I pointed out the problem in orbit where
a client will hang indefintely when the server crashes.  Can it be
no one else has a problem with this behavior?!  I fixed this by hacking
orbit's src/orbit-idl-compiler/backends/corbit-idl-c-stubs.c where it
generated "write" code that did not error check because the environment
variable BACKWARDS_COMPAT_0_4 was defined.

-Lance.

-- 
-=+=--=+=--=+=--=+=--=+=--=+=--=+=--=+=--=+=--=+=--=+=--=+=-
Lance Welsh              lance seacoms com
Seascape Communications  (650) 327-6890
-=+=--=+=--=+=--=+=--=+=--=+=--=+=--=+=--=+=--=+=--=+=--=+=-
 

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]