mirror of https://gitee.com/bigwinds/arangodb
minor changes of LOG and namespaces
This commit is contained in:
parent
b54aa2f1a6
commit
1b0cb63123
|
@ -0,0 +1,45 @@
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// DISCLAIMER
|
||||
///
|
||||
/// Copyright 2014-2016 ArangoDB GmbH, Cologne, Germany
|
||||
/// Copyright 2004-2014 triAGENS GmbH, Cologne, Germany
|
||||
///
|
||||
/// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
/// you may not use this file except in compliance with the License.
|
||||
/// You may obtain a copy of the License at
|
||||
///
|
||||
/// http://www.apache.org/licenses/LICENSE-2.0
|
||||
///
|
||||
/// Unless required by applicable law or agreed to in writing, software
|
||||
/// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
/// See the License for the specific language governing permissions and
|
||||
/// limitations under the License.
|
||||
///
|
||||
/// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
///
|
||||
/// @author Kaveh Vahedipour
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef __ARANGODB_CONSENSUS_AGENCY_COMMON__
|
||||
#define __ARANGODB_CONSENSUS_AGENCY_COMMON__
|
||||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
namespace arangodb {
|
||||
namespace consensus {
|
||||
|
||||
/**
|
||||
* @brief Agent configuration
|
||||
*/
|
||||
template<class T> struct Config {
|
||||
T min_ping;
|
||||
T max_ping;
|
||||
std::vector<std::string> end_points;
|
||||
Config (T min_p, T max_p) : min_ping(min_p), max_ping(max_p) {}
|
||||
};
|
||||
|
||||
}}
|
||||
#endif // __ARANGODB_CONSENSUS_AGENT__
|
||||
|
|
@ -0,0 +1,107 @@
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// DISCLAIMER
|
||||
///
|
||||
/// Copyright 2014-2016 ArangoDB GmbH, Cologne, Germany
|
||||
/// Copyright 2004-2014 triAGENS GmbH, Cologne, Germany
|
||||
///
|
||||
/// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
/// you may not use this file except in compliance with the License.
|
||||
/// You may obtain a copy of the License at
|
||||
///
|
||||
/// http://www.apache.org/licenses/LICENSE-2.0
|
||||
///
|
||||
/// Unless required by applicable law or agreed to in writing, software
|
||||
/// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
/// See the License for the specific language governing permissions and
|
||||
/// limitations under the License.
|
||||
///
|
||||
/// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
///
|
||||
/// @author Kaveh Vahedipour
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "Rest/AnyServer.h"
|
||||
#include "Rest/HttpRequest.h"
|
||||
#include "Rest/Version.h"
|
||||
#include "RestAgencyHandler.h"
|
||||
|
||||
#include "Agency/Agent.h"
|
||||
|
||||
#include <velocypack/Builder.h>
|
||||
#include <velocypack/velocypack-aliases.h>
|
||||
|
||||
#include "Basics/Logger.h"
|
||||
|
||||
using namespace arangodb;
|
||||
|
||||
using namespace arangodb::basics;
|
||||
using namespace arangodb::rest;
|
||||
using namespace arangodb::consensus;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief ArangoDB server
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
extern AnyServer* ArangoInstance;
|
||||
|
||||
|
||||
RestAgencyHandler::RestAgencyHandler(HttpRequest* request, Agent* agent)
|
||||
: RestBaseHandler(request), _agent(agent) {
|
||||
}
|
||||
|
||||
bool RestAgencyHandler::isDirect() const { return false; }
|
||||
|
||||
HttpHandler::status_t RestAgencyHandler::execute() {
|
||||
try {
|
||||
VPackBuilder result;
|
||||
result.add(VPackValue(VPackValueType::Object));
|
||||
|
||||
|
||||
// Empty request
|
||||
if (_request->suffix().size() == 0) {
|
||||
LOG(WARN) << "Empty request to agency. Must ask for vote, log or "
|
||||
"configure";
|
||||
generateError(HttpResponse::NOT_FOUND,404);
|
||||
return status_t(HANDLER_DONE);
|
||||
} else if (_request->suffix().size() > 1) { // path size >= 2
|
||||
LOG(WARN) << "Agency handles a single suffix: vote, log or configure";
|
||||
generateError(HttpResponse::NOT_FOUND,404);
|
||||
return status_t(HANDLER_DONE);
|
||||
} else {
|
||||
if (_request->suffix()[0].compare("vote") == 0) { //vote4me
|
||||
LOG(WARN) << "Vote request";
|
||||
bool found;
|
||||
char const* termStr = _request->value("term", found);
|
||||
if (!found) { // For now: don't like this
|
||||
LOG(WARN) << "No term specified"; // should be handled by
|
||||
generateError(HttpResponse::BAD,400); // Agent rather than Rest
|
||||
return status_t(HANDLER_DONE); // handler.
|
||||
}
|
||||
char const* idStr = _request->value("id", found);
|
||||
if (!found) {
|
||||
LOG(WARN) << "No id specified";
|
||||
generateError(HttpResponse::BAD,400);
|
||||
return status_t(HANDLER_DONE);
|
||||
}
|
||||
if (_agent->vote(std::stoul(idStr), std::stoul(termStr))) {
|
||||
result.add("vote", VPackValue("YES"));
|
||||
} else {
|
||||
result.add("vote", VPackValue("NO"));
|
||||
}
|
||||
} /*else {
|
||||
|
||||
|
||||
|
||||
} else if (_request->suffix()[0].compare("log") == 0) { // log replication
|
||||
} else if (_request->suffix()[0].compare("configure") == 0) {} // cluster conf*/
|
||||
}
|
||||
|
||||
result.close();
|
||||
VPackSlice s = result.slice();
|
||||
generateResult(s);
|
||||
} catch (...) {
|
||||
// Ignore this error
|
||||
}
|
||||
return status_t(HANDLER_DONE);
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// DISCLAIMER
|
||||
///
|
||||
/// Copyright 2014-2016 ArangoDB GmbH, Cologne, Germany
|
||||
/// Copyright 2004-2014 triAGENS GmbH, Cologne, Germany
|
||||
///
|
||||
/// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
/// you may not use this file except in compliance with the License.
|
||||
/// You may obtain a copy of the License at
|
||||
///
|
||||
/// http://www.apache.org/licenses/LICENSE-2.0
|
||||
///
|
||||
/// Unless required by applicable law or agreed to in writing, software
|
||||
/// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
/// See the License for the specific language governing permissions and
|
||||
/// limitations under the License.
|
||||
///
|
||||
/// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
///
|
||||
/// @author Kaveh Vahedipour
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef ARANGOD_REST_HANDLER_REST_AGENCY_HANDLER_H
|
||||
#define ARANGOD_REST_HANDLER_REST_AGENCY_HANDLER_H 1
|
||||
|
||||
#include "RestHandler/RestBaseHandler.h"
|
||||
#include "Agency/Agent.h"
|
||||
|
||||
namespace arangodb {
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief version request handler
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class RestAgencyHandler : public arangodb::RestBaseHandler {
|
||||
public:
|
||||
|
||||
explicit RestAgencyHandler(arangodb::rest::HttpRequest*,
|
||||
arangodb::consensus::Agent*);
|
||||
|
||||
bool isDirect() const override;
|
||||
|
||||
status_t execute() override;
|
||||
|
||||
private:
|
||||
|
||||
consensus::Agent* _agent;
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
|
@ -0,0 +1,87 @@
|
|||
# ===========================================================================
|
||||
# http://www.gnu.org/software/autoconf-archive/ax_compiler_vendor.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_COMPILER_VENDOR
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# Determine the vendor of the C/C++ compiler, e.g., gnu, intel, ibm, sun,
|
||||
# hp, borland, comeau, dec, cray, kai, lcc, metrowerks, sgi, microsoft,
|
||||
# watcom, etc. The vendor is returned in the cache variable
|
||||
# $ax_cv_c_compiler_vendor for C and $ax_cv_cxx_compiler_vendor for C++.
|
||||
#
|
||||
# LICENSE
|
||||
#
|
||||
# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
|
||||
# Copyright (c) 2008 Matteo Frigo
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by the
|
||||
# Free Software Foundation, either version 3 of the License, or (at your
|
||||
# option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
# Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# As a special exception, the respective Autoconf Macro's copyright owner
|
||||
# gives unlimited permission to copy, distribute and modify the configure
|
||||
# scripts that are the output of Autoconf when processing the Macro. You
|
||||
# need not follow the terms of the GNU General Public License when using
|
||||
# or distributing such scripts, even though portions of the text of the
|
||||
# Macro appear in them. The GNU General Public License (GPL) does govern
|
||||
# all other use of the material that constitutes the Autoconf Macro.
|
||||
#
|
||||
# This special exception to the GPL applies to versions of the Autoconf
|
||||
# Macro released by the Autoconf Archive. When you make and distribute a
|
||||
# modified version of the Autoconf Macro, you may extend this special
|
||||
# exception to the GPL to apply to your modified version as well.
|
||||
|
||||
#serial 15
|
||||
|
||||
AC_DEFUN([AX_COMPILER_VENDOR],
|
||||
[AC_CACHE_CHECK([for _AC_LANG compiler vendor], ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor,
|
||||
dnl Please add if possible support to ax_compiler_version.m4
|
||||
[# note: don't check for gcc first since some other compilers define __GNUC__
|
||||
vendors="intel: __ICC,__ECC,__INTEL_COMPILER
|
||||
ibm: __xlc__,__xlC__,__IBMC__,__IBMCPP__
|
||||
pathscale: __PATHCC__,__PATHSCALE__
|
||||
clang: __clang__
|
||||
cray: _CRAYC
|
||||
fujitsu: __FUJITSU
|
||||
gnu: __GNUC__
|
||||
sun: __SUNPRO_C,__SUNPRO_CC
|
||||
hp: __HP_cc,__HP_aCC
|
||||
dec: __DECC,__DECCXX,__DECC_VER,__DECCXX_VER
|
||||
borland: __BORLANDC__,__CODEGEARC__,__TURBOC__
|
||||
comeau: __COMO__
|
||||
kai: __KCC
|
||||
lcc: __LCC__
|
||||
sgi: __sgi,sgi
|
||||
microsoft: _MSC_VER
|
||||
metrowerks: __MWERKS__
|
||||
watcom: __WATCOMC__
|
||||
portland: __PGI
|
||||
tcc: __TINYC__
|
||||
unknown: UNKNOWN"
|
||||
for ventest in $vendors; do
|
||||
case $ventest in
|
||||
*:) vendor=$ventest; continue ;;
|
||||
*) vencpp="defined("`echo $ventest | sed 's/,/) || defined(/g'`")" ;;
|
||||
esac
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[
|
||||
#if !($vencpp)
|
||||
thisisanerror;
|
||||
#endif
|
||||
])], [break])
|
||||
done
|
||||
ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor=`echo $vendor | cut -d: -f1`
|
||||
])
|
||||
])
|
Loading…
Reference in New Issue