| 51 | } |
| 52 | |
| 53 | bool http_servlet::doPing(acl::websocket& in, acl::websocket& out) |
| 54 | { |
| 55 | unsigned long long len = in.get_frame_payload_len(); |
| 56 | if (len == 0) |
| 57 | return out.send_frame_pong((const void*) NULL, 0); |
| 58 | |
| 59 | out.reset().set_frame_fin(true) |
| 60 | .set_frame_opcode(acl::FRAME_PONG) |
| 61 | .set_frame_payload_len(len); |
| 62 | |
| 63 | char buf[8192]; |
| 64 | while (true) { |
| 65 | int ret = in.read_frame_data(buf, sizeof(buf) - 1); |
| 66 | if (ret == 0) |
| 67 | break; |
| 68 | if (ret < 0) { |
| 69 | printf("read_frame_data error\r\n"); |
| 70 | return false; |
| 71 | } |
| 72 | |
| 73 | buf[ret] = 0; |
| 74 | printf("read: [%s]\r\n", buf); |
| 75 | if (out.send_frame_data(buf, ret) == false) { |
| 76 | printf("send_frame_data error\r\n"); |
| 77 | return false; |
| 78 | } |
| 79 | } |
| 80 | |
| 81 | return true; |
| 82 | } |
| 83 | |
| 84 | bool http_servlet::doPong(acl::websocket& in, acl::websocket&) |
| 85 | { |
nothing calls this directly
no test coverage detected