[PATCH spice-html5 v2 1/2] main: Add messages for file transfer detailed errors

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



---
 enums.js    | 12 ++++++++++--
 main.js     | 16 ++++++++++++++--
 spicemsg.js |  4 ++++
 3 files changed, 28 insertions(+), 4 deletions(-)

diff --git a/enums.js b/enums.js
index d5a9003..7154595 100644
--- a/enums.js
+++ b/enums.js
@@ -369,12 +369,20 @@ var VD_AGENT_CAP_MOUSE_STATE            = 0,
     VD_AGENT_CAP_GUEST_LINEEND_LF       = 8,
     VD_AGENT_CAP_GUEST_LINEEND_CRLF     = 9,
     VD_AGENT_CAP_MAX_CLIPBOARD          = 10,
-    VD_AGENT_END_CAP                    = 11;
+    VD_AGENT_CAP_AUDIO_VOLUME_SYNC      = 11,
+    VD_AGENT_CAP_MONITORS_CONFIG_POSITION  = 12,
+    VD_AGENT_CAP_FILE_XFER_DISABLED        = 13,
+    VD_AGENT_CAP_FILE_XFER_DETAILED_ERRORS = 14,
+    VD_AGENT_END_CAP                       = 15;
 
 var VD_AGENT_FILE_XFER_STATUS_CAN_SEND_DATA = 0,
     VD_AGENT_FILE_XFER_STATUS_CANCELLED     = 1,
     VD_AGENT_FILE_XFER_STATUS_ERROR         = 2,
-    VD_AGENT_FILE_XFER_STATUS_SUCCESS       = 3;
+    VD_AGENT_FILE_XFER_STATUS_SUCCESS       = 3,
+    VD_AGENT_FILE_XFER_STATUS_NOT_ENOUGH_SPACE    = 4,
+    VD_AGENT_FILE_XFER_STATUS_SESSION_LOCKED      = 5,
+    VD_AGENT_FILE_XFER_STATUS_AGENT_NOT_CONNECTED = 6,
+    VD_AGENT_FILE_XFER_STATUS_DISABLED            = 7;
 
 var SPICE_STREAM_FLAGS_TOP_DOWN = (1 << 0);
 
diff --git a/main.js b/main.js
index 173ff97..6a04da9 100644
--- a/main.js
+++ b/main.js
@@ -344,7 +344,8 @@ SpiceMainConn.prototype.announce_agent_capabilities = function(request)
 {
     var caps = new VDAgentAnnounceCapabilities(request, (1 << VD_AGENT_CAP_MOUSE_STATE) |
                                                         (1 << VD_AGENT_CAP_MONITORS_CONFIG) |
-                                                        (1 << VD_AGENT_CAP_REPLY));
+                                                        (1 << VD_AGENT_CAP_REPLY) |
+                                                        (1 << VD_AGENT_CAP_FILE_XFER_DETAILED_ERRORS));
     this.send_agent_message(VD_AGENT_ANNOUNCE_CAPABILITIES, caps);
 }
 
@@ -385,13 +386,24 @@ SpiceMainConn.prototype.handle_file_xfer_status = function(file_xfer_status)
         case VD_AGENT_FILE_XFER_STATUS_ERROR:
             xfer_error = "some errors occurred in the spice agent";
             break;
-        case VD_AGENT_FILE_XFER_STATUS_SUCCESS:
+        case VD_AGENT_FILE_XFER_STATUS_NOT_ENOUGH_SPACE:
+            xfer_error = "not enough space in the remote system";
+            break;
+        case VD_AGENT_FILE_XFER_STATUS_SESSION_LOCKED:
+            xfer_error = "remote system is locked";
+            break;
+        case VD_AGENT_FILE_XFER_STATUS_AGENT_NOT_CONNECTED:
+            xfer_error = "spice angent is not connected";
+            break;
+        case VD_AGENT_FILE_XFER_STATUS_DISABLED:
+            xfer_error = "file transfer is disabled on the remote system";
             break;
         default:
             xfer_error = "unhandled status type: " + file_xfer_status.result;
             break;
     }
 
+    xfer_error = "File transfer: " + xfer_error;
     this.file_xfer_completed(xfer_task, xfer_error)
 }
 
diff --git a/spicemsg.js b/spicemsg.js
index 3619996..4220d31 100644
--- a/spicemsg.js
+++ b/spicemsg.js
@@ -577,6 +577,10 @@ VDAgentFileXferStatusMessage.prototype =
         var dv = new SpiceDataView(a);
         this.id = dv.getUint32(at, true); at += 4;
         this.result = dv.getUint32(at, true); at += 4;
+        if (this.result == VD_AGENT_FILE_XFER_STATUS_NOT_ENOUGH_SPACE)
+        {
+            this.data = dv.getUint64(at, true); at += 8;
+        }
         return at;
     },
     buffer_size: function()
-- 
2.9.5

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]