| // Copyright 2018 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. |
| |
| import 'incoming.dart'; |
| import 'internal/_startup_context_impl.dart'; |
| import 'outgoing.dart'; |
| |
| /// Context information that this component received at startup. |
| /// |
| /// The [StartupContext] holds references to the services and connections that |
| /// the component was launched with. Authors can use the startup context to |
| /// access useful information for connecting to other components and interacting |
| /// with the framework. |
| abstract class StartupContext { |
| static StartupContext _startupContext; |
| |
| /// Services that are available to this component. |
| /// |
| /// These services have been offered to this component by its parent or are |
| /// ambiently offered by the Component Framework. |
| final Incoming incoming; |
| |
| /// Services and data exposed to other components. |
| /// |
| /// Use [outgoing] to publish services and data to the component manager and |
| /// other components. |
| final Outgoing outgoing; |
| |
| /// Creates a startup context from the process startup info. |
| /// |
| /// Returns a cached [StartupContext] instance associated with the currently |
| /// running component if one was already created. |
| /// |
| /// Authors should use this method of obtaining the [StartupContext] instead |
| /// of instantiating one on their own as it will bind and connect to all the |
| /// underlying services for them. |
| factory StartupContext.fromStartupInfo() { |
| return _startupContext ??= StartupContextImpl.fromStartupInfo(); |
| } |
| } |