mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-26 15:45:28 +00:00
125007d373
This allows to implement libvirt functions that use streams, such as virDoaminScreenshot, without the need to store the downloaded data in a temporary file first. The stream driver directly interacts with libcurl to send and receive data. The driver uses the libcurl multi interface that allows to do a transfer in multiple curl_multi_perform() calls. The easy interface would do the whole transfer in a single curl_easy_perform() call. This doesn't work with the libvirt stream API that is driven by multiple calls to the virStreamSend() and virStreamRecv() functions. The curl_multi_wait() function is used to do blocking operations. But it was added in libcurl 7.28.0. For older versions it is emulated using the socket callback of the multi interface. The current driver only supports blocking operations. There is already some code in place for non-blocking mode but it is not complete.
33 lines
1.2 KiB
C
33 lines
1.2 KiB
C
/*
|
|
* esx_stream.h: libcurl based stream driver
|
|
*
|
|
* Copyright (C) 2012-2014 Matthias Bolte <matthias.bolte@googlemail.com>
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library. If not, see
|
|
* <http://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
|
|
#ifndef __ESX_STREAM_H__
|
|
# define __ESX_STREAM_H__
|
|
|
|
# include "internal.h"
|
|
# include "esx_private.h"
|
|
|
|
int esxStreamOpenUpload(virStreamPtr stream, esxPrivate *priv, const char *url);
|
|
int esxStreamOpenDownload(virStreamPtr stream, esxPrivate *priv, const char *url,
|
|
unsigned long long offset, unsigned long long length);
|
|
|
|
#endif /* __ESX_STREAM_H__ */
|