OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
166 // data in order. Calling this method directly jumps in the process. | 166 // data in order. Calling this method directly jumps in the process. |
167 bool sendFrame(WebSocketFrame::OpCode, const char* data, size_t dataLength); | 167 bool sendFrame(WebSocketFrame::OpCode, const char* data, size_t dataLength); |
168 | 168 |
169 enum BlobLoaderStatus { | 169 enum BlobLoaderStatus { |
170 BlobLoaderNotStarted, | 170 BlobLoaderNotStarted, |
171 BlobLoaderStarted, | 171 BlobLoaderStarted, |
172 BlobLoaderFinished, | 172 BlobLoaderFinished, |
173 BlobLoaderFailed | 173 BlobLoaderFailed |
174 }; | 174 }; |
175 | 175 |
| 176 enum ChannelState { |
| 177 ChannelIdle, |
| 178 ChannelClosing, |
| 179 ChannelClosed |
| 180 }; |
| 181 |
176 Document* m_document; | 182 Document* m_document; |
177 WebSocketChannelClient* m_client; | 183 WebSocketChannelClient* m_client; |
178 OwnPtr<WebSocketHandshake> m_handshake; | 184 OwnPtr<WebSocketHandshake> m_handshake; |
179 RefPtr<SocketStreamHandle> m_handle; | 185 RefPtr<SocketStreamHandle> m_handle; |
180 Vector<char> m_buffer; | 186 Vector<char> m_buffer; |
181 | 187 |
182 Timer<MainThreadWebSocketChannel> m_resumeTimer; | 188 Timer<MainThreadWebSocketChannel> m_resumeTimer; |
183 bool m_suspended; | 189 bool m_suspended; |
184 bool m_closing; | |
185 bool m_didFailOfClientAlreadyRun; | 190 bool m_didFailOfClientAlreadyRun; |
186 bool m_receivedClosingHandshake; | 191 bool m_receivedClosingHandshake; |
187 Timer<MainThreadWebSocketChannel> m_closingTimer; | 192 Timer<MainThreadWebSocketChannel> m_closingTimer; |
188 bool m_closed; | 193 ChannelState m_state; |
189 bool m_shouldDiscardReceivedData; | 194 bool m_shouldDiscardReceivedData; |
190 unsigned long m_unhandledBufferedAmount; | 195 unsigned long m_unhandledBufferedAmount; |
191 | 196 |
192 unsigned long m_identifier; // m_identifier == 0 means that we could not obt
ain a valid identifier. | 197 unsigned long m_identifier; // m_identifier == 0 means that we could not obt
ain a valid identifier. |
193 | 198 |
194 // Private members only for hybi-10 protocol. | 199 // Private members only for hybi-10 protocol. |
195 bool m_hasContinuousFrame; | 200 bool m_hasContinuousFrame; |
196 WebSocketFrame::OpCode m_continuousFrameOpCode; | 201 WebSocketFrame::OpCode m_continuousFrameOpCode; |
197 Vector<char> m_continuousFrameData; | 202 Vector<char> m_continuousFrameData; |
198 unsigned short m_closeEventCode; | 203 unsigned short m_closeEventCode; |
199 String m_closeEventReason; | 204 String m_closeEventReason; |
200 | 205 |
201 Deque<OwnPtr<QueuedFrame> > m_outgoingFrameQueue; | 206 Deque<OwnPtr<QueuedFrame> > m_outgoingFrameQueue; |
202 OutgoingFrameQueueStatus m_outgoingFrameQueueStatus; | 207 OutgoingFrameQueueStatus m_outgoingFrameQueueStatus; |
203 | 208 |
204 // FIXME: Load two or more Blobs simultaneously for better performance. | 209 // FIXME: Load two or more Blobs simultaneously for better performance. |
205 OwnPtr<FileReaderLoader> m_blobLoader; | 210 OwnPtr<FileReaderLoader> m_blobLoader; |
206 BlobLoaderStatus m_blobLoaderStatus; | 211 BlobLoaderStatus m_blobLoaderStatus; |
207 | 212 |
208 String m_sourceURLAtConnection; | 213 String m_sourceURLAtConnection; |
209 unsigned m_lineNumberAtConnection; | 214 unsigned m_lineNumberAtConnection; |
210 WebSocketPerMessageDeflate m_perMessageDeflate; | 215 WebSocketPerMessageDeflate m_perMessageDeflate; |
211 WebSocketDeflateFramer m_deflateFramer; | 216 WebSocketDeflateFramer m_deflateFramer; |
212 }; | 217 }; |
213 | 218 |
214 } // namespace WebCore | 219 } // namespace WebCore |
215 | 220 |
216 #endif // MainThreadWebSocketChannel_h | 221 #endif // MainThreadWebSocketChannel_h |
OLD | NEW |