summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/ImplRepo_Service/Locator_NT_Service.h
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/ImplRepo_Service/Locator_NT_Service.h')
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/Locator_NT_Service.h60
1 files changed, 60 insertions, 0 deletions
diff --git a/TAO/orbsvcs/ImplRepo_Service/Locator_NT_Service.h b/TAO/orbsvcs/ImplRepo_Service/Locator_NT_Service.h
new file mode 100644
index 00000000000..09662e95339
--- /dev/null
+++ b/TAO/orbsvcs/ImplRepo_Service/Locator_NT_Service.h
@@ -0,0 +1,60 @@
+/* -*- C++ -*- */
+//=============================================================================
+/**
+ * @file Locator_NT_Service.h
+ *
+ * $Id$
+ *
+ * @author Darrell Brunsch <brunsch@cs.wustl.edu>
+ * @author Jeff Parsons <parsons@cs.wustl.edu>
+ * @author John Tucker <jtucker@infoglide.com>
+ * @author Mike Vitalo <mvitalo@infoglide.com>
+ */
+//=============================================================================
+
+#ifndef Locator_NT_Service_H
+#define Locator_NT_Service_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_WIN32) && !defined (ACE_LACKS_WIN32_SERVICES)
+
+#include "ace/NT_Service.h"
+#include "ace/Singleton.h"
+#include "ace/Synch.h"
+#include "tao/orbconf.h"
+
+static const char * IMR_LOCATOR_SERVICE_NAME = "TAOImR";
+static const char * IMR_LOCATOR_DISPLAY_NAME = "TAO Implementation Repository";
+static const char * IMR_LOCATOR_DESCRIPTION = "Implementation Repository Locator service for TAO";
+
+/**
+ * @class Locator_NT_Service
+ *
+ * @brief Allows the Implementation Repository to act as a Windows NT Service.
+ */
+class Locator_NT_Service : public ACE_NT_Service
+{
+public:
+ typedef TAO_SYNCH_RECURSIVE_MUTEX MUTEX;
+
+ /// We override <handle_control> because it handles stop requests
+ /// privately.
+ virtual void handle_control (DWORD control_code);
+
+ /// We override <handle_exception> so a 'stop' control code can wake
+ /// the reactor off of its wait.
+ virtual int handle_exception (ACE_HANDLE h);
+
+ /// This is a virtual method inherited from ACE_NT_Service.
+ virtual int svc (void);
+
+private:
+ friend class ACE_Singleton<Locator_NT_Service, MUTEX>;
+};
+
+typedef ACE_Singleton<Locator_NT_Service, ACE_Mutex> SERVICE;
+
+#endif /* ACE_WIN32 && !ACE_LACKS_WIN32_SERVICES */
+
+#endif /* Locator_NT_Service_H */