Last active
November 6, 2019 11:42
-
-
Save Hecatoncheir/bdc79d0d1833e5171527c28292725d51 to your computer and use it in GitHub Desktop.
infinit
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import 'dart:async'; | |
| import 'dart:isolate'; | |
| import 'package:logging/logging.dart'; | |
| import 'package:sender/mailers/west_call_mailer.dart'; | |
| import 'package:sender/reminders/task_reminder.dart'; | |
| import 'package:sender/senders/task_mail_sender.dart'; | |
| void main() { | |
| final mainThreadPort = ReceivePort(); | |
| Isolate.spawn(sideThread, mainThreadPort.sendPort) | |
| .then((sideThread) => mainThread(mainThreadPort, sideThread)); | |
| } | |
| enum Signals { on, off } | |
| Future<void> mainThread( | |
| ReceivePort mainThreadReceivePort, Isolate sideThread) async { | |
| print("Main thread started"); | |
| await for (dynamic data in mainThreadReceivePort) { | |
| if (data['signal'] == Signals.on) { | |
| continue; | |
| } | |
| if (data['signal'] == Signals.off) break; | |
| } | |
| mainThreadReceivePort.close(); | |
| print("Main thread closed"); | |
| } | |
| Future<void> sideThread(SendPort mainThreadSendPort) async { | |
| print("Side thread started"); | |
| Logger.root.onRecord.listen((log) => print(log.message)); | |
| final receivePort = ReceivePort(); | |
| mainThreadSendPort | |
| .send({'signal': Signals.on, 'receivePort': receivePort.sendPort}); | |
| final sender = TaskMailSender(WestCallMailer()); | |
| final reminder = TaskReminder(); | |
| await for (Map remind in reminder.stream) { | |
| final envelopeDetails = { | |
| 'from': '', | |
| 'recipients': [], | |
| 'subject': 'Проверка', | |
| 'text': 'Проверка?', | |
| 'html': '<h1>Проверка</h1><p>Hey!</p>' | |
| }; | |
| sender.send(envelopeDetails); | |
| } | |
| mainThreadSendPort.send({'signal': Signals.off}); | |
| print("Side thread closed"); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment