comp.lang.ada
 help / color / mirror / Atom feed
* HTTP Range Requests and streams
@ 2020-01-20  8:07 gautier_niouzes
  2020-01-20  8:34 ` Dmitry A. Kazakov
  0 siblings, 1 reply; 2+ messages in thread
From: gautier_niouzes @ 2020-01-20  8:07 UTC (permalink / raw)


Hi,

Is there a library supporting HTTP Range Requests (request only portions of a resource on the server: https://en.wikipedia.org/wiki/Byte_serving ) ?

Just curious...

An idea would be to map a stream type (a derived type from Ada.Streams.Root_Stream_Type, with methods Index and Set_Index) onto that mechanism.

_________________________ 
Gautier's Ada programming 
http://gautiersblog.blogspot.com/search/label/Ada 
NB: follow the above link for a valid e-mail address 

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: HTTP Range Requests and streams
  2020-01-20  8:07 HTTP Range Requests and streams gautier_niouzes
@ 2020-01-20  8:34 ` Dmitry A. Kazakov
  0 siblings, 0 replies; 2+ messages in thread
From: Dmitry A. Kazakov @ 2020-01-20  8:34 UTC (permalink / raw)


On 2020-01-20 09:07, gautier_niouzes@hotmail.com wrote:

> Is there a library supporting HTTP Range Requests (request only portions of a resource on the server: https://en.wikipedia.org/wiki/Byte_serving ) ?
> 
> Just curious...
> 
> An idea would be to map a stream type (a derived type from Ada.Streams.Root_Stream_Type, with methods Index and Set_Index) onto that mechanism.

Do you mean file transfer built-in into the server? A HTTP server 
library merely implements the protocol. What and how the user 
implementation of the server does on top of that is not the library 
business.

The HTTP implementation in Simple Components gets you a request 
callback. In the response you can give an access to a 
Root_Stream_Type'Class object to take the body from.

Now, if you wanted not the whole stream, but a part of it, you could do

    type Stream_Slice
         (  Content : not null access Root_Stream_Type'Class;
            Start   : Stream_Element_Offset
            Size    : Stream_Element_Count
         )  is
    record
       Read_Count : Stream_Element_Count := 0;
    end record;
    overriding procedure Read (...) -- Call Set_Index when Read_Count = 0

I think you get the idea.

I am not sure of it, but I believe that GNAT AWS also allows giving a 
stream to take the response body from.

So IMO it should work relatively smoothly with either.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-01-20  8:34 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-20  8:07 HTTP Range Requests and streams gautier_niouzes
2020-01-20  8:34 ` Dmitry A. Kazakov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox