Index: trunk/Source/modules/websockets/ThreadableWebSocketChannelClientWrapper.h |
=================================================================== |
--- trunk/Source/modules/websockets/ThreadableWebSocketChannelClientWrapper.h (revision 176309) |
+++ trunk/Source/modules/websockets/ThreadableWebSocketChannelClientWrapper.h (working copy) |
@@ -31,18 +31,24 @@ |
#ifndef ThreadableWebSocketChannelClientWrapper_h |
#define ThreadableWebSocketChannelClientWrapper_h |
+#include "core/dom/ExecutionContextTask.h" |
+#include "modules/websockets/WebSocketChannel.h" |
#include "modules/websockets/WebSocketChannelClient.h" |
-#include "platform/heap/Handle.h" |
#include "wtf/Forward.h" |
+#include "wtf/OwnPtr.h" |
#include "wtf/PassOwnPtr.h" |
#include "wtf/ThreadSafeRefCounted.h" |
#include "wtf/Vector.h" |
namespace WebCore { |
-class ThreadableWebSocketChannelClientWrapper : public ThreadSafeRefCountedWillBeGarbageCollected<ThreadableWebSocketChannelClientWrapper> { |
+class ExecutionContext; |
+class WebSocketChannelClient; |
+ |
+class ThreadableWebSocketChannelClientWrapper : public ThreadSafeRefCountedWillBeGarbageCollectedFinalized<ThreadableWebSocketChannelClientWrapper> { |
public: |
static PassRefPtrWillBeRawPtr<ThreadableWebSocketChannelClientWrapper> create(WebSocketChannelClient*); |
+ ~ThreadableWebSocketChannelClientWrapper(); |
void clearClient(); |
@@ -54,12 +60,27 @@ |
void didClose(WebSocketChannelClient::ClosingHandshakeCompletionStatus, unsigned short code, const String& reason); |
void didReceiveMessageError(); |
+ void suspend(); |
+ void resume(); |
+ |
void trace(Visitor*) { } |
private: |
ThreadableWebSocketChannelClientWrapper(WebSocketChannelClient*); |
+ void processPendingTasks(); |
+ |
+ static void didConnectCallback(ExecutionContext*, PassRefPtrWillBeRawPtr<ThreadableWebSocketChannelClientWrapper>, const String& subprotocol, const String& extensions); |
+ static void didReceiveMessageCallback(ExecutionContext*, PassRefPtrWillBeRawPtr<ThreadableWebSocketChannelClientWrapper>, const String& message); |
+ static void didReceiveBinaryDataCallback(ExecutionContext*, PassRefPtrWillBeRawPtr<ThreadableWebSocketChannelClientWrapper>, PassOwnPtr<Vector<char> >); |
+ static void didConsumeBufferedAmountCallback(ExecutionContext*, PassRefPtrWillBeRawPtr<ThreadableWebSocketChannelClientWrapper>, unsigned long); |
+ static void didStartClosingHandshakeCallback(ExecutionContext*, PassRefPtrWillBeRawPtr<ThreadableWebSocketChannelClientWrapper>); |
+ static void didCloseCallback(ExecutionContext*, PassRefPtrWillBeRawPtr<ThreadableWebSocketChannelClientWrapper>, WebSocketChannelClient::ClosingHandshakeCompletionStatus, unsigned short code, const String& reason); |
+ static void didReceiveMessageErrorCallback(ExecutionContext*, PassRefPtrWillBeRawPtr<ThreadableWebSocketChannelClientWrapper>); |
+ |
WebSocketChannelClient* m_client; |
+ bool m_suspended; |
+ Vector<OwnPtr<ExecutionContextTask> > m_pendingTasks; |
}; |
} // namespace WebCore |