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

Function saneMain

Examples/HttpClientAsyncGet/HttpClientAsyncGet.cpp:63–148  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

61};
62
63Result saneMain(Span<StringSpan> args)
64{
65 Console console;
66 Console::tryAttachingToParentConsole();
67
68 if (args.sizeInElements() < 1)
69 {
70 console.print("Usage: HttpClientAsyncGet <url>\n");
71 console.print(" Example: HttpClientAsyncGet https://example.com\n");
72 return Result::Error("Missing URL argument");
73 }
74
75 AsyncEventLoop loop;
76 SC_TRY(loop.create());
77
78 HttpClient client;
79 SC_TRY(client.init());
80
81 HttpClientResponseBuffer responseBuffers[8];
82 HttpClientOperationEvent eventQueue[16];
83 AsyncBufferView asyncResponseBuffers[8];
84 AsyncReadableStream::Request responseReadQueue[8];
85 AsyncWritableStream::Request requestWriteQueue[4];
86
87 char responseMemory[64 * 1024];
88 char responseHeaders[8 * 1024];
89 char responseMetadata[4 * 1024];
90 char backendScratch[16 * 1024];
91
92 HttpClientOperationMemory operationMemory;
93 operationMemory.responseBuffers = {responseBuffers, 8};
94 operationMemory.responseBufferMemory = {responseMemory, sizeof(responseMemory)};
95 operationMemory.eventQueue = {eventQueue, 16};
96 operationMemory.responseHeaders = {responseHeaders, sizeof(responseHeaders)};
97 operationMemory.responseMetadata = {responseMetadata, sizeof(responseMetadata)};
98 operationMemory.backendScratch = {backendScratch, sizeof(backendScratch)};
99
100 HttpClientAsyncOperationMemoryT<AsyncStreams> asyncMemory;
101 asyncMemory.responseBuffers = {asyncResponseBuffers, 8};
102 asyncMemory.responseBufferMemory = {responseMemory, sizeof(responseMemory)};
103 asyncMemory.responseReadQueue = {responseReadQueue, 8};
104 asyncMemory.requestWriteQueue = {requestWriteQueue, 4};
105
106 AsyncHttpClientOperation operation;
107 SC_TRY(operation.init(client, loop, operationMemory, asyncMemory));
108
109 HttpClientRequest request;
110 request.url = args[0];
111 request.options.timeouts.requestTimeoutMs = 30000;
112
113 HttpClientResponse response;
114 char body[256 * 1024];
115 AsyncResponseCollector collector;
116 collector.operation = &operation;
117 collector.body = {body, sizeof(body)};
118
119 const bool dataAdded =
120 operation.getResponseBodyStream()

Callers 1

mainFunction · 0.70

Calls 9

printMethod · 0.80
getProtocolNameMethod · 0.80
ErrorEnum · 0.50
ResultClass · 0.50
createMethod · 0.45
initMethod · 0.45
startMethod · 0.45
runOnceMethod · 0.45
closeMethod · 0.45

Tested by

no test coverage detected