aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--ServiceManager/ServiceManager.cs43
1 files changed, 41 insertions, 2 deletions
diff --git a/ServiceManager/ServiceManager.cs b/ServiceManager/ServiceManager.cs
index 6a613bb..cd15722 100644
--- a/ServiceManager/ServiceManager.cs
+++ b/ServiceManager/ServiceManager.cs
@@ -1,6 +1,8 @@
1using System; 1using System;
2using System.Threading; 2using System.Threading;
3using System.ServiceProcess; 3using System.ServiceProcess;
4using System.Xml;
5using System.IO;
4 6
5public class OpenGridMasterService : System.ServiceProcess.ServiceBase { 7public class OpenGridMasterService : System.ServiceProcess.ServiceBase {
6 8
@@ -21,11 +23,48 @@ public class OpenGridMasterService : System.ServiceProcess.ServiceBase {
21 23
22 protected override void OnStart(string[] args) 24 protected override void OnStart(string[] args)
23 { 25 {
24 26 ServiceWorkerThread = new Thread(new ThreadStart(MainServiceThread));
25 27 ServiceWorkerThread.Start();
28 }
29
30 protected override void OnStop()
31 {
32 ServiceWorkerThread.Abort();
33 }
34
35 private void MainServiceThread()
36 {
37 try {
38 StreamReader reader=new StreamReader("opengrid-master-cfg.xml");
39
40 string configxml = reader.ReadToEnd();
41 XmlDocument doc = new XmlDocument();
42 doc.LoadXml(configxml);
43 XmlNode rootnode = doc.FirstChild;
44 if (rootnode.Name != "regions")
45 {
46 EventLog.WriteEntry("ERROR! bad XML in opengrid-master-cfg.xml - expected regions tag");
47 Console.WriteLine("Sorry, could not startup the service - please check your opengrid-master-cfg.xml file: missing regions tag");
48 (new ServiceController("OpenGridServices-master")).Stop();
49 }
50
51 for(int i=0; i<=rootnode.ChildNodes.Count; i++)
52 {
53 if(rootnode.ChildNodes.Item(i).Name != "region") {
54 EventLog.WriteEntry("nonfatal error - unexpected tag inside regions block of opengrid-master-cfg.xml");
55 (new ServiceController("OpenGridServices-master")).Stop();
56 }
57 }
58 } catch(Exception e) {
59 Console.WriteLine(e.ToString());
60 (new ServiceController("OpenGridServices-master")).Stop();
61 }
62
26 } 63 }
27 64
28 public static void Main() 65 public static void Main()
29 { 66 {
67 Console.WriteLine("Starting up OGS master service");
68 ServiceBase.Run(new OpenGridMasterService());
30 } 69 }
31} 70}