Bug 1046109: Add |SocketIODeleteInstanceRunnable|, r=kyle

|SocketIODeleteInstanceRunnable| deletes a Socket I/O object on the
main thread. This is required to serialize the close operation of
Socket consumers.
This commit is contained in:
Thomas Zimmermann
2014-07-31 13:55:29 +02:00
parent 177d1e74f6
commit 31ce463972
2 changed files with 23 additions and 20 deletions

View File

@@ -182,25 +182,6 @@ private:
CancelableTask* mDelayedConnectTask;
};
template<class T>
class DeleteInstanceRunnable : public nsRunnable
{
public:
DeleteInstanceRunnable(T* aInstance)
: mInstance(aInstance)
{ }
NS_IMETHOD Run()
{
delete mInstance;
return NS_OK;
}
private:
T* mInstance;
};
class UnixSocketImplTask : public CancelableTask
{
public:
@@ -328,7 +309,8 @@ public:
// that no more tasks reference it.
impl->ShutdownOnIOThread();
nsRefPtr<nsIRunnable> r(new DeleteInstanceRunnable<UnixSocketImpl>(impl));
nsRefPtr<nsIRunnable> r =
new SocketIODeleteInstanceRunnable<UnixSocketImpl>(impl);
nsresult rv = NS_DispatchToMainThread(r);
NS_ENSURE_SUCCESS_VOID(rv);
}