blob: 22655d12ca351e322c331ebf1bc21def23abeea2 [file] [log] [blame]
// Copyright 2019 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "arc/network/guest_service.h"
#include <base/bind.h>
namespace arc_networkd {
GuestService::GuestService(GuestMessage::GuestType guest,
DeviceManagerBase* dev_mgr)
: guest_(guest), dev_mgr_(dev_mgr) {
dev_mgr_->RegisterDeviceAddedHandler(
base::Bind(&GuestService::OnDeviceAdded, base::Unretained(this)));
dev_mgr_->RegisterDeviceRemovedHandler(
base::Bind(&GuestService::OnDeviceRemoved, base::Unretained(this)));
dev_mgr_->RegisterDefaultInterfaceChangedHandler(base::Bind(
&GuestService::OnDefaultInterfaceChanged, base::Unretained(this)));
}
void GuestService::RegisterMessageHandler(const MessageHandler& handler) {
handler_ = handler;
}
void GuestService::OnStart() {
dev_mgr_->OnGuestStart(guest_);
}
void GuestService::OnStop() {
dev_mgr_->OnGuestStop(guest_);
}
void GuestService::DispatchMessage(const GuestMessage& msg) {
if (!handler_.is_null())
handler_.Run(msg);
}
} // namespace arc_networkd