/****************************************************************************
* Copyright 2019 Nreal Techonology Limited. All rights reserved.
*
* This file is part of NRSDK.
*
* https://www.nreal.ai/
*
*****************************************************************************/
namespace NRKernal
{
public interface ILifecycle
{
///
/// Starts an instance of a object.
///
void Start();
///
/// Pause an instance of a object.
///
void Pause();
///
/// Resume an instance of a object.
///
void Resume();
///
/// Stops this instance of a object.
///
void Stop();
}
public interface ISubsystem : ILifecycle
{
///
// Will be true if asking the subsystem to start was successful. False in the case
// that the subsystem has stopped, was asked to stop or has not been started yet.
///
bool running { get; }
}
public interface ISubsystemDescriptor
{
///
/// A unique string that identifies the subsystem that this Descriptor can create.
///
string id { get; }
///
/// Creates an ISubsystem from this descriptor.
///
/// An instance of ISubsystem.
ISubsystem Create();
}
}