blob: a982889e6265826318a50a03f1399ab0e97427d5 [file] [log] [blame]
// Copyright 2022 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 <lib/async-loop/cpp/loop.h>
#include <lib/async-loop/default.h>
#include <lib/sys/component/cpp/outgoing_directory.h>
#include "src/devices/bin/driver_playground/src/playground.h"
#include "src/devices/lib/log/log.h"
int main(int argc, char* argv[]) {
// Initialize the async loop. The server will use the dispatcher of this
// loop to listen for incoming requests.
async::Loop loop(&kAsyncLoopConfigAttachToCurrentThread);
async_dispatcher_t* dispatcher = loop.dispatcher();
// Create an Outgoing class which will serve requests from the /svc/ directory.
component::OutgoingDirectory outgoing = component::OutgoingDirectory::Create(dispatcher);
zx::status<> status = outgoing.ServeFromStartupInfo();
if (status.is_error()) {
LOGF(ERROR, "error: ServeFromStartupInfo returned: %s", status.status_string());
return -1;
}
// Add the Playground protocol to our outgoing directory.
auto server = std::make_unique<Playground>();
status = outgoing.AddProtocol<fuchsia_driver_playground::ToolRunner>(server.get());
LOGF(INFO, "Running Playground server");
loop.Run();
return 0;
}