| Index: Source/modules/websockets/MainThreadWebSocketChannel.h
|
| diff --git a/Source/modules/websockets/MainThreadWebSocketChannel.h b/Source/modules/websockets/MainThreadWebSocketChannel.h
|
| index 2e4f68228cf46f61c29daad255081be921d6dcfd..729792e3f46a65d7e99a6120896e45385398863d 100644
|
| --- a/Source/modules/websockets/MainThreadWebSocketChannel.h
|
| +++ b/Source/modules/websockets/MainThreadWebSocketChannel.h
|
| @@ -75,7 +75,6 @@ public:
|
| virtual WebSocketChannel::SendResult send(const ArrayBuffer&, unsigned byteOffset, unsigned byteLength) OVERRIDE;
|
| virtual WebSocketChannel::SendResult send(PassRefPtr<BlobDataHandle>) OVERRIDE;
|
| virtual WebSocketChannel::SendResult send(PassOwnPtr<Vector<char> > data) OVERRIDE;
|
| - virtual unsigned long bufferedAmount() const OVERRIDE;
|
| // Start closing handshake. Use the CloseEventCodeNotSpecified for the code
|
| // argument to omit payload.
|
| virtual void close(int code, const String& reason) OVERRIDE;
|
| @@ -89,7 +88,7 @@ public:
|
| virtual void didOpenSocketStream(SocketStreamHandle*) OVERRIDE;
|
| virtual void didCloseSocketStream(SocketStreamHandle*) OVERRIDE;
|
| virtual void didReceiveSocketStreamData(SocketStreamHandle*, const char*, int) OVERRIDE;
|
| - virtual void didUpdateBufferedAmount(SocketStreamHandle*, size_t bufferedAmount) OVERRIDE;
|
| + virtual void didConsumeBufferedAmount(SocketStreamHandle*, size_t consumed) OVERRIDE;
|
| virtual void didFailSocketStream(SocketStreamHandle*, const SocketStreamError&) OVERRIDE;
|
|
|
| // FileReaderLoaderClient functions.
|
| @@ -101,6 +100,25 @@ public:
|
| private:
|
| MainThreadWebSocketChannel(Document*, WebSocketChannelClient*, const String&, unsigned);
|
|
|
| + class FramingOverhead {
|
| + public:
|
| + FramingOverhead(WebSocketFrame::OpCode opcode, size_t frameDataSize, size_t originalPayloadLength)
|
| + : m_opcode(opcode)
|
| + , m_frameDataSize(frameDataSize)
|
| + , m_originalPayloadLength(originalPayloadLength)
|
| + {
|
| + }
|
| +
|
| + WebSocketFrame::OpCode opcode() const { return m_opcode; }
|
| + size_t frameDataSize() const { return m_frameDataSize; }
|
| + size_t originalPayloadLength() const { return m_originalPayloadLength; }
|
| +
|
| + private:
|
| + WebSocketFrame::OpCode m_opcode;
|
| + size_t m_frameDataSize;
|
| + size_t m_originalPayloadLength;
|
| + };
|
| +
|
| void clearDocument();
|
|
|
| void disconnectHandle();
|
| @@ -196,7 +214,6 @@ private:
|
| Timer<MainThreadWebSocketChannel> m_closingTimer;
|
| ChannelState m_state;
|
| bool m_shouldDiscardReceivedData;
|
| - unsigned long m_unhandledBufferedAmount;
|
|
|
| unsigned long m_identifier; // m_identifier == 0 means that we could not obtain a valid identifier.
|
|
|
| @@ -209,6 +226,10 @@ private:
|
|
|
| Deque<OwnPtr<QueuedFrame> > m_outgoingFrameQueue;
|
| OutgoingFrameQueueStatus m_outgoingFrameQueueStatus;
|
| + Deque<FramingOverhead> m_framingOverheadQueue;
|
| + // The number of bytes that are already consumed (i.e. sent) in the
|
| + // current frame.
|
| + size_t m_numConsumedBytesInCurrentFrame;
|
|
|
| // FIXME: Load two or more Blobs simultaneously for better performance.
|
| OwnPtr<FileReaderLoader> m_blobLoader;
|
|
|