private static IAndroidLogcatTaskResult QueryDevicesAsync(IAndroidLogcatTaskInput input) { var adb = ((AndroidLogcatRetrieveDeviceIdsInput)input).adb; if (adb == null) throw new NullReferenceException("ADB interface has to be valid"); var result = new AndroidLogcatRetrieveDeviceIdsResult(); result.notifyListeners = ((AndroidLogcatRetrieveDeviceIdsInput)input).notifyListeners; AndroidLogcatInternalLog.Log("{0} devices", adb.GetADBPath()); try { var adbOutput = adb.Run(new[] { "devices" }, "Unable to list connected devices. "); foreach (var line in adbOutput.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).Select(line => line.Trim())) { AndroidLogcatInternalLog.Log(" " + line); AndroidLogcatRetrieveDeviceIdsResult.DeviceInfo info; if (ParseDeviceInfo(line, out info.id, out info.state)) result.deviceInfo.Add(info); } } catch (Exception ex) { AndroidLogcatInternalLog.Log(ex.Message); result.deviceInfo = new List<AndroidLogcatRetrieveDeviceIdsResult.DeviceInfo>(); } return result; }
private static IAndroidLogcatTaskResult QueryMemoryAsync(IAndroidLogcatTaskInput input) { var workInput = ((AndroidLogcatQueryMemoryInput)input); var adb = workInput.adb; if (adb == null) { throw new NullReferenceException("ADB interface has to be valid"); } var cmd = "-s " + workInput.deviceId + " shell dumpsys meminfo " + workInput.packageName; AndroidLogcatInternalLog.Log("{0} {1}", adb.GetADBPath(), cmd); string outputMsg = string.Empty; try { outputMsg = adb.Run(new[] { cmd }, "Failed to query memory for " + workInput.packageName); } catch (Exception ex) { AndroidLogcatInternalLog.Log("Failed to query memory: \n" + ex.Message); } var result = new AndroidLogcatQueryMemoryResult(); result.deviceId = workInput.deviceId; result.packageName = workInput.packageName; result.packageProcessId = workInput.packageProcessId; result.contents = outputMsg; //AndroidLogcatInternalLog.Log(outputMsg); return(result); }
internal static IAndroidLogcatTaskResult Execute(IAndroidLogcatTaskInput input) { var adb = ((AndroidLogcatRetrieveDeviceIdsInput)input).adb; if (adb == null) { throw new NullReferenceException("ADB interface has to be valid"); } var result = new AndroidLogcatRetrieveDeviceIdsResult(); AndroidLogcatInternalLog.Log("{0} devices", adb.GetADBPath()); var adbOutput = adb.Run(new[] { "devices" }, "Unable to list connected devices. "); foreach (var line in adbOutput.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).Select(line => line.Trim())) { AndroidLogcatInternalLog.Log(" " + line); if (line.EndsWith("device")) { var deviceId = line.Split(new[] { '\t', ' ' })[0]; result.deviceIds.Add(deviceId); } } return(result); }
private IAndroidLogcatTaskResult QueryDevicesAsync(IAndroidLogcatTaskInput input) { var result = new AndroidLogcatRetrieveDeviceIdsResult(); result.notifyListeners = ((AndroidLogcatRetrieveDeviceIdsInput)input).notifyListeners; try { var adbOutput = m_QueuedInfos.Count > 0 ? m_QueuedInfos[0] : string.Empty; if (m_QueuedInfos.Count > 0) { m_QueuedInfos.RemoveAt(0); } foreach (var line in adbOutput.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).Select(line => line.Trim())) { AndroidLogcatRetrieveDeviceIdsResult.DeviceInfo info; if (ParseDeviceInfo(line, out info.id, out info.state)) { result.deviceInfo.Add(info); } } } catch (Exception) { result.deviceInfo = new List <AndroidLogcatRetrieveDeviceIdsResult.DeviceInfo>(); } return(result); }
internal void Schedule(IAndroidLogcatTaskInput taskData, Func <IAndroidLogcatTaskInput, IAndroidLogcatTaskResult> asyncAction, Action <IAndroidLogcatTaskResult> integrateAction, bool synchronous) { if (!m_Running) { AndroidLogcatInternalLog.Log("Ignore schedule action, because dispatcher is not running."); return; } if (synchronous) { integrateAction(asyncAction.Invoke(taskData)); return; } lock (m_AsyncTaskQueue) { var task = new AsyncTask() { taskData = taskData, asyncAction = asyncAction, integrateAction = integrateAction }; m_AsyncTaskQueue.Enqueue(task); if (!m_AutoResetEvent.Set()) { throw new Exception("Failed to signal auto reset event in dispatcher."); } } }
IAndroidLogcatTaskResult PerformAsycnTask(IAndroidLogcatTaskInput input) { var data = (TaskInputData)input; return(new TaskResultData() { mainThreadId = data.mainThreadId, workerThreadId = Thread.CurrentThread.ManagedThreadId }); }
private static IAndroidLogcatTaskResult ExecuteScreenCapture(IAndroidLogcatTaskInput input) { var i = (AndroidLogcatCaptureScreenCaptureInput)input; string error; var path = AndroidLogcatUtilities.CaptureScreen(i.adb, i.deviceId, out error); return(new AndroidLogcatCaptureScreenCaptureResult() { imagePath = path, error = error }); }
internal static IAndroidLogcatTaskResult Execute(IAndroidLogcatTaskInput input) { var result = new AndroidLogcatConnectToDeviceResult(); try { var workInput = ((AndroidLogcatConnectToDeviceInput)input); var adb = workInput.adb; if (adb == null) { throw new NullReferenceException("ADB interface has to be valid"); } var ip = workInput.ip; var port = workInput.port; string cmd; if (workInput.setListeningPort) { cmd = "-s " + workInput.deviceId + " tcpip " + port; AndroidLogcatInternalLog.Log("{0} {1}", adb.GetADBPath(), cmd); var resultTCPIP = adb.Run(new[] { cmd }, "Failed to adb tcpip " + port); AndroidLogcatInternalLog.Log(resultTCPIP); var wait = 3000; AndroidLogcatInternalLog.Log("Waiting {0} ms until ADB returns", wait); System.Threading.Thread.Sleep(wait); } cmd = "connect " + ip + ":" + port; AndroidLogcatInternalLog.Log("{0} {1}", adb.GetADBPath(), cmd); var errorMsg = "Unable to connect to "; var outputMsg = adb.Run(new[] { cmd }, errorMsg + ip + ":" + port); result.message = outputMsg; result.success = true; if (outputMsg.StartsWith(errorMsg) || outputMsg.StartsWith("failed to connect")) { AndroidLogcatInternalLog.Log(outputMsg); result.success = false; } } catch (Exception ex) { AndroidLogcatInternalLog.Log(ex.Message); result.success = false; result.message = ex.Message; } return(result); }
IAndroidLogcatTaskResult PerformAsycnTaskThrowException(IAndroidLogcatTaskInput input) { throw new Exception("Purposely throwing"); }