Home | History | Annotate | Download | only in environment
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef MOJO_PUBLIC_CPP_ENVIRONMENT_ENVIRONMENT_H_
      6 #define MOJO_PUBLIC_CPP_ENVIRONMENT_ENVIRONMENT_H_
      7 
      8 #include "mojo/public/cpp/system/macros.h"
      9 
     10 struct MojoAsyncWaiter;
     11 struct MojoLogger;
     12 
     13 namespace mojo {
     14 
     15 // Other parts of the Mojo C++ APIs use the *static* methods of this class.
     16 //
     17 // The "standalone" implementation of this class requires that this class (in
     18 // the lib/ subdirectory) be instantiated (and remain so) while using the Mojo
     19 // C++ APIs. I.e., the static methods depend on things set up by the constructor
     20 // and torn down by the destructor.
     21 //
     22 // Other implementations may not have this requirement.
     23 class Environment {
     24  public:
     25   Environment();
     26   // This constructor allows the standard implementations to be overridden (set
     27   // a parameter to null to get the standard implementation).
     28   Environment(const MojoAsyncWaiter* default_async_waiter,
     29               const MojoLogger* default_logger);
     30   ~Environment();
     31 
     32   static const MojoAsyncWaiter* GetDefaultAsyncWaiter();
     33   static const MojoLogger* GetDefaultLogger();
     34 
     35  private:
     36   MOJO_DISALLOW_COPY_AND_ASSIGN(Environment);
     37 };
     38 
     39 }  // namespace mojo
     40 
     41 #endif  // MOJO_PUBLIC_CPP_ENVIRONMENT_ENVIRONMENT_H_
     42