Implement virStreamRecvFlags to some drivers

There are three virStreamDriver's currently supported:

 * virFDStream
 * remote driver
 * ESX driver

For now, backend virStreamRecvFlags support for only remote driver and
ESX driver is sufficient. Future patches will update virFDStream.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Michal Privoznik 2016-05-19 17:34:23 +02:00
parent a35e2836b3
commit 65b9cd6797
2 changed files with 32 additions and 5 deletions

View File

@ -252,12 +252,17 @@ esxStreamSend(virStreamPtr stream, const char *data, size_t nbytes)
}
static int
esxStreamRecv(virStreamPtr stream, char *data, size_t nbytes)
esxStreamRecvFlags(virStreamPtr stream,
char *data,
size_t nbytes,
unsigned int flags)
{
int result = -1;
esxStreamPrivate *priv = stream->privateData;
int status;
virCheckFlags(0, -1);
if (nbytes == 0)
return 0;
@ -317,6 +322,14 @@ esxStreamRecv(virStreamPtr stream, char *data, size_t nbytes)
return result;
}
static int
esxStreamRecv(virStreamPtr stream,
char *data,
size_t nbytes)
{
return esxStreamRecvFlags(stream, data, nbytes, 0);
}
static void
esxFreeStreamPrivate(esxStreamPrivate **priv)
{
@ -369,6 +382,7 @@ esxStreamAbort(virStreamPtr stream)
virStreamDriver esxStreamDriver = {
.streamSend = esxStreamSend,
.streamRecv = esxStreamRecv,
.streamRecvFlags = esxStreamRecvFlags,
/* FIXME: streamAddCallback missing */
/* FIXME: streamUpdateCallback missing */
/* FIXME: streamRemoveCallback missing */

View File

@ -5641,15 +5641,19 @@ remoteStreamSend(virStreamPtr st,
static int
remoteStreamRecv(virStreamPtr st,
remoteStreamRecvFlags(virStreamPtr st,
char *data,
size_t nbytes)
size_t nbytes,
unsigned int flags)
{
VIR_DEBUG("st=%p data=%p nbytes=%zu", st, data, nbytes);
VIR_DEBUG("st=%p data=%p nbytes=%zu flags=%x",
st, data, nbytes, flags);
struct private_data *priv = st->conn->privateData;
virNetClientStreamPtr privst = st->privateData;
int rv;
virCheckFlags(0, -1);
if (virNetClientStreamRaiseError(privst))
return -1;
@ -5671,6 +5675,14 @@ remoteStreamRecv(virStreamPtr st,
return rv;
}
static int
remoteStreamRecv(virStreamPtr st,
char *data,
size_t nbytes)
{
return remoteStreamRecvFlags(st, data, nbytes, 0);
}
struct remoteStreamCallbackData {
virStreamPtr st;
virStreamEventCallback cb;
@ -5843,6 +5855,7 @@ remoteStreamAbort(virStreamPtr st)
static virStreamDriver remoteStreamDrv = {
.streamRecv = remoteStreamRecv,
.streamRecvFlags = remoteStreamRecvFlags,
.streamSend = remoteStreamSend,
.streamFinish = remoteStreamFinish,
.streamAbort = remoteStreamAbort,