| // Copyright 2018 The Chromium OS 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 DIAGNOSTICS_DPSL_PUBLIC_DPSL_GLOBAL_CONTEXT_H_ |
| #define DIAGNOSTICS_DPSL_PUBLIC_DPSL_GLOBAL_CONTEXT_H_ |
| |
| #include <memory> |
| |
| namespace diagnostics { |
| |
| // Interface of the class that performs the process-wide DPSL initialization and |
| // holds any global resources it needs. This object must be kept alive as long |
| // as any other DPSL functionality is used. |
| // |
| // EXAMPLE USAGE: |
| // |
| // int main() { |
| // auto global_context = DpslGlobalContext::Create(); |
| // ... |
| // |
| // NOTE ON THREADING MODEL: This class is NOT thread-safe. It must be destroyed |
| // on the same thread on which it was created. |
| // |
| // NOTE ON LIFETIME: At most one instance of this class must be created during |
| // the whole lifetime of the current process. |
| class DpslGlobalContext { |
| public: |
| // Factory method that returns an instance of the real implementation of this |
| // interface. |
| // |
| // The return value is guaranteed to be non-null. |
| static std::unique_ptr<DpslGlobalContext> Create(); |
| |
| virtual ~DpslGlobalContext() = default; |
| }; |
| |
| } // namespace diagnostics |
| |
| #endif // DIAGNOSTICS_DPSL_PUBLIC_DPSL_GLOBAL_CONTEXT_H_ |