From d6e5347ce33381c0c1c3d7b52e2e724d347018d6 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Fri, 20 May 2016 15:28:42 +0200 Subject: [PATCH] remote: Implement virStreamRecvHole Signed-off-by: Michal Privoznik --- src/remote/remote_driver.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index 63daec5875..dc59034c3b 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -5715,6 +5715,36 @@ remoteStreamSendHole(virStreamPtr st, } +static int +remoteStreamRecvHole(virStreamPtr st, + long long *length, + unsigned int flags) +{ + struct private_data *priv = st->conn->privateData; + virNetClientStreamPtr privst = st->privateData; + int rv; + + VIR_DEBUG("st=%p length=%p flags=%x", + st, length, flags); + + virCheckFlags(0, -1); + + if (virNetClientStreamRaiseError(privst)) + return -1; + + remoteDriverLock(priv); + priv->localUses++; + remoteDriverUnlock(priv); + + rv = virNetClientStreamRecvHole(priv->client, privst, length); + + remoteDriverLock(priv); + priv->localUses--; + remoteDriverUnlock(priv); + return rv; +} + + struct remoteStreamCallbackData { virStreamPtr st; virStreamEventCallback cb; @@ -5890,6 +5920,7 @@ static virStreamDriver remoteStreamDrv = { .streamRecvFlags = remoteStreamRecvFlags, .streamSend = remoteStreamSend, .streamSendHole = remoteStreamSendHole, + .streamRecvHole = remoteStreamRecvHole, .streamFinish = remoteStreamFinish, .streamAbort = remoteStreamAbort, .streamEventAddCallback = remoteStreamEventAddCallback,