00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef Locator_XMLHandler_H
00013 #define Locator_XMLHandler_H
00014
00015 #include "ACEXML/common/DefaultHandler.h"
00016
00017 #include "ace/Vector_T.h"
00018
00019 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00020 # pragma once
00021 #endif
00022
00023
00024
00025
00026 class Locator_XMLHandler : public ACEXML_DefaultHandler
00027 {
00028 public:
00029
00030
00031 static const char* ROOT_TAG;
00032 static const char* SERVER_INFO_TAG;
00033 static const char* ENVIRONMENT_TAG;
00034 static const char* ACTIVATOR_INFO_TAG;
00035
00036 struct EnvVar {
00037 ACE_CString name;
00038 ACE_CString value;
00039 bool operator==(const EnvVar&) const;
00040 bool operator!=(const EnvVar&) const;
00041 };
00042
00043 typedef ACE_Vector<EnvVar> EnvList;
00044
00045 struct Callback {
00046 virtual ~Callback() {}
00047
00048 virtual void next_server (const ACE_CString& server_name,
00049 const ACE_CString& aname, const ACE_CString& startup_cmd,
00050 const EnvList& env_vars, const ACE_CString& working_dir,
00051 const ACE_CString& actmode, int start_limit,
00052 const ACE_CString& partial_ior, const ACE_CString& ior) = 0;
00053
00054 virtual void next_activator (const ACE_CString& activator_name,
00055 long token,
00056 const ACE_CString& ior) = 0;
00057 };
00058
00059 Locator_XMLHandler (Callback& cb);
00060
00061 virtual void startElement (const ACEXML_Char* namespaceURI,
00062 const ACEXML_Char* localName,
00063 const ACEXML_Char* qName,
00064 ACEXML_Attributes* atts ACEXML_ENV_ARG_DECL)
00065 ACE_THROW_SPEC ((ACEXML_SAXException));
00066
00067 virtual void endElement (const ACEXML_Char* namespaceURI,
00068 const ACEXML_Char* localName,
00069 const ACEXML_Char* qName ACEXML_ENV_ARG_DECL)
00070 ACE_THROW_SPEC ((ACEXML_SAXException));
00071
00072 private:
00073
00074
00075 Callback& callback_;
00076
00077 ACE_CString server_name_;
00078 ACE_CString activator_name_;
00079 ACE_CString command_line_;
00080 ACE_CString activation_;
00081 ACE_CString working_dir_;
00082 ACE_CString server_object_ior_;
00083 ACE_CString partial_ior_;
00084 int start_limit_;
00085 EnvList env_vars_;
00086 };
00087
00088 #endif