OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 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 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 { | 71 { |
72 return new DocumentWebSocketChannel(context, client, sourceURL, lineNumb
er, handle); | 72 return new DocumentWebSocketChannel(context, client, sourceURL, lineNumb
er, handle); |
73 } | 73 } |
74 virtual ~DocumentWebSocketChannel(); | 74 virtual ~DocumentWebSocketChannel(); |
75 | 75 |
76 // WebSocketChannel functions. | 76 // WebSocketChannel functions. |
77 virtual bool connect(const KURL&, const String& protocol) override; | 77 virtual bool connect(const KURL&, const String& protocol) override; |
78 virtual void send(const String& message) override; | 78 virtual void send(const String& message) override; |
79 virtual void send(const DOMArrayBuffer&, unsigned byteOffset, unsigned byteL
ength) override; | 79 virtual void send(const DOMArrayBuffer&, unsigned byteOffset, unsigned byteL
ength) override; |
80 virtual void send(PassRefPtr<BlobDataHandle>) override; | 80 virtual void send(PassRefPtr<BlobDataHandle>) override; |
81 virtual void send(PassOwnPtr<Vector<char> > data) override; | 81 virtual void send(PassOwnPtr<Vector<char>> data) override; |
82 // Start closing handshake. Use the CloseEventCodeNotSpecified for the code | 82 // Start closing handshake. Use the CloseEventCodeNotSpecified for the code |
83 // argument to omit payload. | 83 // argument to omit payload. |
84 virtual void close(int code, const String& reason) override; | 84 virtual void close(int code, const String& reason) override; |
85 virtual void fail(const String& reason, MessageLevel, const String&, unsigne
d lineNumber) override; | 85 virtual void fail(const String& reason, MessageLevel, const String&, unsigne
d lineNumber) override; |
86 virtual void disconnect() override; | 86 virtual void disconnect() override; |
87 | 87 |
88 virtual void trace(Visitor*) override; | 88 virtual void trace(Visitor*) override; |
89 | 89 |
90 private: | 90 private: |
91 enum MessageType { | 91 enum MessageType { |
92 MessageTypeText, | 92 MessageTypeText, |
93 MessageTypeBlob, | 93 MessageTypeBlob, |
94 MessageTypeArrayBuffer, | 94 MessageTypeArrayBuffer, |
95 MessageTypeVector, | 95 MessageTypeVector, |
96 MessageTypeClose, | 96 MessageTypeClose, |
97 }; | 97 }; |
98 | 98 |
99 struct Message { | 99 struct Message { |
100 explicit Message(const String&); | 100 explicit Message(const String&); |
101 explicit Message(PassRefPtr<BlobDataHandle>); | 101 explicit Message(PassRefPtr<BlobDataHandle>); |
102 explicit Message(PassRefPtr<DOMArrayBuffer>); | 102 explicit Message(PassRefPtr<DOMArrayBuffer>); |
103 explicit Message(PassOwnPtr<Vector<char> >); | 103 explicit Message(PassOwnPtr<Vector<char>>); |
104 Message(unsigned short code, const String& reason); | 104 Message(unsigned short code, const String& reason); |
105 | 105 |
106 MessageType type; | 106 MessageType type; |
107 | 107 |
108 CString text; | 108 CString text; |
109 RefPtr<BlobDataHandle> blobDataHandle; | 109 RefPtr<BlobDataHandle> blobDataHandle; |
110 RefPtr<DOMArrayBuffer> arrayBuffer; | 110 RefPtr<DOMArrayBuffer> arrayBuffer; |
111 OwnPtr<Vector<char> > vectorData; | 111 OwnPtr<Vector<char>> vectorData; |
112 unsigned short code; | 112 unsigned short code; |
113 String reason; | 113 String reason; |
114 }; | 114 }; |
115 | 115 |
116 struct ReceivedMessage { | 116 struct ReceivedMessage { |
117 bool isMessageText; | 117 bool isMessageText; |
118 Vector<char> data; | 118 Vector<char> data; |
119 }; | 119 }; |
120 | 120 |
121 class BlobLoader; | 121 class BlobLoader; |
(...skipping 24 matching lines...) Expand all Loading... |
146 // m_handle == 0 means this channel is closed. | 146 // m_handle == 0 means this channel is closed. |
147 OwnPtr<WebSocketHandle> m_handle; | 147 OwnPtr<WebSocketHandle> m_handle; |
148 | 148 |
149 // m_client can be deleted while this channel is alive, but this class | 149 // m_client can be deleted while this channel is alive, but this class |
150 // expects that disconnect() is called before the deletion. | 150 // expects that disconnect() is called before the deletion. |
151 Member<WebSocketChannelClient> m_client; | 151 Member<WebSocketChannelClient> m_client; |
152 KURL m_url; | 152 KURL m_url; |
153 // m_identifier > 0 means calling scriptContextExecution() returns a Documen
t. | 153 // m_identifier > 0 means calling scriptContextExecution() returns a Documen
t. |
154 unsigned long m_identifier; | 154 unsigned long m_identifier; |
155 Member<BlobLoader> m_blobLoader; | 155 Member<BlobLoader> m_blobLoader; |
156 Deque<OwnPtr<Message> > m_messages; | 156 Deque<OwnPtr<Message>> m_messages; |
157 Vector<char> m_receivingMessageData; | 157 Vector<char> m_receivingMessageData; |
158 | 158 |
159 bool m_receivingMessageTypeIsText; | 159 bool m_receivingMessageTypeIsText; |
160 uint64_t m_sendingQuota; | 160 uint64_t m_sendingQuota; |
161 uint64_t m_receivedDataSizeForFlowControl; | 161 uint64_t m_receivedDataSizeForFlowControl; |
162 size_t m_sentSizeOfTopMessage; | 162 size_t m_sentSizeOfTopMessage; |
163 | 163 |
164 String m_sourceURLAtConstruction; | 164 String m_sourceURLAtConstruction; |
165 unsigned m_lineNumberAtConstruction; | 165 unsigned m_lineNumberAtConstruction; |
166 RefPtr<WebSocketHandshakeRequest> m_handshakeRequest; | 166 RefPtr<WebSocketHandshakeRequest> m_handshakeRequest; |
167 | 167 |
168 static const uint64_t receivedDataSizeForFlowControlHighWaterMark = 1 << 15; | 168 static const uint64_t receivedDataSizeForFlowControlHighWaterMark = 1 << 15; |
169 }; | 169 }; |
170 | 170 |
171 } // namespace blink | 171 } // namespace blink |
172 | 172 |
173 #endif // DocumentWebSocketChannel_h | 173 #endif // DocumentWebSocketChannel_h |
OLD | NEW |