Instantiate a downloader.
- Parameters
-
| job | Job control interface |
| image | Image to fill with downloaded file |
- Return values
-
Instantiates a downloader object to download the content of the specified image from its URI.
Definition at line 263 of file downloader.c.
263 {
266
267
278
279
281 goto err;
282
283
286 return 0;
287
288 err:
292}
struct arbelprm_rc_send_wqe rc
static struct interface_descriptor downloader_job_desc
Downloader job control interface descriptor.
static void downloader_free(struct refcnt *refcnt)
Free downloader object.
static struct interface_descriptor downloader_xfer_desc
Downloader data transfer interface descriptor.
static void downloader_finished(struct downloader *downloader, int rc)
Terminate download.
#define ENOMEM
Not enough space.
static struct image * image_get(struct image *image)
Increment reference count on an image.
void intf_plug_plug(struct interface *a, struct interface *b)
Plug two object interfaces together.
static void intf_init(struct interface *intf, struct interface_descriptor *desc, struct refcnt *refcnt)
Initialise an object interface.
void * zalloc(size_t size)
Allocate cleared memory.
int xfer_open_uri(struct interface *intf, struct uri *uri)
Open URI.
#define ref_put(refcnt)
Drop reference to object.
#define ref_init(refcnt, free)
Initialise a reference counter.
struct interface xfer
Data transfer interface.
struct image * image
Image to contain downloaded file.
struct xfer_buffer buffer
Data transfer buffer.
struct refcnt refcnt
Reference count for this object.
struct interface job
Job control interface.
struct uri * uri
URI of image.
static void xferbuf_umalloc_init(struct xfer_buffer *xferbuf)
Initialise umalloc()-based data transfer buffer.
References downloader::buffer, downloader_finished(), downloader_free(), downloader_job_desc, downloader_xfer_desc, ENOMEM, downloader::image, image_get(), intf_init(), intf_plug_plug(), downloader::job, rc, ref_init, ref_put, downloader::refcnt, image::uri, downloader::xfer, xfer_open_uri(), xferbuf_umalloc_init(), and zalloc().
Referenced by imgdownload().