| 193 | } |
| 194 | |
| 195 | bool http_servlet::doWebSocket(acl::HttpServletRequest& req, |
| 196 | acl::HttpServletResponse&) |
| 197 | { |
| 198 | acl::socket_stream& ss = req.getSocketStream(); |
| 199 | acl::websocket in(ss), out(ss); |
| 200 | |
| 201 | #if 1 |
| 202 | if (!sendBannder(out)) { |
| 203 | return false; |
| 204 | } |
| 205 | #endif |
| 206 | |
| 207 | while (true) { |
| 208 | if (in.read_frame_head() == false) { |
| 209 | printf("read_frame_head error\r\n"); |
| 210 | return false; |
| 211 | } |
| 212 | |
| 213 | bool ret; |
| 214 | unsigned char opcode = in.get_frame_opcode(); |
| 215 | |
| 216 | printf("opcode: 0x%x\r\n", opcode); |
| 217 | |
| 218 | switch (opcode) { |
| 219 | case acl::FRAME_PING: |
| 220 | ret = doPing(in, out); |
| 221 | break; |
| 222 | case acl::FRAME_PONG: |
| 223 | ret = doPong(in, out); |
| 224 | break; |
| 225 | case acl::FRAME_CLOSE: |
| 226 | ret = doClose(in, out); |
| 227 | break; |
| 228 | case acl::FRAME_TEXT: |
| 229 | ret = doMsg(in, out); |
| 230 | break; |
| 231 | case acl::FRAME_BINARY: |
| 232 | ret = doMsg(in, out); |
| 233 | break; |
| 234 | case acl::FRAME_CONTINUATION: |
| 235 | ret = false; |
| 236 | break; |
| 237 | default: |
| 238 | printf(">>got invalid\r\n"); |
| 239 | ret = false; |
| 240 | break; |
| 241 | } |
| 242 | |
| 243 | if (ret == false) |
| 244 | return false; |
| 245 | } |
| 246 | |
| 247 | // XXX: NOT REACHED |
| 248 | return false; |
| 249 | } |
| 250 | |
| 251 | bool http_servlet::doPost(acl::HttpServletRequest& req, |
| 252 | acl::HttpServletResponse& res) |
nothing calls this directly
no test coverage detected