MCPcopy Create free account
hub / github.com/Pagghiu/SaneCppLibraries / controlFrames

Method controlFrames

Tests/Libraries/Http/HttpWebSocketFrameTest.cpp:425–473  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

423
424 char output[64] = {0};
425
426 HttpWebSocketFrameHeaderView ping;
427 ping.fin = true;
428 ping.opcode = HttpWebSocketOpcode::Ping;
429 ping.masked = false;
430 ping.payloadLength = 4;
431
432 HttpWebSocketFrameHeaderView close;
433 close.fin = true;
434 close.opcode = HttpWebSocketOpcode::Close;
435 close.masked = false;
436 close.payloadLength = 2;
437
438 size_t frameBytes = 0;
439 size_t totalBytes = 0;
440
441 char pingPayload[] = {'p', 'i', 'n', 'g'};
442 SC::uint8_t closePayload[] = {0x03, 0xE8};
443
444 SC_TEST_EXPECT(encodeFrame(writer, ping, {pingPayload, sizeof(pingPayload)}, {output, sizeof(output)}, frameBytes));
445 totalBytes += frameBytes;
446 SC_TEST_EXPECT(encodeFrame(writer, close, byteSpan(closePayload, sizeof(closePayload)),
447 {output + totalBytes, sizeof(output) - totalBytes}, frameBytes));
448 totalBytes += frameBytes;
449
450 ReaderCollector collector;
451 HttpWebSocketFrameReader reader;
452 reader.reset(HttpWebSocketEndpointRole::Client);
453 reader.onFrameHeader.bind<ReaderCollector, &ReaderCollector::onHeader>(collector);
454 reader.onFramePayload.bind<ReaderCollector, &ReaderCollector::onPayload>(collector);
455
456 size_t consumed = 0;
457 SC_TEST_EXPECT(reader.parse({output, totalBytes}, consumed));
458 SC_TEST_EXPECT(consumed == totalBytes);
459 SC_TEST_EXPECT(collector.numHeaders == 2);
460 SC_TEST_EXPECT(collector.headers[0].isControlFrame());
461 SC_TEST_EXPECT(collector.headers[1].isControlFrame());
462 SC_TEST_EXPECT(collector.headers[0].opcode == HttpWebSocketOpcode::Ping);
463 SC_TEST_EXPECT(collector.headers[1].opcode == HttpWebSocketOpcode::Close);
464
465 const SC::uint8_t expected[] = {'p', 'i', 'n', 'g', 0x03, 0xE8};
466 SC_TEST_EXPECT(spansEqual(collector.payload.toSpanConst(), byteSpan(expected, sizeof(expected))));
467}
468
469void SC::HttpWebSocketFrameTest::maskingRoleValidation()
470{
471 HttpWebSocketFrameWriter writer;
472 writer.reset(HttpWebSocketEndpointRole::Client);
473
474 HttpWebSocketFrameHeaderView maskedHeader;
475 maskedHeader.fin = true;
476 maskedHeader.opcode = HttpWebSocketOpcode::Text;

Callers

nothing calls this directly

Calls 6

encodeFrameFunction · 0.85
byteSpanFunction · 0.85
spansEqualFunction · 0.85
isControlFrameMethod · 0.80
resetMethod · 0.45
parseMethod · 0.45

Tested by

no test coverage detected