| Index: chrome/browser/renderer_host/file_system_accessor.h
|
| ===================================================================
|
| --- chrome/browser/renderer_host/file_system_accessor.h (revision 0)
|
| +++ chrome/browser/renderer_host/file_system_accessor.h (revision 0)
|
| @@ -0,0 +1,74 @@
|
| +// Copyright (c) 2006-2009 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.
|
| +//
|
| +// FileSystemAccessor provides functions so consumers can do file access
|
| +// asynchronously. It would PostTask to FILE thread to access file info, then on
|
| +// completion PostTask back to the caller thread and pass the result back.
|
| +// Here is an example on how to use it to get file size:
|
| +// 1. Define a callback function so FileSystemAccessor could run it after the
|
| +// task has been completed:
|
| +// void Foo::GetFileSizeCallback(int64 result, void* param) {
|
| +// }
|
| +// 2. Call static function FileSystemAccessor::RequestFileSize, provide file
|
| +// path, param (any object you want to pass back to the callback function)
|
| +// and callback:
|
| +// FileSystemAccessor::RequestFileSize(
|
| +// path,
|
| +// param,
|
| +// NewCallback(this, &Foo::GetFileSizeCallback));
|
| +// 3. FileSystemAceessor would PostTask to FILE thread to get file size, then
|
| +// on completion it would PostTask back to the current thread and run
|
| +// Foo::GetFileSizeCallback.
|
| +//
|
| +
|
| +#ifndef CHROME_BROWSER_RENDERER_HOST_FILE_SYSTEM_ACCESSOR_H_
|
| +#define CHROME_BROWSER_RENDERER_HOST_FILE_SYSTEM_ACCESSOR_H_
|
| +
|
| +#include "base/file_path.h"
|
| +#include "base/scoped_ptr.h"
|
| +#include "base/ref_counted.h"
|
| +#include "base/task.h"
|
| +
|
| +class MessageLoop;
|
| +
|
| +class FileSystemAccessor
|
| + : public base::RefCountedThreadSafe<FileSystemAccessor> {
|
| + public:
|
| + typedef Callback2<int64, void*>::Type FileSizeCallback;
|
| +
|
| + virtual ~FileSystemAccessor();
|
| +
|
| + // Request to get file size.
|
| + //
|
| + // param is an object that is owned by the caller and needs to pass back to
|
| + // the caller by FileSystemAccessor through the callback function.
|
| + // It can be set to NULL if no object needs to pass back.
|
| + //
|
| + // FileSizeCallback function is defined as:
|
| + // void f(int64 result, void* param);
|
| + // Variable result has the file size. If the file does not exist or there is
|
| + // error accessing the file, result is set to -1. If the given path is a
|
| + // directory, result is set to 0.
|
| + static void RequestFileSize(const FilePath& path,
|
| + void* param,
|
| + FileSizeCallback* callback);
|
| +
|
| + private:
|
| + FileSystemAccessor(void* param, FileSizeCallback* callback);
|
| +
|
| + // Get file size on the worker thread and pass result back to the caller
|
| + // thread.
|
| + void GetFileSize(const FilePath& path);
|
| +
|
| + // Getting file size completed, callback to reply message.
|
| + void GetFileSizeCompleted(int64 result);
|
| +
|
| + MessageLoop* caller_loop_;
|
| + void* param_;
|
| + scoped_ptr<FileSizeCallback> callback_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(FileSystemAccessor);
|
| +};
|
| +
|
| +#endif // CHROME_BROWSER_RENDERER_HOST_FILE_SYSTEM_ACCESSOR_H_
|
|
|
| Property changes on: chrome\browser\renderer_host\file_system_accessor.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|