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

Method attach

Libraries/Http/HttpWebSocket.cpp:1279–1315  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1277}
1278
1279Result HttpWebSocketConnectionPump::attach(const HttpWebSocketTransportView& newTransport,
1280 HttpWebSocketEndpointRole endpointRole)
1281{
1282 SC_TRY_MSG(newTransport.isValid(), "HttpWebSocketConnectionPump transport is invalid");
1283 detach();
1284
1285 transport = newTransport;
1286 endpoint.reset(endpointRole);
1287 endpoint.onDataFramePayload.bind<HttpWebSocketConnectionPump, &HttpWebSocketConnectionPump::onEndpointDataFrame>(
1288 *this);
1289
1290 dataListenerAdded = transport.readableStream->eventData
1291 .addListener<HttpWebSocketConnectionPump, &HttpWebSocketConnectionPump::onData>(*this);
1292 if (not dataListenerAdded)
1293 {
1294 detach();
1295 return Result::Error("HttpWebSocketConnectionPump data listener limit reached");
1296 }
1297
1298 endListenerAdded = transport.readableStream->eventEnd
1299 .addListener<HttpWebSocketConnectionPump, &HttpWebSocketConnectionPump::onStreamEnd>(*this);
1300 if (not endListenerAdded)
1301 {
1302 detach();
1303 return Result::Error("HttpWebSocketConnectionPump end listener limit reached");
1304 }
1305
1306 closeListenerAdded =
1307 transport.readableStream->eventClose
1308 .addListener<HttpWebSocketConnectionPump, &HttpWebSocketConnectionPump::onStreamEnd>(*this);
1309 if (not closeListenerAdded)
1310 {
1311 detach();
1312 return Result::Error("HttpWebSocketConnectionPump close listener limit reached");
1313 }
1314 return Result(true);
1315}
1316
1317void HttpWebSocketConnectionPump::detach()
1318{

Callers 2

Calls 5

detachFunction · 0.85
ErrorEnum · 0.50
ResultClass · 0.50
isValidMethod · 0.45
resetMethod · 0.45

Tested by

no test coverage detected