[orbitcpp-list] perform_work, pending_work, can't work when blocking
Status: Beta
Brought to you by:
philipd
From: <la...@se...> - 2000-12-21 02:19:09
|
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 la...@se... Seascape Communications (650) 327-6890 -=+=--=+=--=+=--=+=--=+=--=+=--=+=--=+=--=+=--=+=--=+=--=+=- |