Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(30)

Unified Diff: webrtc/examples/androidapp/src/org/appspot/apprtc/util/LooperExecutor.java

Issue 2206473003: Remove LooperExecutor and replace it with built-in HandlerThread. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Changes according to magjed's comments. Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/examples/androidapp/src/org/appspot/apprtc/util/LooperExecutor.java
diff --git a/webrtc/examples/androidapp/src/org/appspot/apprtc/util/LooperExecutor.java b/webrtc/examples/androidapp/src/org/appspot/apprtc/util/LooperExecutor.java
deleted file mode 100644
index 4db807a3a6eef9bf7cfff6481d1c1a6b5a5c15f0..0000000000000000000000000000000000000000
--- a/webrtc/examples/androidapp/src/org/appspot/apprtc/util/LooperExecutor.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright 2015 The WebRTC Project Authors. All rights reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-package org.appspot.apprtc.util;
-
-import android.os.Handler;
-import android.os.Looper;
-import android.util.Log;
-
-import java.util.LinkedList;
-import java.util.List;
-import java.util.concurrent.Executor;
-
-/**
- * Looper based executor class. This is needed because WebSocketClient from autobanh requires the
- * thread to have a looper. The class is used in WebSocketRTCClient/WebSocketChannelClient.
- */
-public class LooperExecutor extends Thread implements Executor {
- private static final String TAG = "LooperExecutor";
- // Object used to signal that looper thread has started and Handler instance
- // associated with looper thread has been allocated.
- private final Object looperStartedEvent = new Object();
- private final List<Runnable> scheduledPeriodicRunnables = new LinkedList<Runnable>();
- private Handler handler = null;
- private boolean running = false;
- private long threadId;
-
- @Override
- public void run() {
- Looper.prepare();
- synchronized (looperStartedEvent) {
- Log.d(TAG, "Looper thread started.");
- handler = new Handler();
- threadId = Thread.currentThread().getId();
- looperStartedEvent.notify();
- }
- Looper.loop();
- }
-
- public synchronized void requestStart() {
- if (running) {
- return;
- }
- running = true;
- handler = null;
- start();
- // Wait for Hander allocation.
- synchronized (looperStartedEvent) {
- while (handler == null) {
- try {
- looperStartedEvent.wait();
- } catch (InterruptedException e) {
- Log.e(TAG, "Can not start looper thread");
- running = false;
- }
- }
- }
- }
-
- public synchronized void requestStop() {
- if (!running) {
- return;
- }
- running = false;
- handler.post(new Runnable() {
- @Override
- public void run() {
- handler.getLooper().quit();
- Log.d(TAG, "Looper thread finished.");
- }
- });
- }
-
- // Checks if current thread is a looper thread.
- public boolean checkOnLooperThread() {
- return (Thread.currentThread().getId() == threadId);
- }
-
- public synchronized void scheduleAtFixedRate(final Runnable command, final long periodMillis) {
- if (!running) {
- Log.w(TAG, "Trying to schedule task for non running executor");
- return;
- }
- Runnable runnable = new Runnable() {
- @Override
- public void run() {
- if (running) {
- command.run();
- if (!handler.postDelayed(this, periodMillis)) {
- Log.e(TAG, "Failed to post a delayed runnable in the chain.");
- }
- }
- }
- };
- scheduledPeriodicRunnables.add(runnable);
- if (!handler.postDelayed(runnable, periodMillis)) {
- Log.e(TAG, "Failed to post a delayed runnable.");
- }
- }
-
- public synchronized void cancelScheduledTasks() {
- if (!running) {
- Log.w(TAG, "Trying to cancel schedule tasks for non running executor");
- return;
- }
-
- // Stop scheduled periodic tasks.
- for (Runnable r : scheduledPeriodicRunnables) {
- handler.removeCallbacks(r);
- }
- scheduledPeriodicRunnables.clear();
- }
-
- @Override
- public synchronized void execute(final Runnable runnable) {
- if (!running) {
- Log.w(TAG, "Running looper executor without calling requestStart()");
- return;
- }
- if (Thread.currentThread().getId() == threadId) {
- runnable.run();
- } else {
- handler.post(runnable);
- }
- }
-
- /**
- * Access to the handler for testing purposes.
- */
- Handler getHandler() {
- return handler;
- }
-}

Powered by Google App Engine
This is Rietveld 408576698