mirror of
https://github.com/apple/foundationdb.git
synced 2025-05-14 18:02:31 +08:00
63 lines
2.0 KiB
C++
63 lines
2.0 KiB
C++
/*
|
|
* Util.actor.cpp
|
|
*
|
|
* This source file is part of the FoundationDB open source project
|
|
*
|
|
* Copyright 2013-2021 Apple Inc. and the FoundationDB project authors
|
|
*
|
|
* 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.
|
|
*/
|
|
|
|
#include "fdbcli/fdbcli.actor.h"
|
|
#include "fdbclient/ManagementAPI.actor.h"
|
|
#include "fdbclient/Schemas.h"
|
|
#include "fdbclient/Status.h"
|
|
|
|
#include "flow/Arena.h"
|
|
|
|
#include "flow/actorcompiler.h" // This must be the last #include.
|
|
|
|
namespace fdb_cli {
|
|
|
|
bool tokencmp(StringRef token, const char* command) {
|
|
if (token.size() != strlen(command))
|
|
return false;
|
|
|
|
return !memcmp(token.begin(), command, token.size());
|
|
}
|
|
|
|
void printUsage(StringRef command) {
|
|
const auto& helpMap = CommandFactory::commands();
|
|
auto i = helpMap.find(command.toString());
|
|
if (i != helpMap.end())
|
|
printf("Usage: %s\n", i->second.usage.c_str());
|
|
else
|
|
fprintf(stderr, "ERROR: Unknown command `%s'\n", command.toString().c_str());
|
|
}
|
|
|
|
ACTOR Future<std::string> getSpecialKeysFailureErrorMessage(Reference<ITransaction> tr) {
|
|
Optional<Value> errorMsg = wait(safeThreadFutureToFuture(tr->get(fdb_cli::errorMsgSpecialKey)));
|
|
// Error message should be present
|
|
ASSERT(errorMsg.present());
|
|
// Read the json string
|
|
auto valueObj = readJSONStrictly(errorMsg.get().toString()).get_obj();
|
|
// verify schema
|
|
auto schema = readJSONStrictly(JSONSchemas::managementApiErrorSchema.toString()).get_obj();
|
|
std::string errorStr;
|
|
ASSERT(schemaMatch(schema, valueObj, errorStr, SevError, true));
|
|
// return the error message
|
|
return valueObj["message"].get_str();
|
|
}
|
|
|
|
} // namespace fdb_cli
|