diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..2a8231b56 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,10 @@ +{ + "cSpell.ignoreWords": [ + "icccm", + "logc", + "vrep", + "xevent", + "xscreensaver", + "xscreensaver's" + ] +} \ No newline at end of file diff --git a/src/cmd/synergyc/XWindowsClientTaskBarReceiver.h b/src/cmd/synergyc/XWindowsClientTaskBarReceiver.h index fe87a706e..d72c2f33a 100644 --- a/src/cmd/synergyc/XWindowsClientTaskBarReceiver.h +++ b/src/cmd/synergyc/XWindowsClientTaskBarReceiver.h @@ -28,8 +28,13 @@ class CXWindowsClientTaskBarReceiver : public ClientTaskBarReceiver { public: CXWindowsClientTaskBarReceiver( const BufferedLogOutputter*, IEventQueue* events); + CXWindowsClientTaskBarReceiver(const CXWindowsClientTaskBarReceiver &) =delete; + CXWindowsClientTaskBarReceiver(CXWindowsClientTaskBarReceiver &&) =delete; virtual ~CXWindowsClientTaskBarReceiver(); + CXWindowsClientTaskBarReceiver& operator=(const CXWindowsClientTaskBarReceiver &) =delete; + CXWindowsClientTaskBarReceiver& operator=(CXWindowsClientTaskBarReceiver &&) =delete; + // IArchTaskBarReceiver overrides virtual void showStatus(); virtual void runMenu(int x, int y); diff --git a/src/cmd/synergys/XWindowsServerTaskBarReceiver.h b/src/cmd/synergys/XWindowsServerTaskBarReceiver.h index 351fe80ac..dcfedf71c 100644 --- a/src/cmd/synergys/XWindowsServerTaskBarReceiver.h +++ b/src/cmd/synergys/XWindowsServerTaskBarReceiver.h @@ -28,7 +28,12 @@ class CXWindowsServerTaskBarReceiver : public ServerTaskBarReceiver { public: CXWindowsServerTaskBarReceiver( const BufferedLogOutputter*, IEventQueue* events); + CXWindowsServerTaskBarReceiver(const CXWindowsServerTaskBarReceiver&) =delete; + CXWindowsServerTaskBarReceiver(CXWindowsServerTaskBarReceiver&&) =delete; virtual ~CXWindowsServerTaskBarReceiver(); + + CXWindowsServerTaskBarReceiver& operator=(const CXWindowsServerTaskBarReceiver&) =delete; + CXWindowsServerTaskBarReceiver& operator=(const CXWindowsServerTaskBarReceiver&&) =delete; // IArchTaskBarReceiver overrides virtual void showStatus(); diff --git a/src/gui/src/ServerConfig.h b/src/gui/src/ServerConfig.h index 5b989e831..ce0f384a5 100644 --- a/src/gui/src/ServerConfig.h +++ b/src/gui/src/ServerConfig.h @@ -43,8 +43,39 @@ class ServerConfig : public BaseConfig, public GUI::Config::ConfigBase public: ServerConfig(int numColumns, int numRows, QString serverName, MainWindow* mainWindow); + ServerConfig(const ServerConfig &src) { + *this = src; + } + ServerConfig(ServerConfig &&) =delete; ~ServerConfig(); + ServerConfig& operator=(const ServerConfig &src) { + m_Screens = src.m_Screens; + m_NumColumns = src.m_NumColumns; + m_NumRows = src.m_NumRows; + m_HasHeartbeat = src.m_HasHeartbeat; + m_Heartbeat = src.m_Heartbeat; + m_RelativeMouseMoves = src.m_RelativeMouseMoves; + m_ScreenSaverSync = src.m_ScreenSaverSync; + m_Win32KeepForeground = src.m_Win32KeepForeground; + m_HasSwitchDelay = src.m_HasSwitchDelay; + m_SwitchDelay = src.m_SwitchDelay; + m_HasSwitchDoubleTap = src.m_HasSwitchDoubleTap; + m_SwitchDoubleTap = src.m_SwitchDoubleTap; + m_SwitchCornerSize = src.m_SwitchCornerSize; + m_SwitchCorners = src.m_SwitchCorners; + m_Hotkeys = src.m_Hotkeys; + m_ServerName = src.m_ServerName; + m_IgnoreAutoConfigClient = src.m_IgnoreAutoConfigClient; + m_EnableDragAndDrop = src.m_EnableDragAndDrop; + m_DisableLockToScreen = src.m_DisableLockToScreen; + m_ClipboardSharing = src.m_ClipboardSharing; + m_ClipboardSharingSize = src.m_ClipboardSharingSize; + m_pMainWindow = src.m_pMainWindow; + return *this; + }; + ServerConfig& operator=(ServerConfig &&) =delete; + public: const ScreenList& screens() const { return m_Screens; } int numColumns() const { return m_NumColumns; } diff --git a/src/lib/arch/Arch.h b/src/lib/arch/Arch.h index 99a26a57d..6d0560de5 100644 --- a/src/lib/arch/Arch.h +++ b/src/lib/arch/Arch.h @@ -101,7 +101,7 @@ public: //! Call init on other arch classes. /*! Some arch classes depend on others to exist first. When init is called - these clases will have ARCH available for use. + these classes will have ARCH available for use. */ virtual void init(); @@ -129,11 +129,16 @@ public: { ARCH->lockMutex(m_mutex); } + ArchMutexLock(ArchMutexLock const &) =delete; + ArchMutexLock(ArchMutexLock &&) =delete; ~ArchMutexLock() { ARCH->unlockMutex(m_mutex); } + ArchMutexLock& operator=(ArchMutexLock const &) =delete; + ArchMutexLock& operator=(ArchMutexLock &&) =delete; + private: ArchMutex m_mutex; }; diff --git a/src/lib/arch/IArchString.h b/src/lib/arch/IArchString.h index 62ae5c0c4..e75e5b31a 100644 --- a/src/lib/arch/IArchString.h +++ b/src/lib/arch/IArchString.h @@ -30,8 +30,14 @@ synergy. Each architecture must implement this interface. */ class IArchString : public IInterface { public: + IArchString() =default; + IArchString(const IArchString &) =delete; + IArchString(IArchString &&) =delete; virtual ~IArchString(); + IArchString& operator=(const IArchString &) =delete; + IArchString& operator=(IArchString &&) =delete; + //! Wide character encodings /*! The known wide character encodings diff --git a/src/lib/arch/unix/ArchMultithreadPosix.h b/src/lib/arch/unix/ArchMultithreadPosix.h index 983b7ff17..ff0838418 100644 --- a/src/lib/arch/unix/ArchMultithreadPosix.h +++ b/src/lib/arch/unix/ArchMultithreadPosix.h @@ -39,8 +39,13 @@ public: class ArchMultithreadPosix : public IArchMultithread { public: ArchMultithreadPosix(); + ArchMultithreadPosix(ArchMultithreadPosix const &) =delete; + ArchMultithreadPosix(ArchMultithreadPosix &&) =delete; virtual ~ArchMultithreadPosix(); + ArchMultithreadPosix& operator=(ArchMultithreadPosix const &) =delete; + ArchMultithreadPosix& operator=(ArchMultithreadPosix &&) =delete; + //! @name manipulators //@{ diff --git a/src/lib/arch/unix/ArchNetworkBSD.h b/src/lib/arch/unix/ArchNetworkBSD.h index a153a976c..e587a41d5 100644 --- a/src/lib/arch/unix/ArchNetworkBSD.h +++ b/src/lib/arch/unix/ArchNetworkBSD.h @@ -59,8 +59,13 @@ public: class ArchNetworkBSD : public IArchNetwork { public: ArchNetworkBSD(); + ArchNetworkBSD(ArchNetworkBSD const &) =delete; + ArchNetworkBSD(ArchNetworkBSD &&) =delete; virtual ~ArchNetworkBSD(); + ArchNetworkBSD& operator=(ArchNetworkBSD const &) =delete; + ArchNetworkBSD& operator=(ArchNetworkBSD &&) =delete; + virtual void init(); // IArchNetwork overrides diff --git a/src/lib/base/EventQueue.h b/src/lib/base/EventQueue.h index 4a390b8d4..cfb72ef86 100644 --- a/src/lib/base/EventQueue.h +++ b/src/lib/base/EventQueue.h @@ -39,7 +39,11 @@ delegates the platform dependent parts to a subclass. class EventQueue : public IEventQueue { public: EventQueue(); + EventQueue(EventQueue const &) =delete; + EventQueue(EventQueue &&) =delete; virtual ~EventQueue(); + EventQueue& operator=(EventQueue const &) =delete; + EventQueue& operator=(EventQueue &&) =delete; // IEventQueue overrides virtual void loop(); diff --git a/src/lib/base/Log.h b/src/lib/base/Log.h index b54e82f5e..90485fac3 100644 --- a/src/lib/base/Log.h +++ b/src/lib/base/Log.h @@ -42,8 +42,13 @@ class Log { public: Log(); Log(Log* src); + Log(Log const &) =delete; + Log(Log &&) =delete; ~Log(); + Log& operator=(Log const &) =delete; + Log& operator=(Log &&) =delete; + //! @name manipulators //@{ @@ -154,7 +159,7 @@ not be filtered and is never prefixed by the filename and line number. If \c NOLOGGING is defined during the build then this macro expands to nothing. If \c NDEBUG is defined during the build then it expands to a -call to Log::print. Otherwise it expands to a call to Log::printt, +call to Log::print. Otherwise it expands to a call to Log::print, which includes the filename and line number. */ diff --git a/src/lib/base/SimpleEventQueueBuffer.h b/src/lib/base/SimpleEventQueueBuffer.h index 863c3c177..9fe51b80d 100644 --- a/src/lib/base/SimpleEventQueueBuffer.h +++ b/src/lib/base/SimpleEventQueueBuffer.h @@ -28,9 +28,14 @@ An event queue buffer provides a queue of events for an IEventQueue. */ class SimpleEventQueueBuffer : public IEventQueueBuffer { public: - SimpleEventQueueBuffer(); + SimpleEventQueueBuffer(); + SimpleEventQueueBuffer(SimpleEventQueueBuffer const &) = delete; + SimpleEventQueueBuffer(SimpleEventQueueBuffer &&) = delete; ~SimpleEventQueueBuffer(); + SimpleEventQueueBuffer& operator=(SimpleEventQueueBuffer const &) = delete; + SimpleEventQueueBuffer& operator=(SimpleEventQueueBuffer &&) = delete; + // IEventQueueBuffer overrides void init() { } virtual void waitForEvent(double timeout); diff --git a/src/lib/base/log_outputters.h b/src/lib/base/log_outputters.h index fb94c02e9..a4f83831f 100644 --- a/src/lib/base/log_outputters.h +++ b/src/lib/base/log_outputters.h @@ -113,8 +113,13 @@ the scope. class SystemLogger { public: SystemLogger(const char* title, bool blockConsole); + SystemLogger(SystemLogger const &) =delete; + SystemLogger(SystemLogger &&) =delete; ~SystemLogger(); + SystemLogger& operator=(SystemLogger const &) =delete; + SystemLogger& operator=(SystemLogger &&) =delete; + private: ILogOutputter* m_syslog; ILogOutputter* m_stop; diff --git a/src/lib/client/Client.h b/src/lib/client/Client.h index 6f30ed408..9264d7eb2 100644 --- a/src/lib/client/Client.h +++ b/src/lib/client/Client.h @@ -60,9 +60,13 @@ public: Client(IEventQueue* events, const String& name, const NetworkAddress& address, ISocketFactory* socketFactory, synergy::Screen* screen, lib::synergy::ClientArgs const& args); - + Client(Client const &) =delete; + Client(Client &&) =delete; ~Client(); + Client& operator=(Client const &) =delete; + Client& operator=(Client &&) =delete; + //! @name manipulators //@{ @@ -119,7 +123,7 @@ public: */ NetworkAddress getServerAddress() const; - //! Return true if recieved file size is valid + //! Return true if received file size is valid bool isReceivedFileSizeValid(); //! Return expected file size diff --git a/src/lib/client/ServerProxy.h b/src/lib/client/ServerProxy.h index a9f217a12..463bab790 100644 --- a/src/lib/client/ServerProxy.h +++ b/src/lib/client/ServerProxy.h @@ -43,8 +43,13 @@ public: \p client. */ ServerProxy(Client* client, synergy::IStream* stream, IEventQueue* events); + ServerProxy(ServerProxy const &) =delete; + ServerProxy(ServerProxy &&) =delete; ~ServerProxy(); + ServerProxy& operator=(ServerProxy const &) =delete; + ServerProxy& operator=(ServerProxy &&) =delete; + //! @name manipulators //@{ diff --git a/src/lib/io/StreamFilter.h b/src/lib/io/StreamFilter.h index bf820ad7d..62630ba52 100644 --- a/src/lib/io/StreamFilter.h +++ b/src/lib/io/StreamFilter.h @@ -34,8 +34,13 @@ public: d'tor. */ StreamFilter(IEventQueue* events, synergy::IStream* stream, bool adoptStream = true); + StreamFilter(StreamFilter const &) =delete; + StreamFilter(StreamFilter &&) =delete; virtual ~StreamFilter(); + StreamFilter& operator=(StreamFilter const &) =delete; + StreamFilter& operator=(StreamFilter &&) =delete; + // IStream overrides // These all just forward to the underlying stream except getEventTarget. // Override as necessary. getEventTarget returns a pointer to this. diff --git a/src/lib/ipc/IpcClientProxy.h b/src/lib/ipc/IpcClientProxy.h index d9a22e139..6dae2c4ce 100644 --- a/src/lib/ipc/IpcClientProxy.h +++ b/src/lib/ipc/IpcClientProxy.h @@ -34,8 +34,13 @@ class IpcClientProxy { public: IpcClientProxy(synergy::IStream& stream, IEventQueue* events); + IpcClientProxy(IpcClientProxy const &) =delete; + IpcClientProxy(IpcClientProxy &&) =delete; virtual ~IpcClientProxy(); + IpcClientProxy& operator=(IpcClientProxy const &) =delete; + IpcClientProxy& operator=(IpcClientProxy &&) =delete; + private: void send(const IpcMessage& message); void handleData(const Event&, void*); diff --git a/src/lib/ipc/IpcLogOutputter.h b/src/lib/ipc/IpcLogOutputter.h index b6b285b81..15c00ad79 100644 --- a/src/lib/ipc/IpcLogOutputter.h +++ b/src/lib/ipc/IpcLogOutputter.h @@ -41,6 +41,7 @@ public: using the \c sendBuffer() function. */ IpcLogOutputter(IpcServer& ipcServer, EIpcClientType clientType, bool useThread); + IpcLogOutputter(IpcLogOutputter const &) =delete; virtual ~IpcLogOutputter(); // ILogOutputter overrides diff --git a/src/lib/ipc/IpcServer.h b/src/lib/ipc/IpcServer.h index b6477f8ad..1944bfbe4 100644 --- a/src/lib/ipc/IpcServer.h +++ b/src/lib/ipc/IpcServer.h @@ -43,8 +43,13 @@ class IpcServer { public: IpcServer(IEventQueue* events, SocketMultiplexer* socketMultiplexer); IpcServer(IEventQueue* events, SocketMultiplexer* socketMultiplexer, int port); + IpcServer(IpcServer const &) =delete; + IpcServer(IpcServer &&) =delete; virtual ~IpcServer(); + IpcServer& operator=(IpcServer const &) =delete; + IpcServer& operator=(IpcServer &&) =delete; + //! @name manipulators //@{ diff --git a/src/lib/ipc/IpcServerProxy.h b/src/lib/ipc/IpcServerProxy.h index dc9459a9b..f04cdd041 100644 --- a/src/lib/ipc/IpcServerProxy.h +++ b/src/lib/ipc/IpcServerProxy.h @@ -31,6 +31,7 @@ class IpcServerProxy { public: IpcServerProxy(synergy::IStream& stream, IEventQueue* events); + IpcServerProxy(IpcServerProxy const &) =delete; virtual ~IpcServerProxy(); private: diff --git a/src/lib/net/SecureSocket.h b/src/lib/net/SecureSocket.h index dbad55d70..d2d275fab 100644 --- a/src/lib/net/SecureSocket.h +++ b/src/lib/net/SecureSocket.h @@ -36,8 +36,13 @@ public: SecureSocket(IEventQueue* events, SocketMultiplexer* socketMultiplexer, ArchSocket socket); + SecureSocket(SecureSocket const &) =delete; + SecureSocket(SecureSocket &&) =delete; ~SecureSocket(); + SecureSocket& operator=(SecureSocket const &) =delete; + SecureSocket& operator=(SecureSocket &&) =delete; + // ISocket overrides void close(); diff --git a/src/lib/net/SocketMultiplexer.h b/src/lib/net/SocketMultiplexer.h index f745ed00c..9863f4888 100644 --- a/src/lib/net/SocketMultiplexer.h +++ b/src/lib/net/SocketMultiplexer.h @@ -36,8 +36,13 @@ A socket multiplexer services multiple sockets simultaneously. class SocketMultiplexer { public: SocketMultiplexer(); + SocketMultiplexer(SocketMultiplexer const &) =delete; + SocketMultiplexer(SocketMultiplexer &&) =delete; ~SocketMultiplexer(); + SocketMultiplexer& operator=(SocketMultiplexer const &) =delete; + SocketMultiplexer& operator=(SocketMultiplexer &&) =delete; + //! @name manipulators //@{ diff --git a/src/lib/net/TCPListenSocket.h b/src/lib/net/TCPListenSocket.h index 0d38eddd9..b576055c8 100644 --- a/src/lib/net/TCPListenSocket.h +++ b/src/lib/net/TCPListenSocket.h @@ -33,8 +33,13 @@ A listen socket using TCP. class TCPListenSocket : public IListenSocket { public: TCPListenSocket(IEventQueue* events, SocketMultiplexer* socketMultiplexer, IArchNetwork::EAddressFamily family); + TCPListenSocket(TCPListenSocket const &) =delete; + TCPListenSocket(TCPListenSocket &&) =delete; virtual ~TCPListenSocket(); + TCPListenSocket& operator=(TCPListenSocket const &) =delete; + TCPListenSocket& operator=(TCPListenSocket &&) =delete; + // ISocket overrides virtual void bind(const NetworkAddress&); virtual void close(); diff --git a/src/lib/net/TCPSocket.h b/src/lib/net/TCPSocket.h index ba02c8a94..93049f7c9 100644 --- a/src/lib/net/TCPSocket.h +++ b/src/lib/net/TCPSocket.h @@ -38,8 +38,13 @@ class TCPSocket : public IDataSocket { public: TCPSocket(IEventQueue* events, SocketMultiplexer* socketMultiplexer, IArchNetwork::EAddressFamily family = IArchNetwork::kINET); TCPSocket(IEventQueue* events, SocketMultiplexer* socketMultiplexer, ArchSocket socket); + TCPSocket(TCPSocket const &) =delete; + TCPSocket(TCPSocket &&) =delete; virtual ~TCPSocket(); + TCPSocket& operator=(TCPSocket const &) =delete; + TCPSocket& operator=(TCPSocket &&) =delete; + // ISocket overrides virtual void bind(const NetworkAddress&); virtual void close(); diff --git a/src/lib/net/TSocketMultiplexerMethodJob.h b/src/lib/net/TSocketMultiplexerMethodJob.h index 256943d96..e458958d4 100644 --- a/src/lib/net/TSocketMultiplexerMethodJob.h +++ b/src/lib/net/TSocketMultiplexerMethodJob.h @@ -34,8 +34,13 @@ public: //! run() invokes \c object->method(arg) TSocketMultiplexerMethodJob(T* object, Method method, ArchSocket socket, bool readable, bool writeable); + TSocketMultiplexerMethodJob(TSocketMultiplexerMethodJob const &) =delete; + TSocketMultiplexerMethodJob(TSocketMultiplexerMethodJob &&) =delete; virtual ~TSocketMultiplexerMethodJob(); + TSocketMultiplexerMethodJob& operator=(TSocketMultiplexerMethodJob const &) =delete; + TSocketMultiplexerMethodJob& operator=(TSocketMultiplexerMethodJob &&) =delete; + // IJob overrides virtual ISocketMultiplexerJob* run(bool readable, bool writable, bool error); diff --git a/src/lib/platform/XWindowsClipboard.h b/src/lib/platform/XWindowsClipboard.h index 9e6fbd470..66cf21fe9 100644 --- a/src/lib/platform/XWindowsClipboard.h +++ b/src/lib/platform/XWindowsClipboard.h @@ -40,8 +40,13 @@ public: clipboard identified by \c id. */ XWindowsClipboard(Display*, Window window, ClipboardID id); + XWindowsClipboard(XWindowsClipboard const &) =delete; + XWindowsClipboard(XWindowsClipboard &&) =delete; virtual ~XWindowsClipboard(); + XWindowsClipboard& operator=(XWindowsClipboard const &) =delete; + XWindowsClipboard& operator=(XWindowsClipboard &&) =delete; + //! Notify clipboard was lost /*! Tells clipboard it lost ownership at the given time. diff --git a/src/lib/platform/XWindowsEventQueueBuffer.h b/src/lib/platform/XWindowsEventQueueBuffer.h index 784ba8133..9cedcc48e 100644 --- a/src/lib/platform/XWindowsEventQueueBuffer.h +++ b/src/lib/platform/XWindowsEventQueueBuffer.h @@ -34,8 +34,13 @@ class IEventQueue; class XWindowsEventQueueBuffer : public IEventQueueBuffer { public: XWindowsEventQueueBuffer(Display*, Window, IEventQueue* events); + XWindowsEventQueueBuffer(XWindowsEventQueueBuffer const &) =delete; + XWindowsEventQueueBuffer(XWindowsEventQueueBuffer &&) =delete; virtual ~XWindowsEventQueueBuffer(); + XWindowsEventQueueBuffer& operator=(XWindowsEventQueueBuffer const &) =delete; + XWindowsEventQueueBuffer& operator=(XWindowsEventQueueBuffer &&) =delete; + // IEventQueueBuffer overrides virtual void init() { } virtual void waitForEvent(double timeout); diff --git a/src/lib/platform/XWindowsScreenSaver.h b/src/lib/platform/XWindowsScreenSaver.h index 1b3b09288..0255363d1 100644 --- a/src/lib/platform/XWindowsScreenSaver.h +++ b/src/lib/platform/XWindowsScreenSaver.h @@ -35,8 +35,13 @@ class EventQueueTimer; class XWindowsScreenSaver : public IScreenSaver { public: XWindowsScreenSaver(Display*, Window, void* eventTarget, IEventQueue* events); + XWindowsScreenSaver(XWindowsScreenSaver const &) =delete; + XWindowsScreenSaver(XWindowsScreenSaver &&) =delete; virtual ~XWindowsScreenSaver(); + XWindowsScreenSaver& operator=(XWindowsScreenSaver const &) =delete; + XWindowsScreenSaver& operator=(XWindowsScreenSaver &&) =delete; + //! @name manipulators //@{ @@ -115,7 +120,7 @@ private: // the X display Display* m_display; - // window to receive xscreensaver repsonses + // window to receive xscreensaver responses Window m_xscreensaverSink; // the target for the events we generate diff --git a/src/lib/platform/XWindowsUtil.h b/src/lib/platform/XWindowsUtil.h index f953e32d7..52e7e74ab 100644 --- a/src/lib/platform/XWindowsUtil.h +++ b/src/lib/platform/XWindowsUtil.h @@ -138,6 +138,11 @@ public: Ignore X11 errors. */ ErrorLock(Display*); + ErrorLock(ErrorLock const &) =delete; + ErrorLock(ErrorLock &&) =delete; + + ErrorLock& operator=(ErrorLock const &) =delete; + ErrorLock& operator=(ErrorLock &&) =delete; /*! Set \c *errorFlag if any error occurs. diff --git a/src/lib/server/ClientListener.h b/src/lib/server/ClientListener.h index 5c3af3c39..81ffaddd3 100644 --- a/src/lib/server/ClientListener.h +++ b/src/lib/server/ClientListener.h @@ -40,8 +40,13 @@ public: ISocketFactory*, IEventQueue* events, bool enableCrypto); + ClientListener(ClientListener const &) =delete; + ClientListener(ClientListener &&) =delete; ~ClientListener(); + ClientListener& operator=(ClientListener const &) =delete; + ClientListener& operator=(ClientListener &&) =delete; + //! @name manipulators //@{ diff --git a/src/lib/server/ClientProxy.h b/src/lib/server/ClientProxy.h index 3d05a072b..f978783e3 100644 --- a/src/lib/server/ClientProxy.h +++ b/src/lib/server/ClientProxy.h @@ -32,8 +32,13 @@ public: \c name is the name of the client. */ ClientProxy(const String& name, synergy::IStream* adoptedStream); + ClientProxy(ClientProxy const &) =delete; + ClientProxy(ClientProxy &&) =delete; ~ClientProxy(); + ClientProxy& operator=(ClientProxy const &) =delete; + ClientProxy& operator=(ClientProxy &&) =delete; + //! @name manipulators //@{ diff --git a/src/lib/server/ClientProxy1_0.h b/src/lib/server/ClientProxy1_0.h index e40f8d862..edd3ec6f4 100644 --- a/src/lib/server/ClientProxy1_0.h +++ b/src/lib/server/ClientProxy1_0.h @@ -30,8 +30,13 @@ class IEventQueue; class ClientProxy1_0 : public ClientProxy { public: ClientProxy1_0(const String& name, synergy::IStream* adoptedStream, IEventQueue* events); + ClientProxy1_0(ClientProxy1_0 const &) =delete; + ClientProxy1_0(ClientProxy1_0 &&) =delete; ~ClientProxy1_0(); + ClientProxy1_0& operator=(ClientProxy1_0 const &) =delete; + ClientProxy1_0& operator=(ClientProxy1_0 &&) =delete; + // IScreen virtual bool getClipboard(ClipboardID id, IClipboard*) const; virtual void getShape(SInt32& x, SInt32& y, diff --git a/src/lib/server/ClientProxy1_3.h b/src/lib/server/ClientProxy1_3.h index 37299ca6b..b6e6d1da5 100644 --- a/src/lib/server/ClientProxy1_3.h +++ b/src/lib/server/ClientProxy1_3.h @@ -24,8 +24,13 @@ class ClientProxy1_3 : public ClientProxy1_2 { public: ClientProxy1_3(const String& name, synergy::IStream* adoptedStream, IEventQueue* events); + ClientProxy1_3(ClientProxy1_3 const &) =delete; + ClientProxy1_3(ClientProxy1_3 &&) =delete; ~ClientProxy1_3(); + ClientProxy1_3& operator=(ClientProxy1_3 const &) =delete; + ClientProxy1_3& operator=(ClientProxy1_3 &&) =delete; + // IClient overrides virtual void mouseWheel(SInt32 xDelta, SInt32 yDelta); diff --git a/src/lib/server/ClientProxy1_5.h b/src/lib/server/ClientProxy1_5.h index 1d5410058..9a63f059a 100644 --- a/src/lib/server/ClientProxy1_5.h +++ b/src/lib/server/ClientProxy1_5.h @@ -28,8 +28,13 @@ class IEventQueue; class ClientProxy1_5 : public ClientProxy1_4 { public: ClientProxy1_5(const String& name, synergy::IStream* adoptedStream, Server* server, IEventQueue* events); + ClientProxy1_5(ClientProxy1_5 const &) =delete; + ClientProxy1_5(ClientProxy1_5 &&) =delete; ~ClientProxy1_5(); + ClientProxy1_5& operator=(ClientProxy1_5 const &) =delete; + ClientProxy1_5& operator=(ClientProxy1_5 &&) =delete; + virtual void sendDragInfo(UInt32 fileCount, const char* info, size_t size); virtual void fileChunkSending(UInt8 mark, char* data, size_t dataSize); virtual bool parseMessage(const UInt8* code); diff --git a/src/lib/server/ClientProxyUnknown.h b/src/lib/server/ClientProxyUnknown.h index 88ef88ba9..21982d85f 100644 --- a/src/lib/server/ClientProxyUnknown.h +++ b/src/lib/server/ClientProxyUnknown.h @@ -30,8 +30,13 @@ class IEventQueue; class ClientProxyUnknown { public: ClientProxyUnknown(synergy::IStream* stream, double timeout, Server* server, IEventQueue* events); + ClientProxyUnknown(ClientProxyUnknown const &) =delete; + ClientProxyUnknown(ClientProxyUnknown &&) =delete; ~ClientProxyUnknown(); + ClientProxyUnknown& operator=(ClientProxyUnknown const &) =delete; + ClientProxyUnknown& operator=(ClientProxyUnknown &&) =delete; + //! @name manipulators //@{ diff --git a/src/lib/server/Config.h b/src/lib/server/Config.h index 75b372039..383f0465f 100644 --- a/src/lib/server/Config.h +++ b/src/lib/server/Config.h @@ -151,6 +151,8 @@ public: public: explicit const_iterator() : m_i() { } explicit const_iterator(const internal_const_iterator& i) : m_i(i) { } + const_iterator(const const_iterator &src) =default; + ~const_iterator() =default; const_iterator& operator=(const const_iterator& i) { m_i = i.m_i; diff --git a/src/lib/server/InputFilter.h b/src/lib/server/InputFilter.h index 0102315a8..f00932281 100644 --- a/src/lib/server/InputFilter.h +++ b/src/lib/server/InputFilter.h @@ -228,8 +228,13 @@ public: class KeystrokeAction : public Action { public: KeystrokeAction(IEventQueue* events, IPlatformScreen::KeyInfo* adoptedInfo, bool press); + KeystrokeAction(KeystrokeAction const &) =delete; + KeystrokeAction(KeystrokeAction &&) =delete; ~KeystrokeAction(); + KeystrokeAction& operator=(KeystrokeAction const &) =delete; + KeystrokeAction& operator=(KeystrokeAction &&) =delete; + void adoptInfo(IPlatformScreen::KeyInfo*); const IPlatformScreen::KeyInfo* getInfo() const; @@ -255,8 +260,13 @@ public: MouseButtonAction(IEventQueue* events, IPlatformScreen::ButtonInfo* adoptedInfo, bool press); + MouseButtonAction(MouseButtonAction const &) =delete; + MouseButtonAction(MouseButtonAction &&) =delete; ~MouseButtonAction(); + MouseButtonAction& operator=(MouseButtonAction const &) =delete; + MouseButtonAction& operator=(MouseButtonAction &&) =delete; + const IPlatformScreen::ButtonInfo* getInfo() const; bool isOnPress() const; diff --git a/src/lib/server/Server.h b/src/lib/server/Server.h index 1a524cba7..d7072aba2 100644 --- a/src/lib/server/Server.h +++ b/src/lib/server/Server.h @@ -108,8 +108,13 @@ public: */ Server(Config& config, PrimaryClient* primaryClient, synergy::Screen* screen, IEventQueue* events, lib::synergy::ServerArgs const& args); + Server(Server const &) =delete; + Server(Server &&) =delete; ~Server(); + Server& operator=(Server const &) =delete; + Server& operator=(Server &&) =delete; + #ifdef TEST_ENV Server() : m_mock(true), m_config(NULL) { } void setActive(BaseClientProxy* active) { m_active = active; } diff --git a/src/lib/synergy/App.h b/src/lib/synergy/App.h index 5218a5fe9..8fd37b00f 100644 --- a/src/lib/synergy/App.h +++ b/src/lib/synergy/App.h @@ -44,8 +44,13 @@ typedef IArchTaskBarReceiver* (*CreateTaskBarReceiverFunc)(const BufferedLogOutp class App : public IApp { public: App(IEventQueue* events, CreateTaskBarReceiverFunc createTaskBarReceiver, lib::synergy::ArgsBase* args); + App(App const &) =delete; + App(App &&) =delete; virtual ~App(); + App& operator=(App const &) =delete; + App& operator=(App &&) =delete; + // Returns args that are common between server and client. lib::synergy::ArgsBase& argsBase() const { return *m_args; } diff --git a/src/lib/synergy/Chunk.h b/src/lib/synergy/Chunk.h index 8a6f21f25..ea5f7bd5c 100644 --- a/src/lib/synergy/Chunk.h +++ b/src/lib/synergy/Chunk.h @@ -22,8 +22,13 @@ class Chunk { public: Chunk(size_t size); + Chunk(Chunk const &) =delete; + Chunk(Chunk &&) =delete; ~Chunk(); + Chunk& operator=(Chunk const &) =delete; + Chunk& operator=(Chunk &&) =delete; + public: size_t m_dataSize; char* m_chunk; diff --git a/src/lib/synergy/Screen.h b/src/lib/synergy/Screen.h index 9c45a4822..8bbe7f075 100644 --- a/src/lib/synergy/Screen.h +++ b/src/lib/synergy/Screen.h @@ -40,8 +40,13 @@ primary or secondary screen. class Screen : public IScreen { public: Screen(IPlatformScreen* platformScreen, IEventQueue* events); + Screen(Screen const &) =delete; + Screen(Screen &&) =delete; virtual ~Screen(); + Screen& operator&(Screen const &) =delete; + Screen& operator&(Screen &&) =delete; + #ifdef TEST_ENV Screen() : m_mock(true) { } #endif diff --git a/src/lib/synergy/ServerApp.cpp b/src/lib/synergy/ServerApp.cpp index 9abf757ae..4fd92e461 100644 --- a/src/lib/synergy/ServerApp.cpp +++ b/src/lib/synergy/ServerApp.cpp @@ -789,7 +789,7 @@ ServerApp::runInner(int argc, char** argv, ILogOutputter* outputter, StartupFunc { // general initialization m_synergyAddress = new NetworkAddress; - args().m_config = new Config(m_events); + args().m_config = std::make_shared(m_events); args().m_pname = ARCH->getBasename(argv[0]); // install caller's output filter @@ -806,7 +806,6 @@ ServerApp::runInner(int argc, char** argv, ILogOutputter* outputter, StartupFunc delete m_taskBarReceiver; } - delete args().m_config; delete m_synergyAddress; return result; } diff --git a/src/lib/synergy/ServerArgs.cpp b/src/lib/synergy/ServerArgs.cpp index af28dfd39..5d3ec5051 100644 --- a/src/lib/synergy/ServerArgs.cpp +++ b/src/lib/synergy/ServerArgs.cpp @@ -21,7 +21,6 @@ namespace lib { namespace synergy { ServerArgs::~ServerArgs() { - destroy(m_config); } diff --git a/src/lib/synergy/ServerArgs.h b/src/lib/synergy/ServerArgs.h index eadcfebce..eac35c0bf 100644 --- a/src/lib/synergy/ServerArgs.h +++ b/src/lib/synergy/ServerArgs.h @@ -18,6 +18,7 @@ #ifndef SYNERGY_CORE_SERVERARGS_H #define SYNERGY_CORE_SERVERARGS_H +#include #include "ArgsBase.h" #include "shared/SerialKey.h" #include "server/Config.h" @@ -28,13 +29,22 @@ namespace lib { /// Public Functions public: ServerArgs(); + ServerArgs(ServerArgs const &src) { + m_configFile = src.m_configFile; + m_serial = src.m_serial; + m_config = src.m_config; + } + ServerArgs(ServerArgs &&) =delete; ~ServerArgs() override; + ServerArgs& operator=(ServerArgs const &) =delete; + ServerArgs& operator=(ServerArgs &&) =delete; + /// Public variables public: String m_configFile = ""; /// @brief Contains the path to the config file SerialKey m_serial; /// @brief Contains the serial number and license info - Config* m_config = nullptr; /// @brief Contains the Parsed Configuration settings + std::shared_ptr m_config; /// @brief Contains the Parsed Configuration settings /// Private Functions private: