From 8a7831faf62daf131ca72ac8f6aea1528b077684 Mon Sep 17 00:00:00 2001 From: Fritz Elfert Date: Tue, 22 May 2001 21:19:20 +0000 Subject: More work on remote clipboard. --- lib/rclip.cc | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 56 insertions(+), 11 deletions(-) (limited to 'lib/rclip.cc') diff --git a/lib/rclip.cc b/lib/rclip.cc index b8df5fe..6c55c39 100644 --- a/lib/rclip.cc +++ b/lib/rclip.cc @@ -82,14 +82,14 @@ getStatus(void) const char *rclip:: getConnectName(void) { - return "SYS$RCLIP"; + return "CLIPSVR.RSY"; } // // protected internals // bool rclip:: -sendCommand(enum commands cc, bufferStore & data) +sendCommand(enum commands cc) { if (status == rfsv::E_PSI_FILE_DISC) { reconnect(); @@ -99,7 +99,13 @@ sendCommand(enum commands cc, bufferStore & data) bool result; bufferStore a; a.addByte(cc); - a.addBuff(data); + switch (cc) { + case RCLIP_INIT: + a.addWord(0x100); + break; + case RCLIP_NOTIFY: + a.addByte(0); + } result = skt->sendBufferStore(a); if (!result) { reconnect(); @@ -111,31 +117,70 @@ sendCommand(enum commands cc, bufferStore & data) } Enum rclip:: -putData(bufferStore &) { +sendListen() { + if (sendCommand(RCLIP_LISTEN)) + return rfsv::E_PSI_GEN_NONE; + else + return rfsv::E_PSI_GEN_FAIL; +} + +Enum rclip:: +checkNotify() { + Enum ret; + + bufferStore a; + if ((ret = getResponse(a)) != rfsv::E_PSI_GEN_NONE) + cerr << "RCLIP ERR:" << a << endl; + else { + if (a.getLen() != 1) + ret = rfsv::E_PSI_GEN_FAIL; + if (a.getByte(0) != 0) + ret = rfsv::E_PSI_GEN_FAIL; + } + return ret; +} + +Enum rclip:: +waitNotify() { Enum ret; bufferStore a; - a.addWord(0); - sendCommand(RCLIP_INIT, a); + sendCommand(RCLIP_LISTEN); if ((ret = getResponse(a)) != rfsv::E_PSI_GEN_NONE) cerr << "RCLIP ERR:" << a << endl; else { - if (a.getLen() != 3) + if (a.getLen() != 1) ret = rfsv::E_PSI_GEN_FAIL; - if ((a.getByte(0) != 0) || (a.getWord(1) != 2)) + if (a.getByte(0) != 0) ret = rfsv::E_PSI_GEN_FAIL; } return ret; } Enum rclip:: -getData(bufferStore &buf) { +notify() { Enum ret; bufferStore a; - sendCommand(RCLIP_GET, buf); - if ((ret = getResponse(buf)) != rfsv::E_PSI_GEN_NONE) + sendCommand(RCLIP_NOTIFY); + if ((ret = getResponse(a)) != rfsv::E_PSI_GEN_NONE) + cerr << "RCLIP ERR:" << a << endl; + if (a.getLen() != 1) + ret = rfsv::E_PSI_GEN_FAIL; + if (a.getByte(0) != RCLIP_NOTIFY) + ret = rfsv::E_PSI_GEN_FAIL; + return ret; +} + +Enum rclip:: +initClipbd() { + Enum ret = rfsv::E_PSI_GEN_NONE; + bufferStore a; + + sendCommand(RCLIP_INIT); + if ((ret = getResponse(a)) != rfsv::E_PSI_GEN_NONE) cerr << "RCLIP ERR:" << a << endl; + cout << "RCLIP RESP: " << a << endl; return ret; } -- cgit v1.2.3