blob: 1bdf9022ce0521628feaa5a7531359eb0c20e8e5 [file] [log] [blame]
// Copyright 2019 The Fuchsia 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 <fuchsia/feedback/cpp/fidl.h>
#include <lib/fidl/cpp/interface_request.h>
#include <lib/syslog/cpp/log_settings.h>
#include <lib/syslog/cpp/macros.h>
#include <memory>
#include "src/developer/forensics/feedback_data/constants.h"
#include "src/developer/forensics/feedback_data/main_service.h"
#include "src/developer/forensics/utils/component/component.h"
#include "src/lib/files/file.h"
namespace forensics {
namespace feedback_data {
int main() {
syslog::SetTags({"forensics", "feedback"});
forensics::component::Component component;
std::unique_ptr<MainService> main_service =
MainService::TryCreate(component.Dispatcher(), component.Services(), component.InspectRoot(),
component.IsFirstInstance());
if (!main_service) {
return EXIT_FAILURE;
}
if (!files::IsFile(kDoNotLaunchSystemLogRecorder)) {
main_service->SpawnSystemLogRecorder();
}
// fuchsia.feedback.ComponentDataRegister
component.AddPublicService(
::fidl::InterfaceRequestHandler<fuchsia::feedback::ComponentDataRegister>(
[&main_service](
::fidl::InterfaceRequest<fuchsia::feedback::ComponentDataRegister> request) {
main_service->HandleComponentDataRegisterRequest(std::move(request));
}));
// fuchsia.feedback.DataProvider
component.AddPublicService(::fidl::InterfaceRequestHandler<fuchsia::feedback::DataProvider>(
[&main_service](::fidl::InterfaceRequest<fuchsia::feedback::DataProvider> request) {
main_service->HandleDataProviderRequest(std::move(request));
}));
// fuchsia.feedback.DataProviderController
component.AddPublicService(
::fidl::InterfaceRequestHandler<fuchsia::feedback::DataProviderController>(
[&main_service](
::fidl::InterfaceRequest<fuchsia::feedback::DataProviderController> request) {
main_service->HandleDataProviderControllerRequest(std::move(request));
}));
// fuchsia.feedback.DevideIdProvider
component.AddPublicService(::fidl::InterfaceRequestHandler<fuchsia::feedback::DeviceIdProvider>(
[&main_service](::fidl::InterfaceRequest<fuchsia::feedback::DeviceIdProvider> request) {
main_service->HandleDeviceIdProviderRequest(std::move(request));
}));
component.RunLoop();
return EXIT_SUCCESS;
}
} // namespace feedback_data
} // namespace forensics