blob: b6703761af096ffc9fc4e7483768d7944fae44e8 [file] [log] [blame]
// Copyright 2017 The Fuchsia 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 'dart:async';
import 'package:lib.app.dart/app.dart';
import 'package:fidl_fuchsia_auth/fidl.dart';
import 'package:fidl_fuchsia_modular/fidl.dart';
import 'package:lib.agent.dart/agent.dart';
import 'package:meta/meta.dart';
import 'home_work_proposer.dart';
// ignore: unused_element
HomeWorkAgent _agent;
/// An implementation of the [Agent] interface.
///
/// TODO: Refactor this class to use the new SDK instead of deprecated API
/// ignore: deprecated_member_use
class HomeWorkAgent extends AgentImpl {
final IntelligenceServicesProxy _intelligenceServices =
new IntelligenceServicesProxy();
final ContextReaderProxy _contextReader = new ContextReaderProxy();
final HomeWorkProposer _homeWorkProposer = new HomeWorkProposer();
/// Constructor.
HomeWorkAgent({@required StartupContext startupContext})
: super(startupContext: startupContext);
@override
Future<Null> onReady(
StartupContext startupContext,
AgentContext agentContext,
ComponentContext componentContext,
TokenManager tokenManager,
ServiceProviderImpl outgoingServices,
) async {
connectToService(
startupContext.environmentServices, _intelligenceServices.ctrl);
_intelligenceServices.getContextReader(_contextReader.ctrl.request());
_homeWorkProposer.start(
_contextReader,
_intelligenceServices,
);
}
@override
Future<Null> onStop() async {
_homeWorkProposer.stop();
_contextReader.ctrl.close();
_intelligenceServices.ctrl.close();
}
}
Future<Null> main(List<dynamic> args) async {
StartupContext startupContext = new StartupContext.fromStartupInfo();
_agent = new HomeWorkAgent(
startupContext: startupContext,
)..advertise();
}