1
0
Fork 0

agency on

This commit is contained in:
Kaveh Vahedipour 2016-02-27 11:44:21 +01:00
parent f4ffae0433
commit e5c79ea73c
6 changed files with 21 additions and 19 deletions

View File

@ -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 ();

View File

@ -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

View File

@ -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);

View File

@ -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;

View File

@ -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)

View File

@ -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"