1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef COMPONENTS_COPRESENCE_HANDLERS_DIRECTIVE_HANDLER_IMPL_H_
6 #define COMPONENTS_COPRESENCE_HANDLERS_DIRECTIVE_HANDLER_IMPL_H_
8 #include "components/copresence/handlers/directive_handler.h"
14 #include "base/memory/scoped_ptr.h"
15 #include "components/copresence/handlers/audio/audio_directive_handler_impl.h"
16 #include "components/copresence/public/copresence_constants.h"
18 namespace copresence
{
20 // The directive handler manages transmit and receive directives.
21 class DirectiveHandlerImpl final
: public DirectiveHandler
{
23 DirectiveHandlerImpl();
24 explicit DirectiveHandlerImpl(
25 const DirectivesCallback
& update_directives_callback
);
27 scoped_ptr
<AudioDirectiveHandler
> audio_handler
);
28 ~DirectiveHandlerImpl() override
;
30 // DirectiveHandler overrides.
31 void Start(audio_modem::WhispernetClient
* whispernet_client
,
32 const audio_modem::TokensCallback
& tokens_cb
) override
;
33 void AddDirective(const Directive
& directive
) override
;
34 void RemoveDirectives(const std::string
& op_id
) override
;
36 GetCurrentAudioToken(audio_modem::AudioType type
) const override
;
37 bool IsAudioTokenHeard(audio_modem::AudioType type
) const override
;
40 // Starts actually running a directive.
41 void StartDirective(const std::string
& op_id
, const Directive
& directive
);
43 scoped_ptr
<AudioDirectiveHandler
> audio_handler_
;
44 std::map
<std::string
, std::vector
<Directive
>> pending_directives_
;
48 DISALLOW_COPY_AND_ASSIGN(DirectiveHandlerImpl
);
51 } // namespace copresence
53 #endif // COMPONENTS_COPRESENCE_HANDLERS_DIRECTIVE_HANDLER_IMPL_H_