CClientProxy1_0.h

00001 /*
00002  * synergy -- mouse and keyboard sharing utility
00003  * Copyright (C) 2002 Chris Schoeneman
00004  * 
00005  * This package is free software; you can redistribute it and/or
00006  * modify it under the terms of the GNU General Public License
00007  * found in the file COPYING that should have accompanied this file.
00008  * 
00009  * This package is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  * GNU General Public License for more details.
00013  */
00014 
00015 #ifndef CCLIENTPROXY1_0_H
00016 #define CCLIENTPROXY1_0_H
00017 
00018 #include "CClientProxy.h"
00019 #include "CClipboard.h"
00020 #include "ProtocolTypes.h"
00021 
00022 class CEvent;
00023 class CEventQueueTimer;
00024 
00026 class CClientProxy1_0 : public CClientProxy {
00027 public:
00028     CClientProxy1_0(const CString& name, IStream* adoptedStream);
00029     ~CClientProxy1_0();
00030 
00031     // IScreen
00032     virtual bool        getClipboard(ClipboardID id, IClipboard*) const;
00033     virtual void        getShape(SInt32& x, SInt32& y,
00034                             SInt32& width, SInt32& height) const;
00035     virtual void        getCursorPos(SInt32& x, SInt32& y) const;
00036 
00037     // IClient overrides
00038     virtual void        enter(SInt32 xAbs, SInt32 yAbs,
00039                             UInt32 seqNum, KeyModifierMask mask,
00040                             bool forScreensaver);
00041     virtual bool        leave();
00042     virtual void        setClipboard(ClipboardID, const IClipboard*);
00043     virtual void        grabClipboard(ClipboardID);
00044     virtual void        setClipboardDirty(ClipboardID, bool);
00045     virtual void        keyDown(KeyID, KeyModifierMask, KeyButton);
00046     virtual void        keyRepeat(KeyID, KeyModifierMask,
00047                             SInt32 count, KeyButton);
00048     virtual void        keyUp(KeyID, KeyModifierMask, KeyButton);
00049     virtual void        mouseDown(ButtonID);
00050     virtual void        mouseUp(ButtonID);
00051     virtual void        mouseMove(SInt32 xAbs, SInt32 yAbs);
00052     virtual void        mouseRelativeMove(SInt32 xRel, SInt32 yRel);
00053     virtual void        mouseWheel(SInt32 xDelta, SInt32 yDelta);
00054     virtual void        screensaver(bool activate);
00055     virtual void        resetOptions();
00056     virtual void        setOptions(const COptionsList& options);
00057 
00058 protected:
00059     virtual bool        parseHandshakeMessage(const UInt8* code);
00060     virtual bool        parseMessage(const UInt8* code);
00061 
00062     virtual void        resetHeartbeatRate();
00063     virtual void        setHeartbeatRate(double rate, double alarm);
00064     virtual void        resetHeartbeatTimer();
00065     virtual void        addHeartbeatTimer();
00066     virtual void        removeHeartbeatTimer();
00067 
00068 private:
00069     void                disconnect();
00070     void                removeHandlers();
00071 
00072     void                handleData(const CEvent&, void*);
00073     void                handleDisconnect(const CEvent&, void*);
00074     void                handleWriteError(const CEvent&, void*);
00075     void                handleFlatline(const CEvent&, void*);
00076 
00077     bool                recvInfo();
00078     bool                recvClipboard();
00079     bool                recvGrabClipboard();
00080 
00081 private:
00082     typedef bool (CClientProxy1_0::*MessageParser)(const UInt8*);
00083     struct CClientClipboard {
00084     public:
00085         CClientClipboard();
00086 
00087     public:
00088         CClipboard      m_clipboard;
00089         UInt32          m_sequenceNumber;
00090         bool            m_dirty;
00091     };
00092 
00093     CClientInfo         m_info;
00094     CClientClipboard    m_clipboard[kClipboardEnd];
00095     double              m_heartbeatAlarm;
00096     CEventQueueTimer*   m_heartbeatTimer;
00097     MessageParser       m_parser;
00098 };
00099 
00100 #endif

Generated on Fri Nov 6 00:18:44 2009 for synergy-plus by  doxygen 1.4.7