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