Skip to content

Commit

Permalink
Merge pull request #7
Browse files Browse the repository at this point in the history
Made ResponserHandler in requester get response data by copy
  • Loading branch information
kamchatka-volcano committed Aug 27, 2022
2 parents 66a81e0 + e8e4962 commit d9509d6
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 14 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.18)

project(fcgi_responder VERSION 1.3.1 DESCRIPTION "FastCGI protocol responder role implementation library")
project(fcgi_responder VERSION 1.4.0 DESCRIPTION "FastCGI protocol responder role implementation library")

if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
set(FCGI_RESPONDER_SUBPROJECT OFF)
Expand Down
2 changes: 1 addition & 1 deletion include/fcgi_responder/requester.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ class Requester{
///
std::optional<RequestHandle> sendRequest(
std::map<std::string, std::string> params, std::string data,
std::function<void(const std::optional<ResponseData>&)> responseHandler,
const std::function<void(std::optional<ResponseData>)>& responseHandler,
bool keepConnection = false);
///
/// \brief setErrorInfoHandler
Expand Down
4 changes: 2 additions & 2 deletions src/requester.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,10 @@ const RequesterImpl& Requester::impl() const
std::optional<RequestHandle> Requester::sendRequest(
std::map<std::string, std::string> params,
std::string data,
std::function<void(const std::optional<ResponseData>&)> responseHandler,
const std::function<void(std::optional<ResponseData>)>& responseHandler,
bool keepConnection)
{
return impl().sendRequest(std::move(params), std::move(data), std::move(responseHandler), keepConnection);
return impl().sendRequest(std::move(params), std::move(data), responseHandler, keepConnection);
}

int Requester::availableRequestsNumber() const
Expand Down
12 changes: 6 additions & 6 deletions src/requesterimpl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ RequesterImpl::RequesterImpl(
std::optional<RequestHandle> RequesterImpl::sendRequest(
std::map<std::string, std::string> params,
std::string data,
std::function<void(const std::optional<ResponseData>&)> responseHandler,
const std::function<void(std::optional<ResponseData>)>& responseHandler,
bool keepConnection)
{
if (connectionState_ == ConnectionState::NotConnected) {
Expand Down Expand Up @@ -76,7 +76,7 @@ int RequesterImpl::availableRequestsNumber() const
void RequesterImpl::initConnection(
std::map<std::string, std::string> params,
std::string data,
std::function<void(const std::optional<ResponseData>&)> responseHandler,
std::function<void(std::optional<ResponseData>)> responseHandler,
bool keepConnection)
{
connectionState_ = ConnectionState::ConnectionInProgress;
Expand Down Expand Up @@ -104,7 +104,7 @@ void RequesterImpl::initConnection(
std::optional<RequestHandle> RequesterImpl::doSendRequest(
const std::map<std::string, std::string>& params,
const std::string& data,
const std::function<void(const std::optional<ResponseData>&)>& responseHandler,
std::function<void(std::optional<ResponseData>)> responseHandler,
bool keepConnection)
{
if (requestIdPool_.empty()){
Expand All @@ -116,7 +116,7 @@ std::optional<RequestHandle> RequesterImpl::doSendRequest(
auto requestId = *requestIdPool_.begin();
requestIdPool_.erase(requestId);
responseMap_.emplace(requestId,
ResponseContext{responseHandler, ResponseData{}, keepConnection,
ResponseContext{std::move(responseHandler), ResponseData{}, keepConnection,
std::make_shared<std::function<void()>>([=] {
doEndRequest(requestId, ResponseStatus::Cancelled);
})
Expand All @@ -140,9 +140,9 @@ std::optional<RequestHandle> RequesterImpl::doSendRequest(

void RequesterImpl::doEndRequest(uint16_t requestId, ResponseStatus responseStatus)
{
const auto& responseContext = responseMap_.at(requestId);
auto& responseContext = responseMap_.at(requestId);
if (responseStatus == ResponseStatus::Successful)
responseContext.responseHandler(responseContext.responseData);
responseContext.responseHandler(std::move(responseContext.responseData));
else
responseContext.responseHandler(std::nullopt);

Expand Down
8 changes: 4 additions & 4 deletions src/requesterimpl.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ class RequesterImpl{
void receiveData(const char* data, std::size_t size);
std::optional<RequestHandle> sendRequest(
std::map<std::string, std::string> params, std::string data,
std::function<void(const std::optional<ResponseData>&)> responseHandler,
const std::function<void(std::optional<ResponseData>)>& responseHandler,
bool keepConnection = false);
void setErrorInfoHandler(const std::function<void (const std::string &)>& handler);

Expand All @@ -52,12 +52,12 @@ class RequesterImpl{
void initConnection(
std::map<std::string, std::string> params,
std::string data,
std::function<void(const std::optional<ResponseData>&)> responseHandler,
std::function<void(std::optional<ResponseData>)> responseHandler,
bool keepConnection);
std::optional<RequestHandle> doSendRequest(
const std::map<std::string, std::string>& params,
const std::string& data,
const std::function<void(const std::optional<ResponseData>&)>& responseHandler,
std::function<void(std::optional<ResponseData>)> responseHandler,
bool keepConnection);
void doEndRequest(uint16_t requestId, ResponseStatus responseStatus);
void onRecordRead(const Record& record);
Expand All @@ -80,7 +80,7 @@ class RequesterImpl{
} cfg_;

struct ResponseContext{
std::function<void(const std::optional<ResponseData>&)> responseHandler;
std::function<void(std::optional<ResponseData>)> responseHandler;
ResponseData responseData;
bool keepConnection = false;
std::shared_ptr<std::function<void()>> cancelRequestHandler;
Expand Down

0 comments on commit d9509d6

Please sign in to comment.