summaryrefslogtreecommitdiff
path: root/vdagent/vdagent.cpp
diff options
context:
space:
mode:
authorArnon Gilboa <agilboa@redhat.com>2013-06-27 14:23:49 +0300
committerArnon Gilboa <agilboa@redhat.com>2013-06-27 14:23:49 +0300
commitc751e8fda0b9dfc056d9e738d1ff32274a75f8dc (patch)
treea37bd391bbf4cf42b63a73d2057cb6446108e647 /vdagent/vdagent.cpp
parentf7968d50350dd23ea9df2de807bad2cfbfb64844 (diff)
vdagent: add support for client -> guest file transfers
rhbz#956146
Diffstat (limited to 'vdagent/vdagent.cpp')
-rw-r--r--vdagent/vdagent.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/vdagent/vdagent.cpp b/vdagent/vdagent.cpp
index af99961..e5567f3 100644
--- a/vdagent/vdagent.cpp
+++ b/vdagent/vdagent.cpp
@@ -18,6 +18,7 @@
#include "vdcommon.h"
#include "desktop_layout.h"
#include "display_setting.h"
+#include "file_xfer.h"
#include "ximage.h"
#undef max
#undef min
@@ -147,6 +148,7 @@ private:
bool _desktop_switch;
DesktopLayout* _desktop_layout;
DisplaySetting _display_setting;
+ FileXfer _file_xfer;
HANDLE _vio_serial;
OVERLAPPED _read_overlapped;
OVERLAPPED _write_overlapped;
@@ -1237,6 +1239,15 @@ void VDAgent::dispatch_message(VDAgentMessage* msg, uint32_t port)
case VD_AGENT_ANNOUNCE_CAPABILITIES:
res = handle_announce_capabilities((VDAgentAnnounceCapabilities*)msg->data, msg->size);
break;
+ case VD_AGENT_FILE_XFER_START:
+ case VD_AGENT_FILE_XFER_STATUS:
+ case VD_AGENT_FILE_XFER_DATA: {
+ VDAgentFileXferStatusMessage status;
+ if (_file_xfer.dispatch(msg, &status)) {
+ write_message(VD_AGENT_FILE_XFER_STATUS, sizeof(status), &status);
+ }
+ break;
+ }
case VD_AGENT_CLIENT_DISCONNECTED:
vd_printf("Client disconnected, agent to be restarted");
set_control_event(CONTROL_STOP);