summaryrefslogtreecommitdiff
path: root/ACE/apps/JAWS/clients/Caching/URL_Locator.h
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/apps/JAWS/clients/Caching/URL_Locator.h')
-rw-r--r--ACE/apps/JAWS/clients/Caching/URL_Locator.h112
1 files changed, 112 insertions, 0 deletions
diff --git a/ACE/apps/JAWS/clients/Caching/URL_Locator.h b/ACE/apps/JAWS/clients/Caching/URL_Locator.h
new file mode 100644
index 00000000000..751de52cfe5
--- /dev/null
+++ b/ACE/apps/JAWS/clients/Caching/URL_Locator.h
@@ -0,0 +1,112 @@
+/* -*- C++ -*- */
+
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// none
+//
+// = FILENAME
+// URL_Locator.h
+//
+// = AUTHOR
+// Nanbor Wang
+//
+// ============================================================================
+
+#ifndef ACE_URL_LOCATOR_H
+#define ACE_URL_LOCATOR_H
+
+#include "URL_Properties.h"
+
+class ACE_Svc_Export ACE_URL_Locator
+ // = TITLE
+ // Abstract Base class designates what interfaces a URL_Locator
+ // should provide.
+ //
+ // = DESCRIPTION
+ // This class defines the basic URL_Locator APIs.
+ // An URL locator provides services for URL clients to
+ // query specific URL location that has certain properties
+ // and URL providers to export their services and a set of
+ // APIs to maintain their offers.
+{
+public:
+ // Request type
+ enum ACE_URL_Locator_Op_Type
+ {
+ QUERY = 0,
+ EXPORT,
+ WITHDRAW,
+ DESCRIBE,
+ MODIFY,
+ INVALID_OPERATION // LAST
+ };
+
+ static const char * const opname[];
+ // Human Readable operation name.
+
+ // = Specify how to select offers.
+ enum ACE_Selection_Criteria
+ {
+ NONE = 0, // URL that contains none of the properties.
+ SOME, // URL that contains some of the properties.
+ ALL, // URL that contains all of the properties.
+ INVALID_SELECTION // Invalid.
+ };
+
+ static const char * const selection_name[];
+
+ enum ACE_URL_Locator_Error
+ // errno will set to one of these value.
+ {
+ OK, // Everything is fine.
+ OFFER_EXIST, // trying to register an offer.
+ // that is already exist in repository.
+ NO_SUCH_OFFER, // No such offer in the repository.
+ INVALID_ARGUMENT, // Invalid argument encountered.
+ UNIMPLEMENTED, // function not implemented.
+ UNKNOWN, // Unknown error.
+ MAX_URL_ERROR
+ };
+ // Possible error code of URL_Locator.
+
+ static const char * const err_name[];
+ // Human readable error status.
+
+ virtual ~ACE_URL_Locator (void) = 0;
+ // Default destructor.
+
+ virtual int url_query (const ACE_Selection_Criteria how,
+ const ACE_URL_Property_Seq *pseq,
+ const size_t how_many,
+ size_t &num_query,
+ ACE_URL_Offer_Seq *offer) = 0;
+ // Query the locator for HTTP with designate properties (none, some,
+ // or all). The locator being queried will return a sequence of
+ // offers with <how_many> offers in it. This interface allocates
+ // <offer> so users must deallocate it after use.
+
+ virtual int export_offer (ACE_URL_Offer *offer,
+ ACE_WString &offer_id) = 0;
+ // Export an offer to the locator.
+
+ virtual int withdraw_offer (const ACE_WString &offer_id) = 0;
+ // Withdraw an offer. return 0 if succeed, -1 otherwise.
+
+ virtual int describe_offer (const ACE_WString &offer_id,
+ ACE_URL_Offer *offer) = 0;
+ // Query a specific offer.
+
+ virtual int modify_offer (const ACE_WString &offer_id,
+ const ACE_WString *url = 0,
+ const ACE_URL_Property_Seq *del = 0,
+ const ACE_URL_Property_Seq *modify = 0) = 0;
+ // Modify a previously registered offer.
+
+ virtual const char *error_status (void);
+ // Provide a human readable error status.
+};
+
+#endif /* ACE_WEB_LOCATOR_H */