<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
</style>
</head>
<body class='hmmessage'>
> There is no System.ServiceProcess class in mono, so any attempt to use<BR>> it does need to be in a separate assembly, one that isn't built with<BR>> the Mono profile from nant.<BR><BR>
I haven't used it, but I googled on System.ServiceProcess and Mono and found out that there seems to be an implementation for it;<BR>
<A href="http://linux.die.net/man/1/mono-service">http://linux.die.net/man/1/mono-service</A><BR>
 <BR>
Regardless, I was saying that this probably should be thought of as a Windows-only project, as I don't know what the linux peeps think about the value of mono-service.<BR>
 <BR>
> Stefan, I'd recommend you look at that page (the ServiceProcess<BR>> documentation) to see what you're doing wrong in your production code<BR>> (which doesn't start a new thread, and can't handle anything other<BR>> than Start).<BR><BR>
We are running service processes like this, and have done for quite some time now. It starts, runs and stops fine, using the 'shutdown' command code to shut down. We have redirected service console input and output to iteract with running services locally.<BR>
 <BR>
I have no idea why you're not getting it to work.<BR>
 <BR>
And yes, the slash trick is windows only, but can easily be remedied with using the pathseparator instead.<BR>
 <BR>
/Stefan<BR>
 <BR>
> On Sun, Dec 21, 2008 at 12:59 AM, Lc <lcc1967@gmail.com> wrote:<BR>> > some functions are not in xmlrpc and i'm not sure the one implemented are<BR>> > fully functional anyway (ie terrain related, control login and such)<BR>> ><BR>> > On Sun, Dec 21, 2008 at 9:54 AM, Kyle Hamilton <aerowolf@gmail.com> wrote:<BR>> >><BR>> >> There is no access to a console in service mode. This is part of why<BR>> >> the xmlrpc admin stuff exists.<BR>> >><BR>> >> Logging can be configured to go to a file instead of the console.<BR>> >><BR>> >> Dumping is handled by the OS, and if it does dump the service manager<BR>> >> will automatically restart it.<BR>> >><BR>> >> -Kyle H<BR>> >><BR>> >> On Sun, Dec 21, 2008 at 12:50 AM, Lc <lcc1967@gmail.com> wrote:<BR>> >> > Before doing this kind of cooking, better spending time to make the<BR>> >> > system<BR>> >> > usable.<BR>> >> > Questions:<BR>> >> > how the user will access to the console in your service mode ?<BR>> >> > how could he see any errors / dump ?<BR>> >> > SM<BR>> >> ><BR>> >> > On Sun, Dec 21, 2008 at 8:31 AM, Develope <Develope@ashuan.de> wrote:<BR>> >> >><BR>> >> >> Hi,<BR>> >> >><BR>> >> >> thank you for answering so fast ...<BR>> >> >><BR>> >> >> @Kyle Hamilton<BR>> >> >> 1. You can also use srvany.exe from Microsoft to turn any .exe into a<BR>> >> >> service. http://www.iopus.com/guides/srvany.htm has information.<BR>> >> >><BR>> >> >> --- If you do that, you are not able to control your service like<BR>> >> >> OnStart(). The Memoryallocation in "real" Services (ServiceBase) is<BR>> >> >> much<BR>> >> >> faster than them doing under srvany. There are many other drawbacks<BR>> >> >> using srvany.exe (Logging, dependencies, rightsmanagement, installation<BR>> >> >> ...)<BR>> >> >><BR>> >> >> @ Stefan Andersson<BR>> >> >> 2) To be able to do so, you should implement the services as<BR>> >> >> 'wrappers',<BR>> >> >> separate applications that _use_ the Main Classes, not change or expand<BR>> >> >> on them, like for example for the grid service wrapper:<BR>> >> >><BR>> >> >> partial class GridServ : ServiceBase<BR>> >> >> {<BR>> >> >> private GridServerBase m_gridApplication;<BR>> >> >><BR>> >> >> protected override void OnStart(string[] args)<BR>> >> >> {<BR>> >> >> // Define working directory (For a service, this is set to<BR>> >> >> System dir by default...)<BR>> >> >> Process pc = Process.GetCurrentProcess();<BR>> >> >> string useDirectory = pc.MainModule.FileName.Substring(0,<BR>> >> >> pc.MainModule.FileName.LastIndexOf(@"\"));<BR>> >> >> Directory.SetCurrentDirectory(useDirectory);<BR>> >> >> log4net.Config.XmlConfigurator.Configure();<BR>> >> >> m_gridApplication = new GridServerBase();<BR>> >> >> m_gridApplication.Startup();<BR>> >> >> }<BR>> >> >> }<BR>> >> >><BR>> >> >> (This snippet taken from Tribal Medias proprietary service wrappers -<BR>> >> >> feel free to copy+paste.)<BR>> >> >><BR>> >> >> --- It is impossible to not change the main applications, cause<BR>> >> >> they<BR>> >> >> all went into<BR>> >> >> public void Work()<BR>> >> >> {<BR>> >> >> m_console.Notice("Enter help for a list of commands\n");<BR>> >> >><BR>> >> >> while (true)<BR>> >> >> {<BR>> >> >> m_console.Prompt();<BR>> >> >> }<BR>> >> >> }<BR>> >> >><BR>> >> >> Holding a Service into a loop or in console.readline make the<BR>> >> >> OnStart() not responsable for the machine and nothing runs.<BR>> >> >><BR>> >> >> --- Is the System.ServiceProcess not implemented in Mono ? If so there<BR>> >> >> is no problem doing this. In my solution all executables are running as<BR>> >> >> service and doing well (Win 2003). I try to evaluate how it works in<BR>> >> >> mono.<BR>> >> >><BR>> >> >> --- My implementation is:<BR>> >> >> Here is the first bad hack<BR>> >> >> public /*abstract*/ class BaseOpenSimServer :<BR>> >> >> System.ServiceProcess.ServiceBase<BR>> >> >> {<BR>> >> >> ...<BR>> >> >> public static void RunService(BaseOpenSimServer<BR>> >> >> pInstance, string[] args)<BR>> >> >> {<BR>> >> >> ...<BR>> >> >> }<BR>> >> >> ...<BR>> >> >> }<BR>> >> >><BR>> >> >> In case of Gridserver ...<BR>> >> >> public static void Main(string[] args)<BR>> >> >> {<BR>> >> >> XmlConfigurator.Configure();<BR>> >> >><BR>> >> >> GridServerBase.RunService(new GridServerBase(), args);<BR>> >> >><BR>> >> >> //GridServerBase app = new GridServerBase();<BR>> >> >><BR>> >> >> //app.Startup();<BR>> >> >> //app.Work();<BR>> >> >> }<BR>> >> >> Thats all.<BR>> >> >> --- You can now start your application with parameter '/Install' or<BR>> >> >> '/unistall' to create this service or to uninstall it.<BR>> >> >> --- You chose if it starts as a service and how its name an<BR>> >> >> dependencies<BR>> >> >> only in app.config of the diffrent projects.<BR>> >> >> If you dont want to run this as service switch in app.config.<BR>> >> >><BR>> >> >><BR>> >> >> Greetz<BR>> >> >><BR>> >> >> Kai<BR>> >> >><BR>> >> >><BR>> >> >> -----Original Message-----<BR>> >> >> From: opensim-dev-bounces@lists.berlios.de<BR>> >> >> [mailto:opensim-dev-bounces@lists.berlios.de] On Behalf Of Kyle<BR>> >> >> Hamilton<BR>> >> >> Sent: Sonntag, 21. Dezember 2008 00:24<BR>> >> >> To: opensim-dev@lists.berlios.de<BR>> >> >> Subject: Re: [Opensim-dev] Feature Request ...<BR>> >> >><BR>> >> >> You can also use srvany.exe from Microsoft to turn any .exe into a<BR>> >> >> service. http://www.iopus.com/guides/srvany.htm has information.<BR>> >> >><BR>> >> >> -Kyle H<BR>> >> >><BR>> >> >> On Sat, Dec 20, 2008 at 1:13 PM, Stefan Andersson<BR>> >> >> <stefan@tribalmedia.se> wrote:<BR>> >> >> > Excellent! We really need windows service wrappers for the various<BR>> >> >> exe's.<BR>> >> >> ><BR>> >> >> > A couple of pointers:<BR>> >> >> ><BR>> >> >> > 1) Since this is (in practice) a windows-only project, you should<BR>> >> >> implement<BR>> >> >> > this as a 'forge' project;<BR>> >> >> > http://forge.opensimulator.org/gf/<BR>> >> >> ><BR>> >> >> > 2) To be able to do so, you should implement the services as<BR>> >> >> 'wrappers',<BR>> >> >> > separate applications that _use_ the Main Classes, not change or<BR>> >> >> expand on<BR>> >> >> > them, like for example for the grid service wrapper:<BR>> >> >> ><BR>> >> >> > partial class GridServ : ServiceBase<BR>> >> >> > {<BR>> >> >> > private GridServerBase m_gridApplication;<BR>> >> >> ><BR>> >> >> > protected override void OnStart(string[] args)<BR>> >> >> > {<BR>> >> >> > // Define working directory (For a service, this is set<BR>> >> >> > to<BR>> >> >> > System dir by default...)<BR>> >> >> > Process pc = Process.GetCurrentProcess();<BR>> >> >> > string useDirectory = pc.MainModule.FileName.Substring(0,<BR>> >> >> > pc.MainModule.FileName.LastIndexOf(@"\"));<BR>> >> >> > Directory.SetCurrentDirectory(useDirectory);<BR>> >> >> > log4net.Config.XmlConfigurator.Configure();<BR>> >> >> > m_gridApplication = new GridServerBase();<BR>> >> >> > m_gridApplication.Startup();<BR>> >> >> > }<BR>> >> >> > }<BR>> >> >> ><BR>> >> >> > (This snippet taken from Tribal Medias proprietary service wrappers -<BR>> >> >> feel<BR>> >> >> > free to copy+paste.)<BR>> >> >> ><BR>> >> >> > 3) When you've done the wrappers, the next step is to add a method to<BR>> >> >> > communicate with the consoles. One way to go about it is to have the<BR>> >> >> service<BR>> >> >> > process redirect the console in and output to a named pipe, and then<BR>> >> >> supply<BR>> >> >> > a console app that listens/writes to those pipes.<BR>> >> >> ><BR>> >> >> > Best regards,<BR>> >> >> > Stefan Andersson<BR>> >> >> > Tribal Media AB<BR>> >> >> ><BR>> >> >> ><BR>> >> >> > ________________________________<BR>> >> >> > Date: Sat, 20 Dec 2008 19:53:32 +0100<BR>> >> >> > From: Develope@Ashuan.de<BR>> >> >> > To: Opensim-dev@lists.berlios.de<BR>> >> >> > Subject: [Opensim-dev] Feature Request ...<BR>> >> >> ><BR>> >> >> ><BR>> >> >> > Hi Friends,<BR>> >> >> ><BR>> >> >> ><BR>> >> >> ><BR>> >> >> > i wish to implement the feature to run all Gridcomponents<BR>> >> >> > (Userserver,<BR>> >> >> > Assetserver ....) as a Service.<BR>> >> >> ><BR>> >> >> > My work is now only to evaluate how easy or not it is ... it is easy<BR>> >> >> .. but<BR>> >> >> > ...<BR>> >> >> ><BR>> >> >> ><BR>> >> >> ><BR>> >> >> > I must add an Reference to the System.ServiceProcess in several<BR>> >> >> Project.<BR>> >> >> ><BR>> >> >> > Now my question ...<BR>> >> >> ><BR>> >> >> ><BR>> >> >> ><BR>> >> >> > Is there a Problem doing this?<BR>> >> >> ><BR>> >> >> > And second how do i include an reference into a .patch-File?<BR>> >> >> ><BR>> >> >> ><BR>> >> >> ><BR>> >> >> > Kai<BR>> >> >> ><BR>> >> >> ><BR>> >> >> ><BR>> >> >> > _______________________________________________<BR>> >> >> > Opensim-dev mailing list<BR>> >> >> > Opensim-dev@lists.berlios.de<BR>> >> >> > https://lists.berlios.de/mailman/listinfo/opensim-dev<BR>> >> >> ><BR>> >> >> ><BR>> >> >> _______________________________________________<BR>> >> >> Opensim-dev mailing list<BR>> >> >> Opensim-dev@lists.berlios.de<BR>> >> >> https://lists.berlios.de/mailman/listinfo/opensim-dev<BR>> >> >> _______________________________________________<BR>> >> >> Opensim-dev mailing list<BR>> >> >> Opensim-dev@lists.berlios.de<BR>> >> >> https://lists.berlios.de/mailman/listinfo/opensim-dev<BR>> >> ><BR>> >> ><BR>> >> > _______________________________________________<BR>> >> > Opensim-dev mailing list<BR>> >> > Opensim-dev@lists.berlios.de<BR>> >> > https://lists.berlios.de/mailman/listinfo/opensim-dev<BR>> >> ><BR>> >> ><BR>> >> _______________________________________________<BR>> >> Opensim-dev mailing list<BR>> >> Opensim-dev@lists.berlios.de<BR>> >> https://lists.berlios.de/mailman/listinfo/opensim-dev<BR>> ><BR>> ><BR>> > _______________________________________________<BR>> > Opensim-dev mailing list<BR>> > Opensim-dev@lists.berlios.de<BR>> > https://lists.berlios.de/mailman/listinfo/opensim-dev<BR>> ><BR>> ><BR>> _______________________________________________<BR>> Opensim-dev mailing list<BR>> Opensim-dev@lists.berlios.de<BR>> https://lists.berlios.de/mailman/listinfo/opensim-dev<BR><BR></body>
</html>