114 lines
3.6 KiB
C++
114 lines
3.6 KiB
C++
#pragma once
|
||
#include "http_define.h"
|
||
#if USE_NET_HTTP_WEBSITE
|
||
#include "http_server.h"
|
||
#include "util/strutils.h"
|
||
#include "util/time.h"
|
||
namespace ylib
|
||
{
|
||
namespace network
|
||
{
|
||
namespace http
|
||
{
|
||
class server;
|
||
class response;
|
||
class request;
|
||
class website;
|
||
/*************************************************************************
|
||
* class:请求包
|
||
*************************************************************************/
|
||
class reqpack
|
||
{
|
||
public:
|
||
|
||
reqpack();
|
||
~reqpack();
|
||
|
||
void init(const std::string& url, const std::string& host, const ylib::buffer& data, uint64 connid, network::http::server* server);
|
||
void clear();
|
||
network::http::request* request();
|
||
network::http::response* response();
|
||
|
||
const std::string& host()
|
||
{
|
||
/*获取基本请求信息*/
|
||
return m_host;
|
||
}
|
||
network::http::method method();
|
||
const std::string& filepath();
|
||
void filepath(const std::string& path);
|
||
network::http::server* server()
|
||
{
|
||
return m_server;
|
||
}
|
||
ylib::buffer& data()
|
||
{
|
||
return m_data;
|
||
}
|
||
const std::string& url()
|
||
{
|
||
return m_url;
|
||
}
|
||
const std::string& referrer()
|
||
{
|
||
return m_referrer;
|
||
}
|
||
const uint64& connid()
|
||
{
|
||
return m_connid;
|
||
}
|
||
network::http::website* website() {
|
||
return m_website;
|
||
}
|
||
void website(network::http::website* website) {
|
||
m_website = website;
|
||
}
|
||
timestamp begin_msec() {
|
||
return m_begin_msec;
|
||
}
|
||
std::string exec_msec() {
|
||
return std::to_string(time::now_msec() - m_begin_msec);
|
||
}
|
||
const std::string& remote() {
|
||
if (m_remote_ipaddress.empty()) {
|
||
ushort port;
|
||
m_server->remote(connid(), m_remote_ipaddress, port);
|
||
}
|
||
return m_remote_ipaddress;
|
||
}
|
||
ylib::json& extra() { return m_extra; }
|
||
private:
|
||
// 请求主机
|
||
std::string m_host;
|
||
// 请求方式
|
||
network::http::method m_method;
|
||
// 请求路径
|
||
std::string m_filepath;
|
||
// HPSERVER
|
||
network::http::server* m_server;
|
||
// 转发来路
|
||
std::string m_referrer;
|
||
// 请求ID
|
||
uint64 m_connid;
|
||
// 站点
|
||
network::http::website* m_website;
|
||
// 接收数据
|
||
ylib::buffer m_data;
|
||
// URL
|
||
std::string m_url;
|
||
// 请求发起时间
|
||
timestamp m_begin_msec;
|
||
// 远程IP
|
||
std::string m_remote_ipaddress;
|
||
|
||
// 附加数据
|
||
ylib::json m_extra;
|
||
private:
|
||
network::http::request* m_request;
|
||
network::http::response* m_response;
|
||
};
|
||
}
|
||
}
|
||
}
|
||
#endif
|