HTTP module

Message

The base class for [Request]({#ref classicy_1_1http_1_1Request #}) and [Response]({#ref classicy_1_1http_1_1Response #}).

Message

#include <icy/http/message.h>

Inherits: NVCollection Subclassed by: Request, Response

The base class for Request and Response.

Defines the common properties of all HTTP messages. These are version, content length, content type and transfer encoding.

Public Methods

ReturnNameDescription
voidsetVersionSets the HTTP version for this message.
const std::string &getVersion constReturns the HTTP version for this message.
voidsetContentLengthSets the Content-Length header.
uint64_tgetContentLength constReturns the content length for this message, which may be UNKNOWN_CONTENT_LENGTH if no Content-Length header is present.
boolhasContentLength constReturns true if a Content-Length header is present.
voidsetTransferEncodingSets the transfer encoding for this message.
const std::string &getTransferEncoding constReturns the transfer encoding used for this message.
voidsetChunkedTransferEncodingIf flag is true, sets the Transfer-Encoding header to chunked. Otherwise, removes the Transfer-Encoding header.
boolisChunkedTransferEncoding constReturns true if the Transfer-Encoding header is set and its value is chunked.
voidsetContentTypeSets the content type for this message.
const std::string &getContentType constReturns the content type for this message.
voidsetKeepAliveSets the value of the Connection header field.
boolgetKeepAlive constReturns true if
voidwrite virtual constWrites the message header to the given output stream.
voidwrite virtual constWrites the message header to the given output string.
voidwrite virtual constWrites the message header directly into a byte buffer.

setVersion

void setVersion(const std::string & version)

Sets the HTTP version for this message.


getVersion

const

const std::string & getVersion() const

Returns the HTTP version for this message.


setContentLength

void setContentLength(uint64_t length)

Sets the Content-Length header.

If length is UNKNOWN_CONTENT_LENGTH, removes the Content-Length header.


getContentLength

const

uint64_t getContentLength() const

Returns the content length for this message, which may be UNKNOWN_CONTENT_LENGTH if no Content-Length header is present.


hasContentLength

const

bool hasContentLength() const

Returns true if a Content-Length header is present.


setTransferEncoding

void setTransferEncoding(const std::string & transferEncoding)

Sets the transfer encoding for this message.

The value should be either IDENTITY_TRANSFER_CODING or CHUNKED_TRANSFER_CODING.


getTransferEncoding

const

const std::string & getTransferEncoding() const

Returns the transfer encoding used for this message.

Normally, this is the value of the Transfer-Encoding header field. If no such field is present, returns IDENTITY_TRANSFER_CODING.


setChunkedTransferEncoding

void setChunkedTransferEncoding(bool flag)

If flag is true, sets the Transfer-Encoding header to chunked. Otherwise, removes the Transfer-Encoding header.


isChunkedTransferEncoding

const

bool isChunkedTransferEncoding() const

Returns true if the Transfer-Encoding header is set and its value is chunked.


setContentType

void setContentType(const std::string & contentType)

Sets the content type for this message.

Specify NO_CONTENT_TYPE to remove the Content-Type header.


getContentType

const

const std::string & getContentType() const

Returns the content type for this message.

If no Content-Type header is present, returns UNKNOWN_CONTENT_TYPE.


setKeepAlive

void setKeepAlive(bool keepAlive)

Sets the value of the Connection header field.

The value is set to "Keep-Alive" if keepAlive is true, or to "Close" otherwise.


getKeepAlive

const

bool getKeepAlive() const

Returns true if

  • the message has a Connection header field and its value is "Keep-Alive"

  • the message is an HTTP/1.1 message and no Connection header is set Returns false otherwise.


write

virtual const

virtual void write(std::ostream & ostr) const

Writes the message header to the given output stream.

The format is one name-value pair per line, with name and value separated by a colon and lines delimited by a carriage return and a linefeed character. See RFC 2822 for details.


write

virtual const

virtual void write(std::string & str) const

Writes the message header to the given output string.


write

virtual const

virtual void write(Buffer & buf) const

Writes the message header directly into a byte buffer.

Public Static Attributes

ReturnNameDescription
const std::stringHTTP_1_0 static
const std::stringHTTP_1_1 static
const std::stringIDENTITY_TRANSFER_ENCODING static
const std::stringCHUNKED_TRANSFER_ENCODING static
const intUNKNOWN_CONTENT_LENGTH static
const std::stringUNKNOWN_CONTENT_TYPE static
const std::stringCONTENT_LENGTH static
const std::stringCONTENT_TYPE static
const std::stringTRANSFER_ENCODING static
const std::stringCONNECTION static
const std::stringCONNECTION_KEEP_ALIVE static
const std::stringCONNECTION_CLOSE static
const std::stringEMPTY static

HTTP_1_0

static

const std::string HTTP_1_0

HTTP_1_1

static

const std::string HTTP_1_1

IDENTITY_TRANSFER_ENCODING

static

const std::string IDENTITY_TRANSFER_ENCODING

CHUNKED_TRANSFER_ENCODING

static

const std::string CHUNKED_TRANSFER_ENCODING

UNKNOWN_CONTENT_LENGTH

static

const int UNKNOWN_CONTENT_LENGTH

UNKNOWN_CONTENT_TYPE

static

const std::string UNKNOWN_CONTENT_TYPE

CONTENT_LENGTH

static

const std::string CONTENT_LENGTH

CONTENT_TYPE

static

const std::string CONTENT_TYPE

TRANSFER_ENCODING

static

const std::string TRANSFER_ENCODING

CONNECTION

static

const std::string CONNECTION

CONNECTION_KEEP_ALIVE

static

const std::string CONNECTION_KEEP_ALIVE

CONNECTION_CLOSE

static

const std::string CONNECTION_CLOSE

EMPTY

static

const std::string EMPTY

Protected Attributes

ReturnNameDescription
std::string_version

_version

std::string _version

Protected Methods

ReturnNameDescription
MessageCreates the Message with version HTTP/1.0.
MessageCreates the Message and sets the version.
~Message virtualDestroys the Message.

Message

Message()

Creates the Message with version HTTP/1.0.


Message

Message(const std::string & version)

Creates the Message and sets the version.


~Message

virtual

virtual ~Message()

Destroys the Message.