From 85fe833e9f34e446e977cb36a9edcbd99e998795 Mon Sep 17 00:00:00 2001 From: sidorares Date: Mon, 18 Jul 2011 17:41:58 +1000 Subject: [PATCH] initial error reply unpacking, client emits 'error' event --- lib/x11/xcore.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/lib/x11/xcore.js b/lib/x11/xcore.js index 90de938..f0950ec 100644 --- a/lib/x11/xcore.js +++ b/lib/x11/xcore.js @@ -185,12 +185,25 @@ XClient.prototype.expectReplyHeader = function() var type = res[0]; var seq_num = res[2]; if (type == 0) - { - var error_code = res[1]; + { + var error_code = res[1]; + var error = {}; + error.code = error_code; + error.seq = seq_num; + error.message = xerrors.errorText[error_code]; + // unpack error packet (32 bytes for all error types, 8 of them in CCSL header) client.pack_stream.get(24, function(buf) { // TODO: dispatch, use sequence number - console.error('error!!!!' + xerrors.errorText[error_code]); + //TODO: add more generic way to read common values + // if (error_code == 14) + { + var res = buf.unpack('LSC'); + error.badPparam = res[0]; // id: GC, WinID, Font, Atom etc; Value + error.minorOpcode = res[1]; + error.majorOpcode = res[2]; + } + client.emit('error', error); client.expectReplyHeader(); } ); return;