diff options
author | Fritz Elfert <felfert@to.com> | 2001-05-22 21:19:20 +0000 |
---|---|---|
committer | Fritz Elfert <felfert@to.com> | 2001-05-22 21:19:20 +0000 |
commit | 8a7831faf62daf131ca72ac8f6aea1528b077684 (patch) | |
tree | 885cdd30625f55d45bcfa9c73776a9828199b7eb /lib/rclip.cc | |
parent | 337514d73fc9315e18f90d6eaff367dfe5dc9909 (diff) | |
download | plptools-8a7831faf62daf131ca72ac8f6aea1528b077684.tar.gz plptools-8a7831faf62daf131ca72ac8f6aea1528b077684.tar.bz2 plptools-8a7831faf62daf131ca72ac8f6aea1528b077684.zip |
More work on remote clipboard.
Diffstat (limited to 'lib/rclip.cc')
-rw-r--r-- | lib/rclip.cc | 67 |
1 files changed, 56 insertions, 11 deletions
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<rfsv::errs> rclip:: -putData(bufferStore &) { +sendListen() { + if (sendCommand(RCLIP_LISTEN)) + return rfsv::E_PSI_GEN_NONE; + else + return rfsv::E_PSI_GEN_FAIL; +} + +Enum<rfsv::errs> rclip:: +checkNotify() { + Enum<rfsv::errs> 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<rfsv::errs> rclip:: +waitNotify() { Enum<rfsv::errs> 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<rfsv::errs> rclip:: -getData(bufferStore &buf) { +notify() { Enum<rfsv::errs> 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<rfsv::errs> rclip:: +initClipbd() { + Enum<rfsv::errs> 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; } |