| // Copyright 2015 The Weave Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #ifndef LIBWEAVE_INCLUDE_WEAVE_COMMAND_H_ | |
| #define LIBWEAVE_INCLUDE_WEAVE_COMMAND_H_ | |
| #include <string> | |
| #include <base/values.h> | |
| #include <weave/error.h> | |
| namespace weave { | |
| class Command { | |
| public: | |
| enum class State { | |
| kQueued, | |
| kInProgress, | |
| kPaused, | |
| kError, | |
| kDone, | |
| kCancelled, | |
| kAborted, | |
| kExpired, | |
| }; | |
| enum class Origin { kLocal, kCloud }; | |
| // Returns the full command ID. | |
| virtual const std::string& GetID() const = 0; | |
| // Returns the full name of the command. | |
| virtual const std::string& GetName() const = 0; | |
| // Returns the full path to the component this command is intended for. | |
| virtual const std::string& GetComponent() const = 0; | |
| // Returns the command state. | |
| virtual Command::State GetState() const = 0; | |
| // Returns the origin of the command. | |
| virtual Command::Origin GetOrigin() const = 0; | |
| // Returns the command parameters. | |
| virtual const base::DictionaryValue& GetParameters() const = 0; | |
| // Returns the command progress. | |
| virtual const base::DictionaryValue& GetProgress() const = 0; | |
| // Returns the command results. | |
| virtual const base::DictionaryValue& GetResults() const = 0; | |
| // Returns the command error. | |
| virtual const Error* GetError() const = 0; | |
| // Updates the command progress. The |progress| should match the schema. | |
| // Returns false if |progress| value is incorrect. | |
| virtual bool SetProgress(const base::DictionaryValue& progress, | |
| ErrorPtr* error) = 0; | |
| // Sets command into terminal "done" state. | |
| // Updates the command results. The |results| should match the schema. | |
| // Returns false if |results| value is incorrect. | |
| virtual bool Complete(const base::DictionaryValue& results, | |
| ErrorPtr* error) = 0; | |
| // Sets command into paused state. | |
| // This is not terminal state. Command can be resumed with |SetProgress| call. | |
| virtual bool Pause(ErrorPtr* error) = 0; | |
| // Sets command into error state and assign error. | |
| // This is not terminal state. Command can be resumed with |SetProgress| call. | |
| virtual bool SetError(const Error* command_error, ErrorPtr* error) = 0; | |
| // Aborts command execution. | |
| // Sets command into terminal "aborted" state. | |
| virtual bool Abort(const Error* command_error, ErrorPtr* error) = 0; | |
| // Cancels command execution. | |
| // Sets command into terminal "canceled" state. | |
| virtual bool Cancel(ErrorPtr* error) = 0; | |
| protected: | |
| virtual ~Command() {} | |
| }; | |
| } // namespace weave | |
| #endif // LIBWEAVE_INCLUDE_WEAVE_COMMAND_H_ |