summaryrefslogtreecommitdiff
path: root/ACE/apps/JAWS/clients/Caching/Locator_Request_Reply.h
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/apps/JAWS/clients/Caching/Locator_Request_Reply.h')
-rw-r--r--ACE/apps/JAWS/clients/Caching/Locator_Request_Reply.h227
1 files changed, 227 insertions, 0 deletions
diff --git a/ACE/apps/JAWS/clients/Caching/Locator_Request_Reply.h b/ACE/apps/JAWS/clients/Caching/Locator_Request_Reply.h
new file mode 100644
index 00000000000..055f5269c98
--- /dev/null
+++ b/ACE/apps/JAWS/clients/Caching/Locator_Request_Reply.h
@@ -0,0 +1,227 @@
+/* -*- C++ -*- */
+
+
+//=============================================================================
+/**
+ * @file Locator_Request_Reply.h
+ *
+ * $Id$
+ *
+ * @author Nanbor Wang
+ */
+//=============================================================================
+
+
+#ifndef ACE_LOCATOR_REQUEST_REPLY_H
+#define ACE_LOCATOR_REQUEST_REPLY_H
+
+#include "URL_Properties.h"
+
+/**
+ * @class ACE_URL_Locator_Request
+ *
+ * @brief A URL request message formater/wrapper.
+ *
+ * This class defines a URL request data. It is used
+ * to transform requests to an object so that we can
+ * ship them across network.
+ */
+class ACE_Svc_Export ACE_URL_Locator_Request
+{
+public:
+ /// Default ctor.
+ ACE_URL_Locator_Request (void);
+
+ /// Default dtor.
+ ~ACE_URL_Locator_Request (void);
+
+ /**
+ * 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.
+ */
+ int url_query (const int how,
+ const ACE_URL_Property_Seq &pseq,
+ const int how_many);
+
+ /// Export an offer to the locator.
+ int export_offer (const ACE_URL_Offer &offer);
+
+ /// Withdraw an offer. return 0 if succeed, -1 otherwise.
+ int withdraw_offer (const ACE_WString &offer_id);
+
+ /// Query a specific offer.
+ int describe_offer (const ACE_WString &offer_id);
+
+ /// Modify a previously registered offer.
+ int modify_offer (const ACE_WString &offer_id,
+ const char *url = 0,
+ const ACE_URL_Property_Seq &del = 0,
+ const ACE_URL_Property_Seq &modify = 0);
+
+ /// Modify a previously registered offer.
+ 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);
+
+ /// Encode request for network communication. If succeed,
+ /// returns the size of the buffer, otherwise, return 0.
+ size_t encode (void);
+
+ /**
+ * Restore from network data. Returns size of the buffer
+ * if succeed, 0 otherwise. When passing in a buffer,
+ * caller must take the responsibility to delete the buffer
+ * afterward, if so needed.
+ */
+ size_t decode (void *buffer);
+
+ /// A bunch of methods to access internal data.
+ const int how (void) const;
+ const int how_many (void) const;
+ const u_int opcode (void) const;
+ const ACE_URL_Property_Seq *seq (void) const;
+ const ACE_URL_Property_Seq *del (void) const;
+ const ACE_URL_Property_Seq *modify (void) const;
+ const ACE_URL_Offer *offer (void) const;
+ const ACE_WString &id (void) const;
+ const ACE_WString &url (void) const;
+ const char *buffer (void) const;
+
+ /// Print out this object.
+ void dump (void) const;
+
+protected:
+ /// Return the size of the buffer required to encode
+ /// this request.
+ size_t size (void);
+
+ enum {
+ VALID_SEQ1 = 0x1,
+ VALID_SEQ2 = 0X2,
+ VALID_OFFER = 0X4
+ };
+ // These constants used to indicate which pointers are valid.
+
+ /// Request type code.
+ u_int code_;
+
+ /// Query method (if code_ == QUERY.)
+ int how_;
+
+ /// How many offers are we interested in in this query.
+ int how_many_;
+
+ /// Bit flag to mark valid pointers within this object.
+ int valid_ptr_;
+
+ /// For query or del in modify_offer.
+ ACE_URL_Property_Seq *seq1_;
+
+ /// For modify seq. in modify_offer.
+ ACE_URL_Property_Seq *seq2_;
+
+ /// Offer to export.
+ ACE_URL_Offer *offer_;
+
+ /// Offer ID.
+ ACE_WString id_;
+
+ /// URL of this offer.
+ ACE_WString url_;
+
+ /// Buffer to store encoded data.
+ char *buffer_;
+};
+
+/**
+ * @class ACE_URL_Locator_Reply
+ *
+ * @brief A URL reply message formater/wrapper.
+ *
+ * This class defines a URL reply data. It is used
+ * to transform reply messages to an object so that we can
+ * ship them across network.
+ */
+class ACE_Svc_Export ACE_URL_Locator_Reply
+{
+public:
+ /// Default ctor.
+ ACE_URL_Locator_Reply (void);
+
+ /// Default dtor.
+ ~ACE_URL_Locator_Reply (void);
+
+ /// Setup a reply message for EXPORT, WITHDRAW, or MODIFY operations.
+ int status_reply (u_int op, int result);
+
+ /// Setup a reply for QUERY operation.
+ int query_reply (int result, size_t num,
+ const ACE_URL_Offer_Seq &offers);
+
+ /// Construct a reply for DESCRIBE operation.
+ int describe_reply (int result,
+ const ACE_URL_Offer &offer);
+
+ /// Encode request for network communication. If succeed,
+ /// returns the size of the buffer, otherwise, return 0.
+ size_t encode (void);
+
+ /**
+ * Restore from network data. Returns size of the buffer
+ * if succeed, 0 otherwise. When passing in a buffer,
+ * caller must take the responsibility to delete the buffer
+ * afterward, if so needed.
+ */
+ size_t decode (void *buffer);
+
+ // Accessor function.
+ const size_t num_offers (void) const;
+ const ACE_URL_Offer *offer (void) const;
+ const ACE_URL_Offer_Seq *offers (void) const;
+ const u_int opcode (void) const;
+ const u_int status (void) const;
+ const char *buffer (void) const ;
+
+ /// Print out this object.
+ void dump (void) const ;
+
+protected:
+ /// Return the size of the buffer required to encode
+ /// this request.
+ size_t size (void);
+
+ enum {
+ VALID_OFFER = 0x1,
+ VALID_OFFERS = 0x2
+ };
+ // Valid pointer masks.
+
+ /// Holds the original op code.
+ u_int code_;
+
+ /// Holds the result of an operation from the Location Server.
+ int status_;
+
+ /// Holds the number of valid offers in the offers_ sequence.
+ size_t num_offers_;
+
+ /// Flag that marks valid internal pointers.
+ int valid_ptr_;
+
+ /// Holds a single offer. Used in query offer property.
+ ACE_URL_Offer *offer_;
+
+ /// Holds the replying offer sequence from a Locator.
+ ACE_URL_Offer_Seq *offers_;
+
+ /// Buffer to store encoded data.
+ char *buffer_;
+};
+#if defined (__ACE_INLINE__)
+#include "Locator_Request_Reply.inl"
+#endif /* __ACE_INLINE__ */
+
+#endif /* ACE_LOCATOR_REQUEST_REPLY_H */