open source

This commit is contained in:
lvfulong
2020-11-11 16:17:13 +08:00
parent 4d989f3ecb
commit bc4ca748de
2441 changed files with 623057 additions and 2 deletions
@@ -0,0 +1,92 @@
/**
@file JCHttpHeader.h
@brief
@author guo
@version 1.0
@date 2016_09_03
*/
#ifndef __JCHttpHeader_H__
#define __JCHttpHeader_H__
#include <stdint.h>
namespace laya {
/*
Host: github.com
^ ^
| |
| Value (ValueLen = 10)
|
| FieldName, FieldNameLen = 4
*/
typedef struct _HeaderField {
const char *FieldName = nullptr;
int FieldNameLen = 0;;
const char *Value = nullptr;
int ValueLen = 0;
}HeaderField;
typedef struct {
/**
* Pointer to start of the request line.
*/
const char * RequestLineStart = nullptr;
/**
* Pointer to the end of the request line
*/
const char * RequestLineEnd = nullptr;
/**
* Pointer to the start of the request method string
*/
const char * RequestMethod = nullptr;
int RequestMethodLen = 0;
const char * RequestURI = nullptr;
int RequestURILen = 0;
const char * HTTPVersion = nullptr;
int HTTPVersionLen = 0;
unsigned int HeaderSize = 0;
enum { MAX_FILED_NUM = 26 };
HeaderField Fields[MAX_FILED_NUM];
} RequestHeader;
class JCHttpHeader :public RequestHeader {
public:
enum _ERROR {
ERR_REQUEST_LINE_PARSE_FAIL = -1,
ERR_INCOMPLETE_HEADER,
ERR_UNEXPECTED_CHAR,
};
static const char * request_line_parse(RequestHeader *header, const char *body, int bodyLength);
static int request_header_parse(RequestHeader *header, const char *body, int bodyLength);
struct CacheContrl {
bool nocache = false;
bool nostore = false;
bool mustrevalidate = false;
int maxage = 0;
};
public:
JCHttpHeader(const char* pHeader);
const char* getLastModifyed();//"Last-Modified"
CacheContrl* getCacheContrl() { return &m_CacheControl; };//"Cache-Control"
const char* getPragma();//"Pragma"
const char* getContentType();//"Content-Type"
const char* getETag();//"ETag"
int64_t getExpires();//"Expires" 这个不用了
bool parseCacheControl(char* p_pStr, int p_nlen);
protected:
int64_t m_tmExpires = 0;
CacheContrl m_CacheControl;
bool m_bCacheContrl = false;
};
}
#endif