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