From 5611cb6d476540e6a1c654c1f9acdce2787b3505 Mon Sep 17 00:00:00 2001 From: Monty Brandenberg Date: Mon, 23 Apr 2012 16:19:39 -0400 Subject: Okay, imported the core-http library and got it compiling suspiciously easily. The unit/integration tests don't work yet as I'm still battling cmake/autobuild as usual but first milestone passed. --- indra/llcorehttp/httpheaders.h | 86 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 indra/llcorehttp/httpheaders.h (limited to 'indra/llcorehttp/httpheaders.h') diff --git a/indra/llcorehttp/httpheaders.h b/indra/llcorehttp/httpheaders.h new file mode 100644 index 0000000000..0b6d82561b --- /dev/null +++ b/indra/llcorehttp/httpheaders.h @@ -0,0 +1,86 @@ +/** + * @file httpheaders.h + * @brief Public-facing declarations for the HttpHeaders class + * + * $LicenseInfo:firstyear=2012&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2012, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + +#ifndef _LLCORE_HTTP_HEADERS_H_ +#define _LLCORE_HTTP_HEADERS_H_ + + +#include + +#include "_refcounted.h" + + +namespace LLCore +{ + +/// +/// Maintains an ordered list of name/value pairs representing +/// HTTP header lines. This is used both to provide additional +/// headers when making HTTP requests and in responses when the +/// caller has asked that headers be returned (not the default +/// option). +/// +/// @note +/// This is a minimally-functional placeholder at the moment +/// to fill out the class hierarchy. The final class will be +/// something else, probably more pair-oriented. It's also +/// an area where shared values are desirable so refcounting is +/// already specced and a copy-on-write scheme imagined. +/// Expect changes here. +/// +/// Threading: Not intrinsically thread-safe. It *is* expected +/// that callers will build these objects and then share them +/// via reference counting with the worker thread. The implication +/// is that once an HttpHeader instance is handed to a request, +/// the object must be treated as read-only. +/// +/// Allocation: Refcounted, heap only. Caller of the +/// constructor is given a refcount. +/// + +class HttpHeaders : public LLCoreInt::RefCounted +{ +public: + /// @post In addition to the instance, caller has a refcount + /// to the instance. A call to @see release() will destroy + /// the instance. + HttpHeaders(); + ~HttpHeaders(); + +protected: + HttpHeaders(const HttpHeaders &); // Not defined + void operator=(const HttpHeaders &); // Not defined + +public: + typedef std::vector container_t; + container_t mHeaders; + +}; // end class HttpHeaders + +} // end namespace LLCore + + +#endif // _LLCORE_HTTP_HEADERS_H_ -- cgit v1.3 From 46662a3010b2c920ae60b4ca246d56e3caee6f6f Mon Sep 17 00:00:00 2001 From: Monty Brandenberg Date: Mon, 18 Jun 2012 11:16:58 -0400 Subject: Move dtors for refcounted objects to protected access. --- indra/llcorehttp/_httpopcancel.h | 4 +++- indra/llcorehttp/_httpoperation.h | 8 +++++++- indra/llcorehttp/_httpoprequest.h | 4 +++- indra/llcorehttp/_httpopsetget.h | 4 +++- indra/llcorehttp/_httpopsetpriority.h | 2 ++ indra/llcorehttp/_httpreplyqueue.h | 4 +++- indra/llcorehttp/_httprequestqueue.h | 4 +++- indra/llcorehttp/bufferarray.h | 4 +++- indra/llcorehttp/httpheaders.h | 3 ++- indra/llcorehttp/httpoptions.h | 3 ++- indra/llcorehttp/httpresponse.h | 3 ++- 11 files changed, 33 insertions(+), 10 deletions(-) (limited to 'indra/llcorehttp/httpheaders.h') diff --git a/indra/llcorehttp/_httpopcancel.h b/indra/llcorehttp/_httpopcancel.h index 6d1e0f8774..4d927d1aaf 100644 --- a/indra/llcorehttp/_httpopcancel.h +++ b/indra/llcorehttp/_httpopcancel.h @@ -51,8 +51,10 @@ class HttpOpCancel : public HttpOperation { public: HttpOpCancel(HttpHandle handle); - virtual ~HttpOpCancel(); +protected: + virtual ~HttpOpCancel(); // Use release() + private: HttpOpCancel(const HttpOpCancel &); // Not defined void operator=(const HttpOpCancel &); // Not defined diff --git a/indra/llcorehttp/_httpoperation.h b/indra/llcorehttp/_httpoperation.h index de4939a0ac..5823c08c7b 100644 --- a/indra/llcorehttp/_httpoperation.h +++ b/indra/llcorehttp/_httpoperation.h @@ -73,7 +73,9 @@ class HttpOperation : public LLCoreInt::RefCounted { public: HttpOperation(); - virtual ~HttpOperation(); + +protected: + virtual ~HttpOperation(); // Use release() private: HttpOperation(const HttpOperation &); // Not defined @@ -131,6 +133,8 @@ class HttpOpStop : public HttpOperation { public: HttpOpStop(); + +protected: virtual ~HttpOpStop(); private: @@ -152,6 +156,8 @@ class HttpOpNull : public HttpOperation { public: HttpOpNull(); + +protected: virtual ~HttpOpNull(); private: diff --git a/indra/llcorehttp/_httpoprequest.h b/indra/llcorehttp/_httpoprequest.h index fc2301057c..4643cc3b75 100644 --- a/indra/llcorehttp/_httpoprequest.h +++ b/indra/llcorehttp/_httpoprequest.h @@ -54,7 +54,9 @@ class HttpOpRequest : public HttpOperation { public: HttpOpRequest(); - virtual ~HttpOpRequest(); + +protected: + virtual ~HttpOpRequest(); // Use release() private: HttpOpRequest(const HttpOpRequest &); // Not defined diff --git a/indra/llcorehttp/_httpopsetget.h b/indra/llcorehttp/_httpopsetget.h index e065eb4c30..efb24855c5 100644 --- a/indra/llcorehttp/_httpopsetget.h +++ b/indra/llcorehttp/_httpopsetget.h @@ -49,7 +49,9 @@ class HttpOpSetGet : public HttpOperation { public: HttpOpSetGet(); - virtual ~HttpOpSetGet(); + +protected: + virtual ~HttpOpSetGet(); // Use release() private: HttpOpSetGet(const HttpOpSetGet &); // Not defined diff --git a/indra/llcorehttp/_httpopsetpriority.h b/indra/llcorehttp/_httpopsetpriority.h index f1e94b6e43..724293ef78 100644 --- a/indra/llcorehttp/_httpopsetpriority.h +++ b/indra/llcorehttp/_httpopsetpriority.h @@ -47,6 +47,8 @@ class HttpOpSetPriority : public HttpOperation { public: HttpOpSetPriority(HttpHandle handle, HttpRequest::priority_t priority); + +protected: virtual ~HttpOpSetPriority(); private: diff --git a/indra/llcorehttp/_httpreplyqueue.h b/indra/llcorehttp/_httpreplyqueue.h index 28cb1d68b7..4220a09a3b 100644 --- a/indra/llcorehttp/_httpreplyqueue.h +++ b/indra/llcorehttp/_httpreplyqueue.h @@ -63,7 +63,9 @@ class HttpReplyQueue : public LLCoreInt::RefCounted public: /// Caller acquires a Refcount on construction HttpReplyQueue(); - virtual ~HttpReplyQueue(); + +protected: + virtual ~HttpReplyQueue(); // Use release() private: HttpReplyQueue(const HttpReplyQueue &); // Not defined diff --git a/indra/llcorehttp/_httprequestqueue.h b/indra/llcorehttp/_httprequestqueue.h index f96bd7520c..26d7d9dca6 100644 --- a/indra/llcorehttp/_httprequestqueue.h +++ b/indra/llcorehttp/_httprequestqueue.h @@ -51,7 +51,9 @@ class HttpRequestQueue : public LLCoreInt::RefCounted protected: /// Caller acquires a Refcount on construction HttpRequestQueue(); - virtual ~HttpRequestQueue(); + +protected: + virtual ~HttpRequestQueue(); // Use release() private: HttpRequestQueue(const HttpRequestQueue &); // Not defined diff --git a/indra/llcorehttp/bufferarray.h b/indra/llcorehttp/bufferarray.h index d3862b45e1..d0c51d3c73 100644 --- a/indra/llcorehttp/bufferarray.h +++ b/indra/llcorehttp/bufferarray.h @@ -66,7 +66,9 @@ class BufferArray : public LLCoreInt::RefCounted { public: BufferArray(); - virtual ~BufferArray(); + +protected: + virtual ~BufferArray(); // Use release() private: BufferArray(const BufferArray &); // Not defined diff --git a/indra/llcorehttp/httpheaders.h b/indra/llcorehttp/httpheaders.h index 0b6d82561b..3449daa3a1 100644 --- a/indra/llcorehttp/httpheaders.h +++ b/indra/llcorehttp/httpheaders.h @@ -68,9 +68,10 @@ public: /// to the instance. A call to @see release() will destroy /// the instance. HttpHeaders(); - ~HttpHeaders(); protected: + virtual ~HttpHeaders(); // Use release() + HttpHeaders(const HttpHeaders &); // Not defined void operator=(const HttpHeaders &); // Not defined diff --git a/indra/llcorehttp/httpoptions.h b/indra/llcorehttp/httpoptions.h index 0b9dfdc1de..78d0aadb2e 100644 --- a/indra/llcorehttp/httpoptions.h +++ b/indra/llcorehttp/httpoptions.h @@ -61,9 +61,10 @@ class HttpOptions : public LLCoreInt::RefCounted public: HttpOptions(); HttpOptions(const HttpOptions &); - virtual ~HttpOptions(); protected: + virtual ~HttpOptions(); // Use release() + void operator=(const HttpOptions &); // Not defined public: diff --git a/indra/llcorehttp/httpresponse.h b/indra/llcorehttp/httpresponse.h index 5cf3a919f4..5bcd7c4eb8 100644 --- a/indra/llcorehttp/httpresponse.h +++ b/indra/llcorehttp/httpresponse.h @@ -58,9 +58,10 @@ class HttpResponse : public LLCoreInt::RefCounted { public: HttpResponse(); - virtual ~HttpResponse(); protected: + virtual ~HttpResponse(); // Use release() + HttpResponse(const HttpResponse &); // Not defined void operator=(const HttpResponse &); // Not defined -- cgit v1.3