Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
GrayLib::cHttpHeader Class Reference

#include <cHttpHeader.h>

Inheritance diagram for GrayLib::cHttpHeader:
GrayLib::cHttpHeaderClient GrayLib::cHttpHeaderServer

Public Member Functions

ITERATE_t get_HeadTagQty () const
 
bool HasHeadTag (HTTP_TAG_TYPE eTag) const
 
cStringA FindHeadTag (HTTP_TAG_TYPE eTag) const
 
cTimeInt FindHeadTagTime (HTTP_TAG_TYPE eTag) const
 
int FindHeadTagInt (HTTP_TAG_TYPE eTag) const
 
ITERATE_t AddHeadTag (HTTP_TAG_TYPE eTag, cStringA sVal)
 
ITERATE_t AddHeadTagTime (HTTP_TAG_TYPE eTag, cTimeInt tTime)
 
ITERATE_t AddHeadTagInt (HTTP_TAG_TYPE eTag, int iVal)
 
HRESULT ReadHeader (cStreamInput *pInp, OUT cStringA &sHeadVerb)
 
 UNITTEST_FRIEND (cHttpHeader)
 

Static Public Attributes

static const int k_MaxTags = 256
 Arbitrary max number of tags for a single request/response page. More...
 

Protected Member Functions

HRESULT ReadHeadLine (const char *pData, StrLen_t iLen)
 
HRESULT WriteHeadTags (cStreamOutput *pClient) const
 
 cHttpHeader () noexcept
 
 ~cHttpHeader ()
 

Protected Attributes

cArraySortStructHash< cHttpHeadTagm_aTags
 Tags in the HTTP header. More...
 

Friends

class cHttpHeadTag
 

Detailed Description

Read/Parse/Write params/Tags for a HTTP Header. Similar to cIniMap. Common Base for Client request or Server response. Get these params from the client or the server. Do some extra parsing for the more common tags. First line of header is always special. HTTPVERB_TYPE: "GET ","POST ",etc (for client) or "HTTP/1.1 200 OK" (server response)

Constructor & Destructor Documentation

◆ cHttpHeader()

GrayLib::cHttpHeader::cHttpHeader ( )
protectednoexcept

◆ ~cHttpHeader()

GrayLib::cHttpHeader::~cHttpHeader ( )
protected

Member Function Documentation

◆ AddHeadTag()

ITERATE_t GrayLib::cHttpHeader::AddHeadTag ( HTTP_TAG_TYPE  eTag,
cStringA  sVal 
)

Add or replace a HTTP_TAG_TYPE.

Returns
-1 = k_ITERATE_BAD failed.

◆ AddHeadTagInt()

ITERATE_t GrayLib::cHttpHeader::AddHeadTagInt ( HTTP_TAG_TYPE  eTag,
int  iVal 
)

◆ AddHeadTagTime()

ITERATE_t GrayLib::cHttpHeader::AddHeadTagTime ( HTTP_TAG_TYPE  eTag,
cTimeInt  tTime 
)

◆ FindHeadTag()

cStringA GrayLib::cHttpHeader::FindHeadTag ( HTTP_TAG_TYPE  eTag) const

If the header data has this tag, return its value.

◆ FindHeadTagInt()

int GrayLib::cHttpHeader::FindHeadTagInt ( HTTP_TAG_TYPE  eTag) const

◆ FindHeadTagTime()

cTimeInt GrayLib::cHttpHeader::FindHeadTagTime ( HTTP_TAG_TYPE  eTag) const

◆ get_HeadTagQty()

ITERATE_t GrayLib::cHttpHeader::get_HeadTagQty ( ) const
inline

◆ HasHeadTag()

bool GrayLib::cHttpHeader::HasHeadTag ( HTTP_TAG_TYPE  eTag) const
inline

◆ ReadHeader()

HRESULT GrayLib::cHttpHeader::ReadHeader ( cStreamInput pInp,
OUT cStringA sHeadVerb 
)

Parse/read the HTTP header from response. Ends with empty line = "\r\n\r\n" HTTP_CR may be from a client to server or server back to client.

Returns
sHeadVerb = the first line is special for client and server. Stripped of HTTP_CR. HRESULT_WIN32_C(ERROR_IO_INCOMPLETE) = incomplete header data. wait for more. no last "\r\n" yet. <0 = error. bad data. pInp = Start of any other POST type data.

◆ ReadHeadLine()

HRESULT GrayLib::cHttpHeader::ReadHeadLine ( const char *  pData,
StrLen_t  iLen 
)
protected

Read/Parse a single special HTTP_TAG_TYPE from the header data. followed by HTTP_CR. e.g. "Tag-Name: Arguments\r\n" Add values to existing tags separated by commas. multi line tags are allowed if prefixed by spaces.

◆ UNITTEST_FRIEND()

GrayLib::cHttpHeader::UNITTEST_FRIEND ( cHttpHeader  )

◆ WriteHeadTags()

HRESULT GrayLib::cHttpHeader::WriteHeadTags ( cStreamOutput pClient) const
protected

Write out all my header tags to pOut

Returns
Length sent.

Friends And Related Function Documentation

◆ cHttpHeadTag

friend class cHttpHeadTag
friend

Member Data Documentation

◆ k_MaxTags

const int GrayLib::cHttpHeader::k_MaxTags = 256
static

Arbitrary max number of tags for a single request/response page.

◆ m_aTags

cArraySortStructHash<cHttpHeadTag> GrayLib::cHttpHeader::m_aTags
protected

Tags in the HTTP header.


The documentation for this class was generated from the following files: