[webkit-reviews] review denied: [Bug 43135] Decouple FileThread from FileStream to support generic file-related async tasks : [Attachment 62860] Patch
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Wed Jul 28 15:01:15 PDT 2010
Jian Li <jianli at chromium.org> has denied Kinuko Yasuda <kinuko at chromium.org>'s
request for review:
Bug 43135: Decouple FileThread from FileStream to support generic file-related
async tasks
https://bugs.webkit.org/show_bug.cgi?id=43135
Attachment 62860: Patch
https://bugs.webkit.org/attachment.cgi?id=62860&action=review
------- Additional Comments from Jian Li <jianli at chromium.org>
It is a good idea to support generic file related async tasks. However, I am
thinking if it is possible to make current FileThreadTask support calling any
class methods asynchronously. How about something like the following:
// FileThread.h
...
class Task : public Noncopyable {
public:
virtual ~Task() { }
virtual void performTask() = 0;
void* instance() const { return m_instance; }
protected:
Task(void* instance) : m_instance(instance) { }
void* m_instance;
};
void postTask(PassOwnPtr<Task> task);
void unscheduleTasks(const void* instance);
// FileThreadTask.h
...
template<typename R, typename T>
class FileThreadTask0 : public FileThread::Task {
public:
typedef R (T::*Method)();
typedef FileThreadTask0<R, T> FileThreadTask;
static PassOwnPtr<FileThreadTask> create(T* instance, Method method)
{
return new FileThreadTask(instance, method);
}
private:
FileThreadTask0(T* instance, Method method)
: FileThread::Task(instance)
, m_method(method)
{
}
virtual void performTask()
{
(*reinterpret_cast<T*>(instance()).*m_method)();
}
private:
Method m_method;
};
...
template<typename R, typename T>
PassOwnPtr<FileThread::Task> createFileThreadTask(
T* const callee,
R (T::*method)())
{
return FileThreadTask0<R, T>::create(
callee,
method);
}
More information about the webkit-reviews
mailing list