From e3e1a1da697bcebd6a373a8c1255f3a1965394a8 Mon Sep 17 00:00:00 2001 From: Tsvetan Raikov Date: Mon, 17 Oct 2016 11:12:28 +0300 Subject: [PATCH] Added fibers in log fiters to enable futures --- mobile/android/logcat-helper.ts | 5 ++++- mobile/ios/device/ios-core.ts | 5 ++++- mobile/ios/device/ios-proxy-services.ts | 5 ++++- mobile/ios/simulator/ios-simulator-log-provider.ts | 7 ++++++- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/mobile/android/logcat-helper.ts b/mobile/android/logcat-helper.ts index af62f895..6e458067 100644 --- a/mobile/android/logcat-helper.ts +++ b/mobile/android/logcat-helper.ts @@ -1,5 +1,6 @@ import byline = require("byline"); import {DeviceAndroidDebugBridge} from "./device-android-debug-bridge"; +import * as fiberBootstrap from "../../fiber-bootstrap"; export class LogcatHelper implements Mobile.ILogcatHelper { private mapDeviceToLoggingStarted: IDictionary; @@ -40,7 +41,9 @@ export class LogcatHelper implements Mobile.ILogcatHelper { lineStream.on('data', (line: NodeBuffer) => { let lineText = line.toString(); - this.$deviceLogProvider.logData(lineText, this.$devicePlatformsConstants.Android, deviceIdentifier); + fiberBootstrap.run(() => + this.$deviceLogProvider.logData(lineText, this.$devicePlatformsConstants.Android, deviceIdentifier) + ); }); this.$processService.attachToProcessExitSignals(this, adbLogcat.kill); diff --git a/mobile/ios/device/ios-core.ts b/mobile/ios/device/ios-core.ts index 67ab1cac..f1b42263 100644 --- a/mobile/ios/device/ios-core.ts +++ b/mobile/ios/device/ios-core.ts @@ -14,6 +14,7 @@ import * as string_decoder from "string_decoder"; import * as stream from "stream"; import * as assert from "assert"; import {EOL} from "os"; +import * as fiberBootstrap from "../../../fiber-bootstrap"; export class CoreTypes { public static pointerSize = ref.types.size_t.size; @@ -1117,7 +1118,9 @@ class GDBStandardOutputAdapter extends stream.Transform { } if (this.$deviceLogProvider) { - this.$deviceLogProvider.logData(result, this.$devicePlatformsConstants.iOS, this.deviceIdentifier); + fiberBootstrap.run(() => + this.$deviceLogProvider.logData(result, this.$devicePlatformsConstants.iOS, this.deviceIdentifier) + ); } done(null, result); diff --git a/mobile/ios/device/ios-proxy-services.ts b/mobile/ios/device/ios-proxy-services.ts index 0992c12e..e8eab328 100644 --- a/mobile/ios/device/ios-proxy-services.ts +++ b/mobile/ios/device/ios-proxy-services.ts @@ -4,6 +4,7 @@ import * as iOSCore from "./ios-core"; import * as helpers from "../../../helpers"; import * as plistlib from "plistlib"; import Future = require("fibers/future"); +import * as fiberBootstrap from "../../../fiber-bootstrap"; export class MobileServices { public static APPLE_FILE_CONNECTION: string = "com.apple.afc"; @@ -497,7 +498,9 @@ export class IOSSyslog { public read(): void { let printData = (data: string) => { - this.$deviceLogProvider.logData(data, this.$devicePlatformsConstants.iOS, this.device.deviceInfo.identifier); + fiberBootstrap.run(() => + this.$deviceLogProvider.logData(data, this.$devicePlatformsConstants.iOS, this.device.deviceInfo.identifier) + ); }; this.plistService.readSystemLog(printData); } diff --git a/mobile/ios/simulator/ios-simulator-log-provider.ts b/mobile/ios/simulator/ios-simulator-log-provider.ts index 4b857c79..422a31f9 100644 --- a/mobile/ios/simulator/ios-simulator-log-provider.ts +++ b/mobile/ios/simulator/ios-simulator-log-provider.ts @@ -1,4 +1,5 @@ import { ChildProcess } from "child_process"; +import * as fiberBootstrap from "../../../fiber-bootstrap"; export class IOSSimulatorLogProvider implements Mobile.IiOSSimulatorLogProvider { private isStarted: boolean; @@ -12,7 +13,11 @@ export class IOSSimulatorLogProvider implements Mobile.IiOSSimulatorLogProvider if (!this.isStarted) { let deviceLogChildProcess: ChildProcess = this.$iOSSimResolver.iOSSim.getDeviceLogProcess(deviceIdentifier); - let action = (data: NodeBuffer | string) => this.$deviceLogProvider.logData(data.toString(), this.$devicePlatformsConstants.iOS, deviceIdentifier); + let action = (data: NodeBuffer | string) => { + fiberBootstrap.run(() => + this.$deviceLogProvider.logData(data.toString(), this.$devicePlatformsConstants.iOS, deviceIdentifier) + ); + }; if (deviceLogChildProcess.stdout) { deviceLogChildProcess.stdout.on("data", action);