12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- import 'dart:convert';
- import 'package:flutter/foundation.dart';
- import 'handler_dispatcher.dart';
- import 'interface/connection.dart';
- import 'interface/handler.dart';
- import 'interface/pipeline.dart';
- /// 通知中心
- abstract class NotificationCenter implements IProcessPipeline {
- bool _isRunning = false;
- final _handlerDispatcher = HandlerDispatcher();
- @override
- bool get isRunning => _isRunning;
- @protected
- set isRunning(bool val) => _isRunning = val;
- /// 消息连接
- IConnection get connection;
- ///消息处理器供应者
- IHandlerProvider get handlerProvider => _handlerDispatcher;
- /// 消息处理器调度员
- @protected
- HandlerDispatcher get handlerDispatcher => _handlerDispatcher;
- @override
- void start() async {
- connection.messageReceived.addListener(_onMessageReceived);
- connection.connect();
- isRunning = true;
- }
- @override
- void stop() {
- connection.messageReceived.removeListener(_onMessageReceived);
- connection.close();
- isRunning = false;
- }
- @protected
- void process(String data);
- void _onMessageReceived(Object sender, dynamic e) {
- if (e is String) {
- process(e);
- } else if (e is Uint8List) {
- final text = const Utf8Decoder().convert(e);
- process(text);
- }
- }
- }
|