blob: 78c3ea439a337a3ad73e802ba25a09307b6d5b23 [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/ui/activity/control/cpp/fidl.h>
#include <fuchsia/ui/activity/cpp/fidl.h>
#include <lib/async-loop/cpp/loop.h>
#include <lib/async-loop/default.h>
#include <lib/async/default.h>
#include <lib/sys/cpp/component_context.h>
#include <lib/syslog/cpp/macros.h>
#include <memory>
#include "src/sys/activity/activity_app.h"
#include "src/sys/activity/state_machine_driver.h"
int main(void) {
async::Loop loop(&kAsyncLoopConfigAttachToCurrentThread);
async_set_default_dispatcher(loop.dispatcher());
std::unique_ptr<sys::ComponentContext> startup_context =
sys::ComponentContext::CreateAndServeOutgoingDirectory();
auto driver = std::make_unique<activity::StateMachineDriver>(loop.dispatcher());
activity::ActivityApp app(std::move(driver), loop.dispatcher());
startup_context->outgoing()->AddPublicService<fuchsia::ui::activity::control::Control>(
[&app](fidl::InterfaceRequest<fuchsia::ui::activity::control::Control> request) {
app.AddControlBinding(std::move(request));
});
startup_context->outgoing()->AddPublicService<fuchsia::ui::activity::Tracker>(
[&app](fidl::InterfaceRequest<fuchsia::ui::activity::Tracker> request) {
app.AddTrackerBinding(std::move(request));
});
startup_context->outgoing()->AddPublicService<fuchsia::ui::activity::Provider>(
[&app](fidl::InterfaceRequest<fuchsia::ui::activity::Provider> request) {
app.AddProviderBinding(std::move(request));
});
FX_LOGS(INFO) << "activity-service: Starting service";
loop.Run();
async_set_default_dispatcher(nullptr);
return 0;
}