Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-125717

Need a possibility to use existing memory for payload data in Qt HTTP Server

    XMLWordPrintable

Details

    • All
    • 1e27b53dd (dev), 2ff6b4b8a (dev), b63114a3b (dev), 44361306d (6.8), ff6a6e526 (6.8), fb594811b (6.8)
    • Foundation Sprint 110, Foundation Sprint 111, Foundation Sprint 112, Foundation Sprint 113, Foundation Sprint 114, Foundation Sprint 115, Foundation Sprint 116, Foundation Sprint 117

    Description

      A customer reports a need to be able to use data in a pre-allocated memory as a payload in Qt HTTP Server. Currently, Qt HTTP Server make a copy of payload data. If you have large data, e.g. image on a high-resolution camera, there might be problems to allocate so much memory in small-footprint MCU of the device.

      The customer mentioned the following steps to approach this:

      • We use the QIODevice interface to QHttpServerResponder write because I (as I recall) it copies in chunks. When using QByteArray it could copy our 200MB and we were screwed.
      • But to improve performance and avoid copy into the internal QTcpSocket we did a wrapper around the QHttpServerResponder that wrote directly to the internal socket. BUT as of Qt6.5 that socket is hidden for outside use.

      The task would be to assess what could be done with the existing API and if new API would be needed, assess how to make them so that they can be added to a Qt 6.8 baseline on the customer side. The customer needs this on top of Qt 6.8.x.

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            manordheim MÃ¥rten Nordheim
            vminenko Vladimir Minenko
            Vladimir Minenko Vladimir Minenko
            Alex Blasche Alex Blasche
            Votes:
            1 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: