aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/core/include/VRAgentsObserver.h
blob: d4c0c7b60d1037c9fd2195c48b7d54b85f8d58a0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/*
 * Copyright 2018-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 *
 *     http://aws.amazon.com/apache2.0/
 *
 * or in the "license" file accompanying this file. This file 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.
 */
#ifndef VSHL_CORE_INCLUDE_VR_AGENTS_OBSERVER_H_
#define VSHL_CORE_INCLUDE_VR_AGENTS_OBSERVER_H_

#include <memory>

#include "core/include/VRRequestProcessorDelegate.h"
#include "interfaces/voiceagents/IVoiceAgentsChangeObserver.h"
#include "utilities/logging/Logger.h"

using namespace std;

namespace vshl {
namespace core {
/*
 * This class will observe the changes to the voiceagents data and transfers
 * the actual handling responsibility to its delegate.
 */
class VRAgentsObserver
    : public vshl::common::interfaces::IVoiceAgentsChangeObserver {
public:
  // Create a VRAgentsObserver.
  static shared_ptr<VRAgentsObserver>
  create(weak_ptr<VRRequestProcessorDelegate> delegate);

  ~VRAgentsObserver();

protected:
  void OnDefaultVoiceAgentChanged(
      shared_ptr<vshl::common::interfaces::IVoiceAgent> defaultVoiceAgent)
      override;
  void OnVoiceAgentAdded(
      shared_ptr<vshl::common::interfaces::IVoiceAgent> voiceAgent) override;
  void OnVoiceAgentRemoved(
      shared_ptr<vshl::common::interfaces::IVoiceAgent> voiceAgent) override;
  void OnVoiceAgentActiveWakeWordChanged(
      shared_ptr<vshl::common::interfaces::IVoiceAgent> voiceAgent) override;
  void OnVoiceAgentActivated(
      shared_ptr<vshl::common::interfaces::IVoiceAgent> voiceAgent) override;
  void OnVoiceAgentDeactivated(
      shared_ptr<vshl::common::interfaces::IVoiceAgent> voiceAgent) override;

private:
  // Constructor
  VRAgentsObserver(weak_ptr<VRRequestProcessorDelegate> delegate);

  // Delegate that needs to be informed of the voiceagent data changes.
  weak_ptr<VRRequestProcessorDelegate> mWeakDelegate;
};

} // namespace core
} // namespace vshl

#endif // VSHL_CORE_INCLUDE_VR_AGENTS_OBSERVER_H_