| OLD | NEW |
| 1 // Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE.md file. | 3 // BSD-style license that can be found in the LICENSE.md file. |
| 4 | 4 |
| 5 library fletchc.hub.session_manager; | 5 library dartino_compiler.hub.session_manager; |
| 6 | 6 |
| 7 import 'dart:async' show | 7 import 'dart:async' show |
| 8 Future, | 8 Future, |
| 9 Timer; | 9 Timer; |
| 10 | 10 |
| 11 import 'client_commands.dart' show | 11 import 'client_commands.dart' show |
| 12 CommandSender; | 12 CommandSender; |
| 13 | 13 |
| 14 import 'hub_main.dart' show | 14 import 'hub_main.dart' show |
| 15 WorkerConnection; | 15 WorkerConnection; |
| 16 | 16 |
| 17 export 'hub_main.dart' show | 17 export 'hub_main.dart' show |
| 18 WorkerConnection; | 18 WorkerConnection; |
| 19 | 19 |
| 20 import '../worker/developer.dart' show | 20 import '../worker/developer.dart' show |
| 21 Settings; | 21 Settings; |
| 22 | 22 |
| 23 import '../diagnostic.dart' show | 23 import '../diagnostic.dart' show |
| 24 DiagnosticKind, | 24 DiagnosticKind, |
| 25 DiagnosticParameter, | 25 DiagnosticParameter, |
| 26 InputError, | 26 InputError, |
| 27 throwFatalError, | 27 throwFatalError, |
| 28 throwInternalError; | 28 throwInternalError; |
| 29 | 29 |
| 30 import '../../fletch_system.dart' show | 30 import '../../dartino_system.dart' show |
| 31 FletchDelta; | 31 DartinoDelta; |
| 32 | 32 |
| 33 export '../../fletch_system.dart' show | 33 export '../../dartino_system.dart' show |
| 34 FletchDelta; | 34 DartinoDelta; |
| 35 | 35 |
| 36 import '../../vm_session.dart' show | 36 import '../../vm_session.dart' show |
| 37 Session; | 37 Session; |
| 38 | 38 |
| 39 export '../../vm_session.dart' show | 39 export '../../vm_session.dart' show |
| 40 Session; | 40 Session; |
| 41 | 41 |
| 42 import '../../fletch_compiler.dart' show | 42 import '../../dartino_compiler.dart' show |
| 43 FletchCompiler; | 43 DartinoCompiler; |
| 44 | 44 |
| 45 export '../../fletch_compiler.dart' show | 45 export '../../dartino_compiler.dart' show |
| 46 FletchCompiler; | 46 DartinoCompiler; |
| 47 | 47 |
| 48 import '../../incremental/fletchc_incremental.dart' show | 48 import '../../incremental/dartino_compiler_incremental.dart' show |
| 49 IncrementalCompiler; | 49 IncrementalCompiler; |
| 50 | 50 |
| 51 export '../../incremental/fletchc_incremental.dart' show | 51 export '../../incremental/dartino_compiler_incremental.dart' show |
| 52 IncrementalCompiler; | 52 IncrementalCompiler; |
| 53 | 53 |
| 54 import '../../fletch_vm.dart' show | 54 import '../../dartino_vm.dart' show |
| 55 FletchVm; | 55 DartinoVm; |
| 56 | 56 |
| 57 export '../../fletch_vm.dart' show | 57 export '../../dartino_vm.dart' show |
| 58 FletchVm; | 58 DartinoVm; |
| 59 | 59 |
| 60 // TODO(karlklose): we need a better API for session management. | 60 // TODO(karlklose): we need a better API for session management. |
| 61 class Sessions { | 61 class Sessions { |
| 62 static Iterable<String> get names { | 62 static Iterable<String> get names { |
| 63 return internalSessions.keys; | 63 return internalSessions.keys; |
| 64 } | 64 } |
| 65 } | 65 } |
| 66 | 66 |
| 67 final Map<String, UserSession> internalSessions = <String, UserSession>{}; | 67 final Map<String, UserSession> internalSessions = <String, UserSession>{}; |
| 68 | 68 |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 163 | 163 |
| 164 /// The state stored in a worker isolate of a [UserSession]. | 164 /// The state stored in a worker isolate of a [UserSession]. |
| 165 /// TODO(wibling): This should be moved into a worker specific file. | 165 /// TODO(wibling): This should be moved into a worker specific file. |
| 166 class SessionState { | 166 class SessionState { |
| 167 final String name; | 167 final String name; |
| 168 | 168 |
| 169 final BufferingOutputSink stdoutSink = new BufferingOutputSink(); | 169 final BufferingOutputSink stdoutSink = new BufferingOutputSink(); |
| 170 | 170 |
| 171 final BufferingOutputSink stderrSink = new BufferingOutputSink(); | 171 final BufferingOutputSink stderrSink = new BufferingOutputSink(); |
| 172 | 172 |
| 173 final FletchCompiler compilerHelper; | 173 final DartinoCompiler compilerHelper; |
| 174 | 174 |
| 175 final IncrementalCompiler compiler; | 175 final IncrementalCompiler compiler; |
| 176 | 176 |
| 177 final List<FletchDelta> compilationResults = <FletchDelta>[]; | 177 final List<DartinoDelta> compilationResults = <DartinoDelta>[]; |
| 178 | 178 |
| 179 final List<String> loggedMessages = <String>[]; | 179 final List<String> loggedMessages = <String>[]; |
| 180 | 180 |
| 181 Uri script; | 181 Uri script; |
| 182 | 182 |
| 183 Session session; | 183 Session session; |
| 184 | 184 |
| 185 FletchVm fletchVm; | 185 DartinoVm dartinoVm; |
| 186 | 186 |
| 187 int fletchAgentVmId; | 187 int dartinoAgentVmId; |
| 188 | 188 |
| 189 Settings settings; | 189 Settings settings; |
| 190 | 190 |
| 191 bool explicitAttach = false; | 191 bool explicitAttach = false; |
| 192 | 192 |
| 193 SessionState(this.name, this.compilerHelper, this.compiler, this.settings); | 193 SessionState(this.name, this.compilerHelper, this.compiler, this.settings); |
| 194 | 194 |
| 195 bool get hasRemoteVm => fletchAgentVmId != null; | 195 bool get hasRemoteVm => dartinoAgentVmId != null; |
| 196 | 196 |
| 197 bool get colorsDisabled => session == null ? false : session.colorsDisabled; | 197 bool get colorsDisabled => session == null ? false : session.colorsDisabled; |
| 198 | 198 |
| 199 void addCompilationResult(FletchDelta delta) { | 199 void addCompilationResult(DartinoDelta delta) { |
| 200 compilationResults.add(delta); | 200 compilationResults.add(delta); |
| 201 } | 201 } |
| 202 | 202 |
| 203 void resetCompiler() { | 203 void resetCompiler() { |
| 204 compilationResults.clear(); | 204 compilationResults.clear(); |
| 205 } | 205 } |
| 206 | 206 |
| 207 Future terminateSession() async { | 207 Future terminateSession() async { |
| 208 if (session != null) { | 208 if (session != null) { |
| 209 if (!session.terminated) { | 209 if (!session.terminated) { |
| 210 bool done = false; | 210 bool done = false; |
| 211 Timer timer = new Timer(const Duration(seconds: 5), () { | 211 Timer timer = new Timer(const Duration(seconds: 5), () { |
| 212 if (!done) { | 212 if (!done) { |
| 213 print("Timed out waiting for Fletch VM to shutdown; killing " | 213 print("Timed out waiting for Dartino VM to shutdown; killing " |
| 214 "session"); | 214 "session"); |
| 215 session.kill(); | 215 session.kill(); |
| 216 } | 216 } |
| 217 }); | 217 }); |
| 218 await session.terminateSession(); | 218 await session.terminateSession(); |
| 219 done = true; | 219 done = true; |
| 220 timer.cancel(); | 220 timer.cancel(); |
| 221 } | 221 } |
| 222 explicitAttach = false; | 222 explicitAttach = false; |
| 223 } | 223 } |
| (...skipping 23 matching lines...) Expand all Loading... |
| 247 /// otherwise API that takes a [SessionState] object doesn't work correctly | 247 /// otherwise API that takes a [SessionState] object doesn't work correctly |
| 248 /// and testing becomes hard. | 248 /// and testing becomes hard. |
| 249 /// | 249 /// |
| 250 /// TODO(ahe): Perhaps we can remove this getter, and [internalCurrent] by | 250 /// TODO(ahe): Perhaps we can remove this getter, and [internalCurrent] by |
| 251 /// storing this object in ../worker/worker_main.dart. For example, | 251 /// storing this object in ../worker/worker_main.dart. For example, |
| 252 /// [workerMain] holds a reference to an instance of [SessionState] and | 252 /// [workerMain] holds a reference to an instance of [SessionState] and |
| 253 /// passes this reference to [WorkerSideTask] which can in turn pass it on to | 253 /// passes this reference to [WorkerSideTask] which can in turn pass it on to |
| 254 /// the verb/task in [WorkerSideTask.performTask]. | 254 /// the verb/task in [WorkerSideTask.performTask]. |
| 255 static SessionState get current => internalCurrent; | 255 static SessionState get current => internalCurrent; |
| 256 } | 256 } |
| OLD | NEW |