summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/ImplRepo_Service/Locator_XMLHandler.h
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/ImplRepo_Service/Locator_XMLHandler.h')
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/Locator_XMLHandler.h88
1 files changed, 88 insertions, 0 deletions
diff --git a/TAO/orbsvcs/ImplRepo_Service/Locator_XMLHandler.h b/TAO/orbsvcs/ImplRepo_Service/Locator_XMLHandler.h
new file mode 100644
index 00000000000..ff8691d0a78
--- /dev/null
+++ b/TAO/orbsvcs/ImplRepo_Service/Locator_XMLHandler.h
@@ -0,0 +1,88 @@
+// -*- C++ -*-
+//=============================================================================
+/**
+ * @file Locator_XMLHandler.h
+ *
+ * $Id$
+ *
+ * @author Justin Michel <michel_j@ociweb.com>
+ */
+//=============================================================================
+
+#ifndef Locator_XMLHandler_H
+#define Locator_XMLHandler_H
+
+#include "ACEXML/common/DefaultHandler.h"
+
+#include "ace/Vector_T.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+/**
+ * Callback SAX XML Handler for parsing XML.
+ */
+class Locator_XMLHandler : public ACEXML_DefaultHandler
+{
+public:
+
+ // XML ELEMENT names
+ static const char* ROOT_TAG;
+ static const char* SERVER_INFO_TAG;
+ static const char* ENVIRONMENT_TAG;
+ static const char* ACTIVATOR_INFO_TAG;
+
+ struct EnvVar {
+ ACE_CString name;
+ ACE_CString value;
+ bool operator==(const EnvVar&) const; // To allow Vector explicit instantiation
+ bool operator!=(const EnvVar&) const; // To allow Vector explicit instantiation
+ };
+
+ typedef ACE_Vector<EnvVar> EnvList;
+
+ struct Callback {
+ virtual ~Callback() {}
+
+ virtual void next_server (const ACE_CString& server_name,
+ const ACE_CString& aname, const ACE_CString& startup_cmd,
+ const EnvList& env_vars, const ACE_CString& working_dir,
+ const ACE_CString& actmode, int start_limit,
+ const ACE_CString& partial_ior, const ACE_CString& ior) = 0;
+
+ virtual void next_activator (const ACE_CString& activator_name,
+ long token,
+ const ACE_CString& ior) = 0;
+ };
+
+ Locator_XMLHandler (Callback& cb);
+
+ virtual void startElement (const ACEXML_Char* namespaceURI,
+ const ACEXML_Char* localName,
+ const ACEXML_Char* qName,
+ ACEXML_Attributes* atts ACEXML_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((ACEXML_SAXException));
+
+ virtual void endElement (const ACEXML_Char* namespaceURI,
+ const ACEXML_Char* localName,
+ const ACEXML_Char* qName ACEXML_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((ACEXML_SAXException));
+
+ private:
+
+ // callback on completion of an element
+ Callback& callback_;
+
+ ACE_CString server_name_;
+ ACE_CString activator_name_;
+ ACE_CString command_line_;
+ ACE_CString activation_;
+ ACE_CString working_dir_;
+ ACE_CString server_object_ior_;
+ ACE_CString partial_ior_;
+ int start_limit_;
+ EnvList env_vars_;
+};
+
+#endif /* Locator_XMLHandler_H */