63 return m_refusalReason;
68 return m_message.empty() ? nullptr : m_message.c_str();
74 std::string m_message;
113 void connect(
size_t addressIndex = 0);
162 return m_resolvedAddressesCount;
171 void getShape(int32_t &x, int32_t &y, int32_t &width, int32_t &height) const override;
172 void getCursorPos(int32_t &x, int32_t &y) const override;
175 void enter(int32_t xAbs, int32_t yAbs, uint32_t seqNum,
KeyModifierMask mask,
bool forScreensaver) override;
176 bool leave() override;
185 void mouseMove(int32_t xAbs, int32_t yAbs) override;
187 void mouseWheel(int32_t xDelta, int32_t yDelta) override;
194 void saveRelativeRestorePosition();
197 void sendConnectionFailedEvent(const
char *msg);
198 void setupConnecting();
199 void setupConnection();
200 bool setupComputer(int16_t protocolMinor);
203 void cleanupConnecting();
204 void cleanupConnection();
205 void cleanupComputer();
207 void cleanupStream();
208 void handleConnected();
209 void handleConnectionFailed(const
Event &event);
210 void handleConnectTimeout();
211 void handleOutputError();
212 void handleDisconnected();
213 void handleDisconnectRequested(const
Event &event);
214 void handleShapeChanged();
215 void handleClipboardGrabbed(const
Event &event);
217 void handleSuspend();
219 void sendClipboardThread(
void *);
220 void bindNetworkInterface(
IDataSocket *socket) const;
227 deskflow::IStream *m_stream =
nullptr;
230 bool m_ready = false;
231 bool m_active = false;
232 bool m_suspended = false;
233 bool m_connectOnResume = false;
234 bool m_ownClipboard[kClipboardEnd];
235 bool m_sentClipboard[kClipboardEnd];
236 IClipboard::Time m_timeClipboard[kClipboardEnd];
237 std::
string m_dataClipboard[kClipboardEnd];
239 bool m_useSecureNetwork = false;
240 bool m_enableClipboard = true;
241 bool m_relativeMouseMoves = false;
242 bool m_hasRelativeRestorePosition = false;
243 int32_t m_relativeRestoreX = 0;
244 int32_t m_relativeRestoreY = 0;
245 size_t m_maximumClipboardSize = INT_MAX;
246 size_t m_resolvedAddressesCount = 0;
static const struct sockaddr FAR * name
Definition ArchNetworkWinsock.cpp:29
uint8_t ClipboardID
Clipboard ID.
Definition ClipboardTypes.h:16
uint32_t KeyID
Key ID.
Definition KeyTypes.h:22
uint16_t KeyButton
Key Code.
Definition KeyTypes.h:35
uint32_t KeyModifierMask
Modifier key mask.
Definition KeyTypes.h:45
uint8_t ButtonID
Mouse button ID.
Definition MouseTypes.h:16
std::vector< uint32_t > OptionsList
Definition OptionTypes.h:27
DisconnectRequest(Kind kind, const char *message)
Definition Client.cpp:42
deskflow::core::ConnectionRefusal refusalReason() const
Definition Client.h:61
Kind
Definition Client.h:48
@ Disconnect
Definition Client.h:49
const char * message() const
Definition Client.h:66
Kind kind() const
Definition Client.h:56
bool m_retry
Definition Client.h:84
QString m_what
Definition Client.h:85
FailInfo(const char *what)
Definition Client.h:80
void refuseConnection(deskflow::core::ConnectionRefusal reason, const char *msg)
Refuse connection.
Definition Client.cpp:154
void enter(int32_t xAbs, int32_t yAbs, uint32_t seqNum, KeyModifierMask mask, bool forScreensaver) override
Enter computer.
Definition Client.cpp:219
void resetOptions() override
Notify of options changes.
Definition Client.cpp:316
void grabClipboard(ClipboardID) override
Grab clipboard.
Definition Client.cpp:259
void keyUp(KeyID, KeyModifierMask, KeyButton) override
Notify of key release.
Definition Client.cpp:281
void mouseRelativeMove(int32_t xRel, int32_t yRel) override
Notify of mouse motion.
Definition Client.cpp:301
virtual void handshakeComplete()
Notify of handshake complete.
Definition Client.cpp:169
std::string getName() const override
Get client name.
Definition Client.cpp:371
void keyRepeat(KeyID, KeyModifierMask, int32_t count, KeyButton, const std::string &lang) override
Notify of key repeat.
Definition Client.cpp:276
size_t getMaximumClipboardReceiveSizeBytes() const
Definition Client.cpp:194
void screensaver(bool activate) override
Notify of screen saver change.
Definition Client.cpp:311
void setOptions(const OptionsList &options) override
Notify of options changes.
Definition Client.cpp:323
void connect(size_t addressIndex=0)
Connect to server.
Definition Client.cpp:91
void disconnect(const char *msg)
Disconnect.
Definition Client.cpp:143
bool getClipboard(ClipboardID id, IClipboard *) const override
Get clipboard.
Definition Client.cpp:204
Client(Client const &)=delete
void mouseWheel(int32_t xDelta, int32_t yDelta) override
Notify of mouse wheel motion.
Definition Client.cpp:306
NetworkAddress getServerAddress() const
Get address of server.
Definition Client.cpp:189
void mouseMove(int32_t xAbs, int32_t yAbs) override
Notify of mouse motion.
Definition Client.cpp:296
void keyDown(KeyID, KeyModifierMask, KeyButton, const std::string &) override
Notify of key press.
Definition Client.cpp:271
void mouseUp(ButtonID) override
Notify of mouse release.
Definition Client.cpp:291
void setClipboardDirty(ClipboardID, bool) override
Mark clipboard dirty.
Definition Client.cpp:266
void mouseDown(ButtonID) override
Notify of mouse press.
Definition Client.cpp:286
bool isConnecting() const
Test if connecting.
Definition Client.cpp:184
bool isConnected() const
Test if connected.
Definition Client.cpp:179
void setClipboard(ClipboardID, const IClipboard *) override
Set clipboard.
Definition Client.cpp:252
void getShape(int32_t &x, int32_t &y, int32_t &width, int32_t &height) const override
Get computer shape.
Definition Client.cpp:209
void * getEventTarget() const final
Get event target.
Definition Client.cpp:199
size_t getLastResolvedAddressesCount() const
Return last resolved adresses count.
Definition Client.h:160
Client & operator=(Client &&)=delete
bool leave() override
Leave computer.
Definition Client.cpp:231
Client(IEventQueue *events, const std::string &name, const NetworkAddress &address, ISocketFactory *socketFactory, deskflow::Computer *computer)
Definition Client.cpp:55
void getCursorPos(int32_t &x, int32_t &y) const override
Get cursor position.
Definition Client.cpp:214
Client & operator=(Client const &)=delete
void setServerAddress(const NetworkAddress &address)
Definition Client.cpp:86
Definition EventQueueTimer.h:12
Event.
Definition Event.h:43
Client interface.
Definition IClient.h:24
Clipboard interface.
Definition IClipboard.h:19
Data stream socket interface.
Definition IDataSocket.h:21
Event queue interface.
Definition IEventQueue.h:29
Socket factory.
Definition ISocketFactory.h:23
Network address type.
Definition NetworkAddress.h:17
Proxy for server implementing protocol version 1.6.
Definition ServerProxy.h:33
TCP data socket.
Definition TCPSocket.h:28
Thread handle.
Definition Thread.h:33
Platform independent computer.
Definition Computer.h:30
Bidirectional stream interface.
Definition IStream.h:22
ConnectionRefusal
Definition Enums.h:48
@ ProtocolError
Definition Enums.h:52
Definition DaemonApp.h:18
EventTypes
Definition EventTypes.h:13