blob: 2f5333cad52fb0ccf77d753a08257969ffb4129a [file] [log] [blame]
Alex Vakulenko95110752014-09-03 16:27:21 -07001// Copyright 2014 The Chromium OS 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.
4
5#include "buffet/commands/dbus_command_dispatcher.h"
6
7#include <chromeos/dbus/exported_object_manager.h>
8
9#include "buffet/commands/command_instance.h"
Vitaly Bukaae0f3a12015-05-11 16:27:30 -070010#include "buffet/commands/dbus_command_proxy.h"
Alex Vakulenko420e49f2014-12-01 17:53:27 -080011#include "buffet/dbus_constants.h"
Alex Vakulenko95110752014-09-03 16:27:21 -070012
13using chromeos::dbus_utils::AsyncEventSequencer;
14using chromeos::dbus_utils::ExportedObjectManager;
15
16namespace buffet {
17
18DBusCommandDispacher::DBusCommandDispacher(
Vitaly Bukaae0f3a12015-05-11 16:27:30 -070019 const base::WeakPtr<ExportedObjectManager>& object_manager)
20 : object_manager_{object_manager} {
Alex Vakulenko95110752014-09-03 16:27:21 -070021}
22
23void DBusCommandDispacher::OnCommandAdded(CommandInstance* command_instance) {
Vitaly Bukaae0f3a12015-05-11 16:27:30 -070024 if (!object_manager_)
25 return;
26 std::unique_ptr<DBusCommandProxy> proxy{new DBusCommandProxy(
27 object_manager_.get(), object_manager_->GetBus(), command_instance,
28 dbus_constants::kCommandServicePathPrefix + std::to_string(++next_id_))};
Alex Vakulenko95110752014-09-03 16:27:21 -070029 proxy->RegisterAsync(AsyncEventSequencer::GetDefaultCompletionAction());
Anton Muhinb66a9302014-11-10 22:15:22 +040030 command_instance->AddProxy(std::move(proxy));
Alex Vakulenko95110752014-09-03 16:27:21 -070031}
32
Alex Vakulenko95110752014-09-03 16:27:21 -070033} // namespace buffet