1
0
Fork 0

not sure about the restshardhandler yet

This commit is contained in:
Jan Steemann 2013-12-12 17:51:45 +01:00
parent 8eccb0a35f
commit f0184d2786
5 changed files with 25 additions and 114 deletions

View File

@ -32,6 +32,11 @@
#include "Rest/HttpRequest.h"
#include "Rest/HttpResponse.h"
#include "HttpServer/HttpServer.h"
#include "HttpServer/HttpHandlerFactory.h"
#include "GeneralServer/GeneralServerJob.h"
#include "GeneralServer/GeneralServer.h"
using namespace triagens::arango;
// -----------------------------------------------------------------------------
@ -95,7 +100,7 @@ triagens::rest::HttpHandler::status_e RestShardHandler::execute () {
"this API is meant to be called on a coordinator node");
return HANDLER_DONE;
}
/*
bool found;
char const* coordinator = _request->header("x-arango-coordinator", found);
@ -112,20 +117,21 @@ triagens::rest::HttpHandler::status_e RestShardHandler::execute () {
(int) triagens::rest::HttpResponse::BAD,
"header 'x-arango-operation' is missing");
}
char const* url = _request->header("x-arango-url", found);
if (! found) {
generateError(triagens::rest::HttpResponse::BAD,
(int) triagens::rest::HttpResponse::BAD,
"header 'x-arango-url' is missing");
}
*/
/*
Job* ajob = handler->createJob(this, true);
ServerJob* job = dynamic_cast<ServerJob*>(ajob);
if (jobId != 0) {
_jobManager->initAsyncJob<S, HF>(job, jobId);
}
if (! _dispatcher->addJob(job)) {
// could not add job to job queue
delete handler;
return false;
}
*/
triagens::rest::HttpHandler* handler = this->_server->createHandler(_request);
triagens::rest::Job* job = new triagens::rest::GeneralServerJob<triagens::rest::HttpServer, triagens::rest::HttpHandlerFactory::GeneralHandler>(0, handler, true);
_dispatcher->addJob(job);
*/
// respond with a 202
_response = createResponse(triagens::rest::HttpResponse::ACCEPTED);

View File

@ -47,8 +47,7 @@ using namespace std;
////////////////////////////////////////////////////////////////////////////////
Job::Job (string const& name)
: _name(name),
_observers() {
: _name(name) {
}
////////////////////////////////////////////////////////////////////////////////
@ -79,15 +78,6 @@ const string& Job::getName () const {
return _name;
}
////////////////////////////////////////////////////////////////////////////////
/// @brief attach an observer
////////////////////////////////////////////////////////////////////////////////
void Job::attachObserver (JobObserver* observer) {
_observers.push_back(observer);
}
////////////////////////////////////////////////////////////////////////////////
/// @}
////////////////////////////////////////////////////////////////////////////////
@ -121,50 +111,6 @@ void Job::setDispatcherThread (DispatcherThread*) {
/// @}
////////////////////////////////////////////////////////////////////////////////
// -----------------------------------------------------------------------------
// --SECTION-- protected methods
// -----------------------------------------------------------------------------
////////////////////////////////////////////////////////////////////////////////
/// @addtogroup Dispatcher
/// @{
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/// @brief notify attached observers
////////////////////////////////////////////////////////////////////////////////
void Job::notifyObservers (const Job::notification_e type) {
vector<JobObserver*>::iterator i;
switch (type) {
case JOB_WORK:
for (i = _observers.begin(); i != _observers.end(); ++i) {
(*i)->workCallback(this);
}
break;
case JOB_CLEANUP:
for (i = _observers.begin(); i != _observers.end(); ++i) {
(*i)->cleanupCallback(this);
}
break;
case JOB_SHUTDOWN:
for (i = _observers.begin(); i != _observers.end(); ++i) {
(*i)->shutdownCallback(this);
}
break;
}
}
////////////////////////////////////////////////////////////////////////////////
/// @}
////////////////////////////////////////////////////////////////////////////////
// -----------------------------------------------------------------------------
// --SECTION-- END-OF-FILE
// -----------------------------------------------------------------------------

View File

@ -42,7 +42,6 @@ namespace triagens {
namespace rest {
class DispatcherThread;
class JobObserver;
// -----------------------------------------------------------------------------
// --SECTION-- class Job
@ -98,16 +97,6 @@ namespace triagens {
JOB_FAILED
};
////////////////////////////////////////////////////////////////////////////////
/// @brief notification for job observers
////////////////////////////////////////////////////////////////////////////////
enum notification_e {
JOB_WORK,
JOB_CLEANUP,
JOB_SHUTDOWN
};
////////////////////////////////////////////////////////////////////////////////
/// @}
////////////////////////////////////////////////////////////////////////////////
@ -157,12 +146,6 @@ namespace triagens {
const string& getName () const;
////////////////////////////////////////////////////////////////////////////////
/// @brief attach an observer
////////////////////////////////////////////////////////////////////////////////
void attachObserver (JobObserver* observer);
////////////////////////////////////////////////////////////////////////////////
/// @}
////////////////////////////////////////////////////////////////////////////////
@ -226,27 +209,6 @@ namespace triagens {
/// @}
////////////////////////////////////////////////////////////////////////////////
// -----------------------------------------------------------------------------
// --SECTION-- protected methods
// -----------------------------------------------------------------------------
////////////////////////////////////////////////////////////////////////////////
/// @addtogroup Dispatcher
/// @{
////////////////////////////////////////////////////////////////////////////////
protected:
////////////////////////////////////////////////////////////////////////////////
/// @brief notify attached observers
////////////////////////////////////////////////////////////////////////////////
void notifyObservers (const Job::notification_e type);
////////////////////////////////////////////////////////////////////////////////
/// @}
////////////////////////////////////////////////////////////////////////////////
// -----------------------------------------------------------------------------
// --SECTION-- private variables
// -----------------------------------------------------------------------------
@ -264,11 +226,6 @@ namespace triagens {
const string& _name;
////////////////////////////////////////////////////////////////////////////////
/// @brief attached observers
////////////////////////////////////////////////////////////////////////////////
vector<JobObserver*> _observers;
};
}
}

View File

@ -174,7 +174,7 @@ namespace triagens {
/// @brief whether or not the job is detached
////////////////////////////////////////////////////////////////////////////////
bool isDetached () const {
inline bool isDetached () const {
return _isDetached;
}
@ -234,7 +234,7 @@ namespace triagens {
abandon = _abandon;
}
if (! abandon) {
if (! abandon && _server != 0) {
_server->jobDone(this);
}

View File

@ -388,6 +388,8 @@ namespace triagens {
return;
}
assert(job != 0);
*jobId = (AsyncJobResult::IdType) generate();
job->assignId((uint64_t) *jobId);
@ -415,7 +417,7 @@ namespace triagens {
return;
}
double now = TRI_microtime();
const double now = TRI_microtime();
WRITE_LOCKER(_lock);
JobList::iterator it = _jobs.find(jobId);