| // 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_ |