aboutsummaryrefslogtreecommitdiffstats
path: root/lib/rclip.cc
diff options
context:
space:
mode:
authorFritz Elfert <felfert@to.com>2001-05-22 21:19:20 +0000
committerFritz Elfert <felfert@to.com>2001-05-22 21:19:20 +0000
commit8a7831faf62daf131ca72ac8f6aea1528b077684 (patch)
tree885cdd30625f55d45bcfa9c73776a9828199b7eb /lib/rclip.cc
parent337514d73fc9315e18f90d6eaff367dfe5dc9909 (diff)
downloadplptools-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.cc67
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;
}