mirror of
https://github.com/pocoproject/poco.git
synced 2025-02-22 07:01:12 +01:00
added support to get client id
This commit is contained in:
parent
e7ce0a5b52
commit
4e7a55a24b
@ -52,6 +52,7 @@
|
|||||||
namespace Poco {
|
namespace Poco {
|
||||||
namespace Net {
|
namespace Net {
|
||||||
class HTMLForm;
|
class HTMLForm;
|
||||||
|
class HTTPServerRequest;
|
||||||
}
|
}
|
||||||
namespace WebWidgets {
|
namespace WebWidgets {
|
||||||
|
|
||||||
@ -102,7 +103,7 @@ public:
|
|||||||
RequestProcessor* getAjaxProcessor(const std::string& id);
|
RequestProcessor* getAjaxProcessor(const std::string& id);
|
||||||
/// Returns the AjaxProcessor or null
|
/// Returns the AjaxProcessor or null
|
||||||
|
|
||||||
void attachToThread();
|
void attachToThread(Poco::Net::HTTPServerRequest& request);
|
||||||
/// Attaches the WebApplication to the current thread, so that a
|
/// Attaches the WebApplication to the current thread, so that a
|
||||||
/// call to WebApplication::instance() within this thread will return
|
/// call to WebApplication::instance() within this thread will return
|
||||||
/// exactly this WebApplication instance.
|
/// exactly this WebApplication instance.
|
||||||
@ -112,6 +113,9 @@ public:
|
|||||||
|
|
||||||
static WebApplication& instance();
|
static WebApplication& instance();
|
||||||
/// Returns the singleton for the current thread
|
/// Returns the singleton for the current thread
|
||||||
|
|
||||||
|
static std::string clientHostName();
|
||||||
|
/// Returns the host name of the caller
|
||||||
private:
|
private:
|
||||||
WebApplication(const WebApplication&);
|
WebApplication(const WebApplication&);
|
||||||
WebApplication& operator = (const WebApplication&);
|
WebApplication& operator = (const WebApplication&);
|
||||||
@ -125,6 +129,7 @@ private:
|
|||||||
RequestProcessorMap _requestProcessorMap;
|
RequestProcessorMap _requestProcessorMap;
|
||||||
RequestProcessorMap _ajaxProcessorMap;
|
RequestProcessorMap _ajaxProcessorMap;
|
||||||
static Poco::ThreadLocal<WebApplication*> _pInstance;
|
static Poco::ThreadLocal<WebApplication*> _pInstance;
|
||||||
|
static Poco::ThreadLocal<std::string> _clientMachine;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -45,6 +45,7 @@
|
|||||||
#include "Poco/Net/HTTPServerRequest.h"
|
#include "Poco/Net/HTTPServerRequest.h"
|
||||||
#include "Poco/Net/HTTPServerResponse.h"
|
#include "Poco/Net/HTTPServerResponse.h"
|
||||||
#include "Poco/URI.h"
|
#include "Poco/URI.h"
|
||||||
|
#include "Poco/ThreadLocal.h"
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
|
|
||||||
@ -59,6 +60,7 @@ const std::string RequestHandler::KEY_ID("id");
|
|||||||
const std::string RequestHandler::KEY_EVID("evId");
|
const std::string RequestHandler::KEY_EVID("evId");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
RequestHandler::RequestHandler(WebApplication& app):
|
RequestHandler::RequestHandler(WebApplication& app):
|
||||||
_app(app)
|
_app(app)
|
||||||
{
|
{
|
||||||
@ -72,7 +74,7 @@ RequestHandler::~RequestHandler()
|
|||||||
|
|
||||||
void RequestHandler::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response)
|
void RequestHandler::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response)
|
||||||
{
|
{
|
||||||
_app.attachToThread();
|
_app.attachToThread(request);
|
||||||
Poco::Net::NameValueCollection args;
|
Poco::Net::NameValueCollection args;
|
||||||
parseRequest(request, args);
|
parseRequest(request, args);
|
||||||
|
|
||||||
|
@ -37,6 +37,7 @@
|
|||||||
#include "Poco/WebWidgets/WebApplication.h"
|
#include "Poco/WebWidgets/WebApplication.h"
|
||||||
#include "Poco/WebWidgets/RequestProcessor.h"
|
#include "Poco/WebWidgets/RequestProcessor.h"
|
||||||
#include "Poco/Net/HTMLForm.h"
|
#include "Poco/Net/HTMLForm.h"
|
||||||
|
#include "Poco/Net/HTTPServerRequest.h"
|
||||||
|
|
||||||
|
|
||||||
namespace Poco {
|
namespace Poco {
|
||||||
@ -44,6 +45,7 @@ namespace WebWidgets {
|
|||||||
|
|
||||||
|
|
||||||
Poco::ThreadLocal<WebApplication*> WebApplication::_pInstance;
|
Poco::ThreadLocal<WebApplication*> WebApplication::_pInstance;
|
||||||
|
Poco::ThreadLocal<std::string> WebApplication::_clientMachine;
|
||||||
|
|
||||||
|
|
||||||
WebApplication::WebApplication(const Poco::URI& uri,ResourceManager::Ptr pRM):
|
WebApplication::WebApplication(const Poco::URI& uri,ResourceManager::Ptr pRM):
|
||||||
@ -53,7 +55,8 @@ WebApplication::WebApplication(const Poco::URI& uri,ResourceManager::Ptr pRM):
|
|||||||
_uri(uri)
|
_uri(uri)
|
||||||
{
|
{
|
||||||
poco_check_ptr (pRM);
|
poco_check_ptr (pRM);
|
||||||
attachToThread();
|
*_pInstance = this;
|
||||||
|
*_clientMachine = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -76,9 +79,10 @@ void WebApplication::setCurrentPage(Page::Ptr pPage)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void WebApplication::attachToThread()
|
void WebApplication::attachToThread(Poco::Net::HTTPServerRequest& request)
|
||||||
{
|
{
|
||||||
*_pInstance = this;
|
*_pInstance = this;
|
||||||
|
*_clientMachine = request.getHost();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -90,6 +94,12 @@ WebApplication& WebApplication::instance()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::string WebApplication::clientHostName()
|
||||||
|
{
|
||||||
|
return *_clientMachine;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void WebApplication::registerFormProcessor(const std::string& fieldName, RequestProcessor* pProc)
|
void WebApplication::registerFormProcessor(const std::string& fieldName, RequestProcessor* pProc)
|
||||||
{
|
{
|
||||||
std::pair<RequestProcessorMap::iterator, bool> res = _requestProcessorMap.insert(std::make_pair(fieldName, pProc));
|
std::pair<RequestProcessorMap::iterator, bool> res = _requestProcessorMap.insert(std::make_pair(fieldName, pProc));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user