// Copyright 2014 The Chromium 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 MOJO_PUBLIC_CPP_ENVIRONMENT_ENVIRONMENT_H_ #define MOJO_PUBLIC_CPP_ENVIRONMENT_ENVIRONMENT_H_ #include "mojo/public/cpp/system/macros.h" struct MojoAsyncWaiter; struct MojoLogger; namespace mojo { // Other parts of the Mojo C++ APIs use the *static* methods of this class. // // The "standalone" implementation of this class requires that this class (in // the lib/ subdirectory) be instantiated (and remain so) while using the Mojo // C++ APIs. I.e., the static methods depend on things set up by the constructor // and torn down by the destructor. // // Other implementations may not have this requirement. class Environment { public: Environment(); // This constructor allows the standard implementations to be overridden (set // a parameter to null to get the standard implementation). Environment(const MojoAsyncWaiter* default_async_waiter, const MojoLogger* default_logger); ~Environment(); static const MojoAsyncWaiter* GetDefaultAsyncWaiter(); static const MojoLogger* GetDefaultLogger(); private: MOJO_DISALLOW_COPY_AND_ASSIGN(Environment); }; } // namespace mojo #endif // MOJO_PUBLIC_CPP_ENVIRONMENT_ENVIRONMENT_H_