[Opensim-dev] Signal Handling
Justin Clark-Casey
jjustincc at googlemail.com
Mon Nov 7 23:31:15 UTC 2011
Hi Rory. I think most people currently achieve this kind of thing via the RemoteAdmin interface [1]. However, I don't
personally have any objection to having POSIX handling code in OpenSim if that's useful to people.
The best place for such a thing could be a separate OpenSim.ApplicationPlugins.PosixController package (or similar)
rather than mixing it in with OpenSim.cs.
Things such as #if and #endif do exist in C# [2]. To be honest, I don't think you need to detect Windows as long as it
does compile under Windows - one can include the mono.posix.dll in OpenSim directly if necessary. And some Windows
environments (e.g. Cygwin) do provide POSIX handling so it might work there.
If you want to submit a patch please create an account on Mantis [3] and post it there, putting it into the "Patch
included" state. As I would classify this as a feature, we will need you to sign and submit a contributor's agreement
[4]. Thanks.
[1] http://opensimulator.org/wiki/RemoteAdmin
[2] http://stackoverflow.com/questions/5159657/isolate-mono-specific-code
[3] http://opensimulator.org/mantis.
[4] http://opensimulator.org/wiki/Contributions_Policy
On 07/11/11 15:50, Rory Slegtenhorst wrote:
> Dear List,
>
> My very first post in the dev mailing list, as I am going to spend much more time in my personal OpenSim.
>
> I have written some code quite a while back and wanted to share my thoughts and start a discussion about it.
>
> *Signal Handling*
> Currently, OpenSim services do NOT support POSIX signal handling when POSIX is available. This support is available
> on pretty much any *nix platform including MacOS X. Windows does NOT support POSIX period.
>
> In Mono, POSIX signal handling can be easily accomplished using the mono.posix.dll.
>
> I have currently implemented nothing more but the TERM signal, to ensure the services are properly stopped, instead of
> simply killed on the spot. This means that the service actually goes through the shutdown procedure (if any).
> The next goal would be to implement HUP to reload the service.
>
> My current problem, is that the code is just there. No ifdef statements, nothing.
> I simply lack the knowledge in .NET/Mono to exclude the code from an environment that does not include posix.
> Some pointers in the right direction would be much appreciated.
>
> *Discussion*
> When creating services, there must be an easy way to start/stop them. Especially on *nix this comes in handy.
> Shoving the word "exit" or "shutdown" into the service cli is just not working all the time and is error prone.
>
> Adding POSIX signal handling would be considered "standard" in such services. The fact that MS Windows does not
> support POSIX signals is simply disregarded. The equivalent on Windows would be to have a service binary that runs
> the OpenSim services (I think that already exists).
>
> There aren't that many other "standard" solutions to the same problem, and although signal handling wouldn't work on
> ONE platform (ONE being Windows), it is guaranteed to work on ALL others (ALL being the *nix ones lol).
>
> So to start the discussion, here are some questions:
> 1. Is there any interest in this code?
> With this I mean: would we want POSIX signal handling or will we try to develop a different way to solve the same problem?
> 2. If there is any interest, who do I send my patch to?
>
> With kind regards,
> Rory Slegtenhorst
> rory dot slegtenhorst at gmail dot com
>
>
>
> _______________________________________________
> Opensim-dev mailing list
> Opensim-dev at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/opensim-dev
--
Justin Clark-Casey (justincc)
http://justincc.org/blog
http://twitter.com/justincc
More information about the Opensim-dev
mailing list