Update formatting and documentation.

This commit is contained in:
Simon
2016-09-07 19:39:33 -07:00
parent ca0ec80b4c
commit 61ea2abaf5
3 changed files with 19 additions and 9 deletions

View File

@@ -38,7 +38,8 @@ AsyncRPCOperation::AsyncRPCOperation() : error_code_(0), error_message_() {
creation_time_ = (int64_t)time(NULL); creation_time_ = (int64_t)time(NULL);
} }
AsyncRPCOperation::AsyncRPCOperation(const AsyncRPCOperation& o) : id_(o.id_), creation_time_(o.creation_time_), state_(o.state_.load()) AsyncRPCOperation::AsyncRPCOperation(const AsyncRPCOperation& o) :
id_(o.id_), creation_time_(o.creation_time_), state_(o.state_.load())
{ {
} }
@@ -107,6 +108,7 @@ void AsyncRPCOperation::main() {
/** /**
* Return the error of the completed operation as a Value object. * Return the error of the completed operation as a Value object.
* If there is no error, return null Value.
*/ */
Value AsyncRPCOperation::getError() const { Value AsyncRPCOperation::getError() const {
if (!isFailed()) { if (!isFailed()) {
@@ -121,6 +123,7 @@ Value AsyncRPCOperation::getError() const {
/** /**
* Return the result of the completed operation as a Value object. * Return the result of the completed operation as a Value object.
* If the operation did not succeed, return null Value.
*/ */
Value AsyncRPCOperation::getResult() const { Value AsyncRPCOperation::getResult() const {
if (!isSuccess()) { if (!isSuccess()) {
@@ -135,6 +138,7 @@ Value AsyncRPCOperation::getResult() const {
* Returns a status Value object. * Returns a status Value object.
* If the operation has failed, it will include an error object. * If the operation has failed, it will include an error object.
* If the operation has succeeded, it will include the result value. * If the operation has succeeded, it will include the result value.
* If the operation was cancelled, there will be no error object or result value.
*/ */
Value AsyncRPCOperation::getStatus() const { Value AsyncRPCOperation::getStatus() const {
OperationStatus status = this->getState(); OperationStatus status = this->getState();
@@ -142,7 +146,7 @@ Value AsyncRPCOperation::getStatus() const {
obj.push_back(Pair("id", this->getId())); obj.push_back(Pair("id", this->getId()));
obj.push_back(Pair("status", OperationStatusMap[status])); obj.push_back(Pair("status", OperationStatusMap[status]));
obj.push_back(Pair("creation_time", this->creation_time_)); obj.push_back(Pair("creation_time", this->creation_time_));
// creation, exec time, duration, exec end, etc. // TODO: Issue #1354: There may be other useful metadata to return to the user.
Value err = this->getError(); Value err = this->getError();
if (!err.is_null()) { if (!err.is_null()) {
obj.push_back(Pair("error", err.get_obj())); obj.push_back(Pair("error", err.get_obj()));

View File

@@ -79,27 +79,33 @@ public:
} }
bool isCancelled() const { bool isCancelled() const {
return OperationStatus::CANCELLED==getState(); return OperationStatus::CANCELLED == getState();
} }
bool isExecuting() const { bool isExecuting() const {
return OperationStatus::EXECUTING==getState(); return OperationStatus::EXECUTING == getState();
} }
bool isReady() const { bool isReady() const {
return OperationStatus::READY==getState(); return OperationStatus::READY == getState();
} }
bool isFailed() const { bool isFailed() const {
return OperationStatus::FAILED==getState(); return OperationStatus::FAILED == getState();
} }
bool isSuccess() const { bool isSuccess() const {
return OperationStatus::SUCCESS==getState(); return OperationStatus::SUCCESS == getState();
} }
protected: protected:
// The state_ is atomic because only it can be mutated externally.
// For example, the user initiates a shut down of the application, which closes
// the AsyncRPCQueue, which in turn invokes cancel() on all operations.
// The member variables below are protected rather than private in order to
// allow subclasses of AsyncRPCOperation the ability to access and update
// internal state. Currently, all operations are executed in a single-thread
// by a single worker.
Value result_; Value result_;
int error_code_; int error_code_;
std::string error_message_; std::string error_message_;

View File

@@ -37,7 +37,7 @@ void AsyncRPCQueue::run(size_t workerId) {
} }
// Exit if the queue is empty and we are finishing up // Exit if the queue is empty and we are finishing up
if ( isFinishing() && operation_id_queue_.empty() ) { if (isFinishing() && operation_id_queue_.empty()) {
break; break;
} }