Am 2013-09-16 10:00, schrieb Alexander Broekhuis:
[..]
Out of curiosity and for compatibility with Java, is there also some
java
support for it? I am still interested in writing a java version as
well.
Maybe you could provide some technical details on the working of it.
The whole netstring spec is quite straightforward
(http://cr.yp.to/proto/netstrings.txt). Hence it should not be that
difficult to use it in Java. Probably there are already some
implementations available.
Also note that shared memory segments or semaphores might be left in
the
system and needs to be removed manually (see ipcs, ipcrm) when CELIX
does
not shutdown as expected.
Did you use APR for this? Or doesn't APR support semaphores etc? I
haven't
looked at it at all, but using APR would be great.
I used the apr_shm routines, but unfortunately I could not use
apr_global_mutex routines as the re-opening of the mutex in a child
process only works if you have the pointer to the original created mutex
available, which in turn could not be saved in the shared memory as
apr_shm does not support fixed addresses for the shared memory
attachment.
Also, does the code check if there is anything left when starting
again?
It does check and although tries to attach to the shared memory if
available. But it is a little bit more tricky for the semaphores as
there might be the need to re-initalize them. Especially for the
discovery part - using the current implementation it is not possible to
determine whether there is already another celix instance running which
has initialized those semaphores or whether they have been left from an
segfaulting celix.
Greetings,
Bjoern