MCPcopy Create free account
hub / github.com/acl-dev/acl / doWebSocket

Method doWebSocket

lib_acl_cpp/samples/websocket/demo/http_servlet.cpp:195–249  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

193}
194
195bool 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
251bool http_servlet::doPost(acl::HttpServletRequest& req,
252 acl::HttpServletResponse& res)

Callers

nothing calls this directly

Calls 1

read_frame_headMethod · 0.80

Tested by

no test coverage detected