blob: fd6903ec68b02cce092eba8e815a5fca779219e2 [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.
#ifndef SRC_CONNECTIVITY_NETWORK_TESTING_NETEMUL_RUNNER_SANDBOX_SERVICE_H_
#define SRC_CONNECTIVITY_NETWORK_TESTING_NETEMUL_RUNNER_SANDBOX_SERVICE_H_
#include <fuchsia/netemul/sandbox/cpp/fidl.h>
#include <fuchsia/sys/cpp/fidl.h>
#include "sandbox.h"
namespace netemul {
class SandboxBinding;
class SandboxService {
public:
explicit SandboxService(async_dispatcher_t* dispatcher);
~SandboxService();
fidl::InterfaceRequestHandler<fuchsia::netemul::sandbox::Sandbox> GetHandler();
protected:
friend SandboxBinding;
void BindingClosed(SandboxBinding* binding);
private:
async_dispatcher_t* dispatcher_;
fuchsia::sys::EnvironmentPtr parent_env_;
std::vector<std::unique_ptr<SandboxBinding>> bindings_;
uint32_t counter_;
uint32_t random_;
FXL_DISALLOW_COPY_AND_ASSIGN(SandboxService);
};
} // namespace netemul
#endif // SRC_CONNECTIVITY_NETWORK_TESTING_NETEMUL_RUNNER_SANDBOX_SERVICE_H_