| Index: net/dns/serial_worker.h
|
| diff --git a/net/dns/serial_worker.h b/net/dns/serial_worker.h
|
| deleted file mode 100644
|
| index 59a4d3f189ca1c8e2f2bb0b7ea6356aa36a21f32..0000000000000000000000000000000000000000
|
| --- a/net/dns/serial_worker.h
|
| +++ /dev/null
|
| @@ -1,96 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#ifndef NET_DNS_SERIAL_WORKER_H_
|
| -#define NET_DNS_SERIAL_WORKER_H_
|
| -
|
| -#include <string>
|
| -
|
| -#include "base/compiler_specific.h"
|
| -#include "base/memory/ref_counted.h"
|
| -#include "net/base/net_export.h"
|
| -
|
| -// Forward declaration
|
| -namespace base {
|
| -class MessageLoopProxy;
|
| -}
|
| -
|
| -namespace net {
|
| -
|
| -// SerialWorker executes a job on WorkerPool serially -- **once at a time**.
|
| -// On |WorkNow|, a call to |DoWork| is scheduled on the WorkerPool. Once it
|
| -// completes, |OnWorkFinished| is called on the origin thread.
|
| -// If |WorkNow| is called (1 or more times) while |DoWork| is already under way,
|
| -// |DoWork| will be called once: after current |DoWork| completes, before a
|
| -// call to |OnWorkFinished|.
|
| -//
|
| -// This behavior is designed for updating a result after some trigger, for
|
| -// example reading a file once FilePathWatcher indicates it changed.
|
| -//
|
| -// Derived classes should store results of work done in |DoWork| in dedicated
|
| -// fields and read them in |OnWorkFinished| which is executed on the origin
|
| -// thread. This avoids the need to template this class.
|
| -//
|
| -// This implementation avoids locking by using the |state_| member to ensure
|
| -// that |DoWork| and |OnWorkFinished| cannot execute in parallel.
|
| -//
|
| -// TODO(szym): update to WorkerPool::PostTaskAndReply once available.
|
| -class NET_EXPORT_PRIVATE SerialWorker
|
| - : NON_EXPORTED_BASE(public base::RefCountedThreadSafe<SerialWorker>) {
|
| - public:
|
| - SerialWorker();
|
| -
|
| - // Unless already scheduled, post |DoWork| to WorkerPool.
|
| - // Made virtual to allow mocking.
|
| - virtual void WorkNow();
|
| -
|
| - // Stop scheduling jobs.
|
| - void Cancel();
|
| -
|
| - bool IsCancelled() const { return state_ == CANCELLED; }
|
| -
|
| - protected:
|
| - friend class base::RefCountedThreadSafe<SerialWorker>;
|
| - // protected to allow sub-classing, but prevent deleting
|
| - virtual ~SerialWorker();
|
| -
|
| - // Executed on WorkerPool, at most once at a time.
|
| - virtual void DoWork() = 0;
|
| -
|
| - // Executed on origin thread after |DoRead| completes.
|
| - virtual void OnWorkFinished() = 0;
|
| -
|
| - base::MessageLoopProxy* loop() { return message_loop_.get(); }
|
| -
|
| - private:
|
| - enum State {
|
| - CANCELLED = -1,
|
| - IDLE = 0,
|
| - WORKING, // |DoWorkJob| posted on WorkerPool, until |OnWorkJobFinished|
|
| - PENDING, // |WorkNow| while WORKING, must re-do work
|
| - WAITING, // WorkerPool is busy, |RetryWork| is posted
|
| - };
|
| -
|
| - // Called on the worker thread, executes |DoWork| and notifies the origin
|
| - // thread.
|
| - void DoWorkJob();
|
| -
|
| - // Called on the the origin thread after |DoWork| completes.
|
| - void OnWorkJobFinished();
|
| -
|
| - // Posted to message loop in case WorkerPool is busy. (state == WAITING)
|
| - void RetryWork();
|
| -
|
| - // Message loop for the thread of origin.
|
| - scoped_refptr<base::MessageLoopProxy> message_loop_;
|
| -
|
| - State state_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(SerialWorker);
|
| -};
|
| -
|
| -} // namespace net
|
| -
|
| -#endif // NET_DNS_SERIAL_WORKER_H_
|
| -
|
|
|