mirror of https://gitee.com/bigwinds/arangodb
agency on
This commit is contained in:
parent
f4ffae0433
commit
e5c79ea73c
|
@ -110,10 +110,12 @@ public:
|
|||
* @brief Invoked by leader to replicate log entries (§5.3);
|
||||
* also used as heartbeat (§5.2).
|
||||
*/
|
||||
query_ret_t appendEntries (term_t, id_t, index_t, term_t, index_t, query_t const&);
|
||||
append_entries_t append_entries_t (term_t, id_t, index_t, term_t, index_t,
|
||||
query_t const&);
|
||||
|
||||
/**
|
||||
* @brief 1. Deal with appendEntries to slaves. 2. Report success of write processes.
|
||||
* @brief 1. Deal with appendEntries to slaves.
|
||||
* 2. Report success of write processes.
|
||||
*/
|
||||
void run ();
|
||||
|
||||
|
|
|
@ -183,6 +183,8 @@ add_executable(${BIN_ARANGOD}
|
|||
Replication/InitialSyncer.cpp
|
||||
Replication/Syncer.cpp
|
||||
RestHandler/RestAdminLogHandler.cpp
|
||||
RestHandler/RestAgencyHandler.cpp
|
||||
RestHandler/RestAgencyPrivHandler.cpp
|
||||
RestHandler/RestBaseHandler.cpp
|
||||
RestHandler/RestBatchHandler.cpp
|
||||
RestHandler/RestCursorHandler.cpp
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
/// @author Kaveh Vahedipour
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "Rest/AnyServer.h"
|
||||
#include "RestServer/ArangoServer.h"
|
||||
#include "Rest/HttpRequest.h"
|
||||
#include "Rest/Version.h"
|
||||
#include "RestAgencyHandler.h"
|
||||
|
@ -43,8 +43,7 @@ using namespace arangodb::consensus;
|
|||
/// @brief ArangoDB server
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
extern AnyServer* ArangoInstance;
|
||||
|
||||
extern ArangoServer* ArangoInstance;
|
||||
|
||||
RestAgencyHandler::RestAgencyHandler(HttpRequest* request, Agent* agent)
|
||||
: RestBaseHandler(request), _agent(agent) {
|
||||
|
@ -52,8 +51,7 @@ RestAgencyHandler::RestAgencyHandler(HttpRequest* request, Agent* agent)
|
|||
|
||||
bool RestAgencyHandler::isDirect() const { return false; }
|
||||
|
||||
inline HttpHandler::status_t RestAgencyHandler::reportErrorEmptyRequest ()
|
||||
const {
|
||||
inline HttpHandler::status_t RestAgencyHandler::reportErrorEmptyRequest () {
|
||||
LOG(WARN) << "Empty request to public agency interface.";
|
||||
generateError(HttpResponse::NOT_FOUND,404);
|
||||
return HttpHandler::status_t(HANDLER_DONE);
|
||||
|
@ -78,19 +76,20 @@ inline HttpHandler::status_t RestAgencyHandler::redirect (id_t leader_id) {
|
|||
}
|
||||
|
||||
inline HttpHandler::status_t RestAgencyHandler::handleReadWrite () {
|
||||
|
||||
bool accepted;
|
||||
if (_request->suffix()[0] == "write") {
|
||||
write_ret_t ret = _agent.write(_request->toVelocyPack());
|
||||
_agent.waitFor (ret);
|
||||
|
||||
write_ret_t ret = _agent->write(_request->toVelocyPack());
|
||||
accepted = ret.accepted;
|
||||
_agent->waitFor (ret);
|
||||
} else {
|
||||
ret = _agent.read(_request->toVelocyPack());
|
||||
ret = _agent->read(_request->toVelocyPack());
|
||||
accepted = ret.accepted;
|
||||
}
|
||||
if (ret.accepted) { // We accepted the request
|
||||
if (accepted) { // We accepted the request
|
||||
ret.result->close();
|
||||
generateResult(ret.result->slice());
|
||||
} else { // We redirect the request
|
||||
_response->setHeader("Location", _agent.config().endpoints[ret.redirect]);
|
||||
_response->setHeader("Location", _agent->config().endpoints[ret.redirect]);
|
||||
generateError(HttpResponse::TEMPORARY_REDIRECT,307);
|
||||
}
|
||||
return HttpHandler::status_t(HANDLER_DONE);
|
||||
|
|
|
@ -48,6 +48,8 @@ class RestAgencyHandler : public arangodb::RestBaseHandler {
|
|||
status_t reportErrorEmptyRequest() ;
|
||||
status_t reportTooManySuffices() ;
|
||||
status_t unknownMethod() ;
|
||||
status_t redirect(id_t leader_id) ;
|
||||
status_t handleReadWrite() ;
|
||||
|
||||
consensus::Agent* _agent;
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
/// @author Kaveh Vahedipour
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "Rest/AnyServer.h"
|
||||
#include "RestServer/ArangoServer.h"
|
||||
#include "Rest/HttpRequest.h"
|
||||
#include "Rest/Version.h"
|
||||
#include "RestAgencyPrivHandler.h"
|
||||
|
@ -43,7 +43,7 @@ using namespace arangodb::consensus;
|
|||
/// @brief ArangoDB server
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
extern AnyServer* ArangoInstance;
|
||||
extern ArangoServer* ArangoInstance;
|
||||
|
||||
|
||||
RestAgencyPrivHandler::RestAgencyPrivHandler(HttpRequest* request, Agent* agent)
|
||||
|
|
|
@ -37,11 +37,8 @@
|
|||
|
||||
#include "Actions/RestActionHandler.h"
|
||||
#include "Actions/actions.h"
|
||||
<<<<<<< HEAD
|
||||
#include "Agency/ApplicationAgency.h"
|
||||
=======
|
||||
#include "ApplicationServer/ApplicationServer.h"
|
||||
>>>>>>> cfe62a9f9a3148d031533a899aa3d63523e8eb74
|
||||
#include "Aql/Query.h"
|
||||
#include "Aql/QueryCache.h"
|
||||
#include "Aql/RestAqlHandler.h"
|
||||
|
|
Loading…
Reference in New Issue