vncsconnectionst.h
来自「linux可以运行程序源码」· C头文件 代码 · 共 166 行
H
166 行
/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved. * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this software; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, * USA. *///// VNCSConnectionST is our derived class of SConnection for VNCServerST - there// is one for each connected client. We think of VNCSConnectionST as part of// the VNCServerST implementation, so its methods are allowed full access to// members of VNCServerST.//#ifndef __RFB_VNCSCONNECTIONST_H__#define __RFB_VNCSCONNECTIONST_H__#include <set>#include <rfb/SConnection.h>#include <rfb/SMsgWriter.h>#include <rfb/TransImageGetter.h>#include <rfb/VNCServerST.h>namespace rfb { class VNCSConnectionST : public SConnection, public WriteSetCursorCallback { public: VNCSConnectionST(VNCServerST* server_, network::Socket* s, bool reverse); virtual ~VNCSConnectionST(); // Methods called from VNCServerST. None of these methods ever knowingly // throw an exception. // Unless otherwise stated, the SConnectionST may not be valid after any of // these methods are called, since they catch exceptions and may have // called close() which deletes the object. // init() must be called to initialise the protocol. If it fails it // returns false, and close() will have been called. bool init(); // close() shuts down the socket to the client and deletes the // SConnectionST object. void close(const char* reason); // processMessages() processes incoming messages from the client, invoking // various callbacks as a result. It continues to process messages until // reading might block. shutdown() will be called on the connection's // Socket if an error occurs, via the close() call. void processMessages(); void writeFramebufferUpdateOrClose(); void pixelBufferChange(); void setColourMapEntriesOrClose(int firstColour, int nColours); void bell(); void serverCutText(const char *str, int len); void setCursorOrClose(); // checkIdleTimeout() returns the number of milliseconds left until the // idle timeout expires. If it has expired, the connection is closed and // zero is returned. Zero is also returned if there is no idle timeout. int checkIdleTimeout(); // The following methods never throw exceptions nor do they ever delete the // SConnectionST object. // renderedCursorChange() is called whenever the server-side rendered // cursor changes shape or position. It ensures that the next update will // clean up the old rendered cursor and if necessary draw the new rendered // cursor. void renderedCursorChange(); // needRenderedCursor() returns true if this client needs the server-side // rendered cursor. This may be because it does not support local cursor // or because the current cursor position has not been set by this client. bool needRenderedCursor(); network::Socket* getSock() { return sock; } bool readyForUpdate() { return !requested.is_empty(); } void add_changed(const Region& region) { updates.add_changed(region); } void add_copied(const Region& dest, const Point& delta) { updates.add_copied(dest, delta); } const char* getPeerEndpoint() const {return peerEndpoint.buf;} // approveConnectionOrClose() is called some time after // VNCServerST::queryConnection() has returned with PENDING to accept or // reject the connection. The accept argument should be true for // acceptance, or false for rejection, in which case a string reason may // also be given. void approveConnectionOrClose(bool accept, const char* reason); private: // SConnection callbacks // These methods are invoked as callbacks from processMsg(). Note that // none of these methods should call any of the above methods which may // delete the SConnectionST object. virtual void authSuccess(); virtual void queryConnection(const char* userName); virtual void clientInit(bool shared); virtual void setPixelFormat(const PixelFormat& pf); virtual void pointerEvent(const Point& pos, int buttonMask); virtual void keyEvent(rdr::U32 key, bool down); virtual void clientCutText(const char* str, int len); virtual void framebufferUpdateRequest(const Rect& r, bool incremental); virtual void setInitialColourMap(); virtual void supportsLocalCursor(); // setAccessRights() allows a security package to limit the access rights // of a VNCSConnectioST to the server. These access rights are applied // such that the actual rights granted are the minimum of the server's // default access settings and the connection's access settings. virtual void setAccessRights(AccessRights ar) {accessRights=ar;} // WriteSetCursorCallback virtual void writeSetCursorCallback(); // Internal methods // writeFramebufferUpdate() attempts to write a framebuffer update to the // client. void writeFramebufferUpdate(); void writeRenderedCursorRect(); void setColourMapEntries(int firstColour, int nColours); void setCursor(); void setSocketTimeouts(); network::Socket* sock; CharArray peerEndpoint; VNCServerST* server; SimpleUpdateTracker updates; TransImageGetter image_getter; Region requested; bool drawRenderedCursor, removeRenderedCursor; Rect renderedCursorRect; std::set<rdr::U32> pressedKeys; time_t lastEventTime; time_t pointerEventTime; Point pointerEventPos; AccessRights accessRights; CharArray closeReason; };}#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?