Summary: When an operation fails, we have an error message. This was being displayed in the diagnostic screen output, but not included in the debug log. This makes them both have same bahaviour, so they both include the error messages. Reviewed By: passy Differential Revision: D17181847 fbshipit-source-id: 823f73d641d2315da86a0019479716852950f9a5
82 lines
2.0 KiB
C++
82 lines
2.0 KiB
C++
/*
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the LICENSE
|
|
* file in the root directory of this source tree.
|
|
*/
|
|
#include "FlipperState.h"
|
|
#include "FlipperStateUpdateListener.h"
|
|
#include "FlipperStep.h"
|
|
#include <vector>
|
|
|
|
#if FLIPPER_DEBUG_LOG
|
|
#include "Log.h"
|
|
#endif
|
|
|
|
using namespace facebook::flipper;
|
|
|
|
/* Class responsible for collecting state updates and combining them into a
|
|
* view of the current state of the flipper client. */
|
|
|
|
FlipperState::FlipperState() : logs("") {}
|
|
void FlipperState::setUpdateListener(
|
|
std::shared_ptr<FlipperStateUpdateListener> listener) {
|
|
mListener = listener;
|
|
}
|
|
|
|
void FlipperState::started(std::string step) {
|
|
#if FLIPPER_DEBUG_LOG
|
|
log("[started] " + step);
|
|
#endif
|
|
if (stateMap.find(step) == stateMap.end()) {
|
|
insertOrder.push_back(step);
|
|
}
|
|
stateMap[step] = State::in_progress;
|
|
if (mListener) {
|
|
mListener->onUpdate();
|
|
}
|
|
}
|
|
|
|
void FlipperState::success(std::string step) {
|
|
#if FLIPPER_DEBUG_LOG
|
|
log("[finished] " + step);
|
|
#endif
|
|
logs = logs + "[Success] " + step + "\n";
|
|
stateMap[step] = State::success;
|
|
if (mListener) {
|
|
mListener->onUpdate();
|
|
}
|
|
}
|
|
|
|
void FlipperState::failed(std::string step, std::string errorMessage) {
|
|
std::string message = "[Failed] " + step + ": " + errorMessage;
|
|
#if FLIPPER_DEBUG_LOG
|
|
log(message);
|
|
#endif
|
|
logs = logs + message + "\n";
|
|
stateMap[step] = State::failed;
|
|
if (mListener) {
|
|
mListener->onUpdate();
|
|
}
|
|
}
|
|
|
|
// TODO: Currently returns string, but should really provide a better
|
|
// representation of the current state so the UI can show it in a more intuitive
|
|
// way
|
|
std::string FlipperState::getState() {
|
|
return logs;
|
|
}
|
|
|
|
std::vector<StateElement> FlipperState::getStateElements() {
|
|
std::vector<StateElement> v;
|
|
for (auto stepName : insertOrder) {
|
|
v.push_back(StateElement(stepName, stateMap[stepName]));
|
|
}
|
|
return v;
|
|
}
|
|
|
|
std::shared_ptr<FlipperStep> FlipperState::start(std::string step_name) {
|
|
started(step_name);
|
|
return std::make_shared<FlipperStep>(step_name, this);
|
|
}
|